Macro Excel de recherche + concaténation

Macro Excel de recherche + concaténation - VB/VBA/VBS - Programmation

Marsh Posté le 04-07-2008 à 09:26:15    

Bonjour,
 
j'ai un fichier excel qui comporte environ 3000 references ...
 
il se décompose grosso modo de la manière suivante: colonne A : n°ref, colonne B: libellé ....
 
Or, en colonne AK à AQ, dans les lignes qui suivent mes enregistrements de reférences, j'ai des infos à rattacher dans les lignes , mettons à la colonne AZ, en concaténant les colonnes AL à AQ dans la colonne AZ mais cette fois ci à la ligne correspondante à la référence ... AK étant le même numéro de référence que celui de la colonne A. Le probleme est que pour un même numéro de référence, je peux avoir de 0 à environ 10 remarques coller dans la même case de la colonne AZ ...
 
 
Concrètement de A1 à AJ2566 j'ai mes references, et de AK2567 à AQ3189 j'ai mes infos que j'aimerais rattacher ...
 
 
 
L'idée que j'avais est de faire une recherche de la valeur de la case A1 dans la colonne AK, puis si ca trouve quelquechose, ca me concatène la ligne correspondante dans la case AZ1, ca boucle tant que ca trouve une valeur égale à celle de A1 en prenant soin de me pas m'écraser ce qui a déjà été mi dedans dans la précédente boucle, puis ca passe à A2 et ainsi de suite ....
 
 
j'ai bien fait une pseudo macro mais elle ne marche pas et je suis complètement perdu apres tous les essais que j'ai fait:
 
Sub Macro1()
 
For i = 1 To 2600
Range("A" & i).Select
While Cells.Find(What:=ActiveCell.Value, After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate Is Not Null = True
        Cells("AZ" & i).FormulaR1C1 = "=CONCATENATE("" Type: "",RC[+1],"" Date: "",RC[+2],"" Heure: "",RC[+3],"" Sujet: "",RC[+4]),"" Remarques: "",RC[+5]"
        Wend
Next
             
End Sub
 
 
Merci pour l'aide la :cry:


Message édité par GTTeamKiller le 04-07-2008 à 09:26:36
Reply

Marsh Posté le 04-07-2008 à 09:26:15   

Reply

Marsh Posté le 04-07-2008 à 11:02:01    

Remarque ca, ce n'est pas ton besoin final mais si tu en comprends le fonctionnement, ca devrait t'aider...
 

Code :
  1. Sub Macro1()
  2. For i = 1 To Range("A1" ).End(xlDown).Row
  3.     With Worksheets(1).Range("AK:AK" )
  4.     Set c = .Find(Cells(i, 1).Value, LookIn:=xlValues)
  5.     If Not c Is Nothing Then
  6.         firstAddress = c.Address
  7.         Do
  8.             'c.Value = 5
  9.             MsgBox i & " : " & c.Row
  10.             Set c = .FindNext(c)
  11.         Loop While Not c Is Nothing And c.Address <> firstAddress
  12.     End If
  13.     End With
  14. Next
  15.            
  16. End Sub


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 04-07-2008 à 11:18:31    

je regarde ca avec attention, merci, cela dit vu mon niveau en VBA ca risque d'être un peu long pour que j'arrive à l'exploiter correctement ...

Reply

Marsh Posté le 04-07-2008 à 11:35:39    

GTTeamKiller a écrit :

je regarde ca avec attention, merci, cela dit vu mon niveau en VBA ca risque d'être un peu long pour que j'arrive à l'exploiter correctement ...


J'ai pris soin de laisser un msgbox à l'endroit le plus important de la macro. Tu n'as plus qu'à l'enlever et à mettre ton code à la place...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 07-07-2008 à 09:00:05    

bon merci pour l'aide et désolé pour le retard de réponse, neuf ayant décidé de me faire sauter ma ligne adsl suite à un "probleme technique" de 3 semaines deja ...
 
En fait j'ai vu que je pouvais bien simplifier la macro en passant par plusieurs étapes avant de lancer le traitement de tri et du coup c est déjà moins compliqué ...
 
Merci pour l'exemple en tout cas, il m'a bien inspiré :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed