Concatenation

Résolu/Fermé
Kikavely - 28 sept. 2012 à 15:16
 KikaVely - 1 oct. 2012 à 10:24
Bonjour,

j'ai un probleme mon code ne fais pas tout a fais ce que je veux.

voila mon code

Sub tes()

Dim i As Long


Dim j As Long



Limite = Range("A65536").End(xlDown).Row

Mide = Worksheets("Feuil2").Cells(Rows.Count, 1).End(xlDown).Row



For i = 1 To Limite

If Left(Cells(i, 1).Value, 2) = "aa" Then

For j = 1 To Mide

Sheets("Feuil1").Cells(i, 1).Value = Sheets("Feuil1").Cells(i, 1).Value & Sheets("Feuil2").Cells(j, 1).Value

Next j

End If


Next i


End Sub


quelqu'un pourrais t'il m'aider a l'arranger car je veux que il prenne un seul et unique numero de matricule qu'il concateneras avec le premier nom trouver remplissant la condition du code c'est a dire:

If Left(Cells(i, 1).Value, 2) = "aa" Then

et ainsi de suite.

je joins a mon message un fichier avec le bouton qui permet d'éxecuter la macro.

http://cjoint.com/?BICpoQuJmnU

merci d'avance.


4 réponses

Bonjour,

Pas sûr d'avoir tout compris

ci dessous le code qui permet d'associer à chaque cellule "aa" un seul numéro de la feuil2
pour le premier "aa" on prend le N° 1, pour le second le N°2 ...

Dim i As Long
Dim j As Long
Dim Limite As Long
'Limite = Range("A65536").End(xlDown).Row
Limite = Range("A" & Rows.Count).End(xlUp).Row

j = 1
For i = 1 To Limite
    If Left(Cells(i, 1).Value, 2) = "aa" Then
        Sheets("Feuil1").Cells(i, 1).Value = Sheets("Feuil1").Cells(i, 1).Value & Sheets("Feuil2").Cells(j, 1).Value
        j = j + 1
    End If
Next i

Bonne suite
0
Bonsoir
j'ai lu votre fichier et votre demande
et je ne comprends toujours pas le résultat attendu !!!!!
une ligne avec 3 a qui devient aarrS999999
une ligne avec 4 a qui devient rien !!!!!!
et un tout petit peu plus logique une avec aaop qui devient aaopS999997

si on suit votre résonnement avec
If Left(Cells(i, 1).Value, 2) = "aa" Then
re formulez votre demande et votre attente

Cordialement
0
Bonjour
donc si j'ai bien compris je te propose de remplacer ton code par celui ci
Sub tes()
Dim maligne_Nom As Integer
Dim maligne_Id As Integer
Dim i As Long
Dim j As Long
    
    Limite = Range("A65536").End(xlUp).Row
    Mide = Worksheets("Feuil2").Cells(Rows.Count, 1).End(xlUp).Row
    
    ' variable pour la première boucle
    maligne_Nom = 1
    ' variable pour la deuxième boucle
    maligne_Id = 1
For i = maligne_Nom To Limite
    If Left(Cells(i, 1).Value, 2) = "aa" Then
         ' on incrémente de début de la première boucle
         maligne_Nom = i + 1
         
            For j = maligne_Id To Mide
               Sheets("Feuil1").Cells(i, 1).Value = Sheets("Feuil1").Cells(i, 1).Value & Sheets("Feuil2").Cells(j, 1).Value
                ' on incrémente de début de la deuxième boucle
                maligne_Id = j + 1
                ' on sort de la deuxième boucle
                Exit For
            Next j
            
     End If
Next i
End Sub

Quand on écrit du code il faut bien faire attention à l'indentation très important pour s'y retrouver.

Je pense que ce code est correct et t'apportera la solution

Cordialement
0
Merci G_33 c'est parfaitement ce que je voulais fair mais n'y arivait pas il marche merci au autre pour leur tentative.
CDt
0
Avez vous essayé le code que je vous ai proposé, parce que je ne vois pas de différences de résultat entre mon code et celui de G_33 !
0
Bonjour
L'important est que ayez compris là où vous aviez fait des erreurs et comprendre le code que je vous ai fourni.
En restant à votre disposition
Cordialement
0
Ah ouai le tiens aussi marche Paff, c'est cool mais je suis entrain de le comprendre.
0