Concatenation

Résolu
Kikavely -  
 KikaVely -
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

  1. Paf
     
    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
    1. G_33
       
      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
  2. G_33
     
    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
  3. KikaVely
     
    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
    1. Paf
       
      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
    2. G_33
       
      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
  4. KikaVely
     
    Ah ouai le tiens aussi marche Paff, c'est cool mais je suis entrain de le comprendre.
    0