Concaténer de lignes

Je souhaiterai concaténer 2 lignes d'une feuille dans une ligne d'une autre feuille .

exemple :

Feuille 1 :

1 ère ligne : nom1 prénom1 adresse1

2ème ligne : nom2 prénom2 adresse2

3ème ligne : nom3 prénom3 adresse3

4ème ligne : nom4 prénom4 adresse4

etc....

Feuille 2 :

1 ère ligne : nom1 prénom1 adresse1 nom2 prénom2 adresse2

2ème ligne : nom3 prénom3 adresse3 nom4 prénom4 adresse4

Voilà je suis débutant en VBA et je n'ai pas trouvé de solution sur le Net.

Merci d'avance si vous avez une solution

Bonsoir,

un essai pas testé :

Sub transfert()
    Dim i As Long, i2 As Long, j As Integer
    With Sheets(1) ' index de la première feuille
        i = 2 ' numéro de la première ligne où se trouve un nom sur la première feuille
        i2 = 2 ' numéro de la première ligne où on va écrire les données de la feuille 1
        j = 0 ' décalage de colonne pour l'écriture sur la deuxième feuille
        Do ' début d'une boucle infinie
            If .Cells(i, 1) = "" Then Exit Do ' si la cellule suivante est vide on est à la fin de la colonne de données alors on quite la boucle
            ' sinon
            Sheets(2).Cells(i2, 1 + j).Value = .Cells(i, 1).Value ' on copie sur la feuille 2 en ligne i2 et colonne 1+j la valeur Nom de la feuille 1 de la ligne i
            Sheets(2).Cells(i2, 2 + j).Value = .Cells(i, 2).Value ' on copie sur la feuille 2 en ligne i2 et colonne 2+j la valeur Prénom de la feuille 1 de la ligne i
            Sheets(2).Cells(i2, 3 + j).Value = .Cells(i, 3).Value ' on copie sur la feuille 2 en ligne i2 et colonne 3+j la valeur Adresse de la feuille 1 de la ligne i
            If j = 0 Then
                j = 3 ' on crée le décalage de trois colonne pour l'écriture suivante mais on ne change pas de ligne
            Else
                j = 0 ' on suprime le décalage de colonne pour l'écriture suivante
                i2 = i2 + 1 ' par contre on change de ligne
            End If
            i = i + 1 ' on teste la ligne suivante de la feuille 1
        Loop
    End With
End Sub

@ bientôt

LouReeD

Bonsoir

Une version plus simple (moins de ligne) qui j'espère fait ce que tu veux

Option Explicit

Sub Regroupe()
Dim Ligne As Long, J As Long

  With Sheets("Feuil1")
    For J = 1 To .Range("A" & Rows.Count).End(xlUp).Row Step 2
      Ligne = Ligne + 1
      .Range("A" & J).Resize(1, 3).Copy Sheets("Feuil2").Range("A" & Ligne)
      .Range("A" & J + 1).Resize(1, 3).Copy Sheets("Feuil2").Range("D" & Ligne)
    Next J
  End With
End Sub

J'abandonne !

@ bientôt

LouReeD

Merci à LouReed pour sa réponse et merci à Banzai64 pour cet exemple de code qui fonctionne à merveille !!

J'ai soif d'apprendre malgré mon ignorance et mon âge (bientôt septuagénaire).

Bonne nuit et @+ pour d'autres découvertes.

Merci à vous

@ bientôt

LouReeD

Rechercher des sujets similaires à "concatener lignes"