Copier une ligne coller en colonne

Bonjour tout le monde

Je suis nouvelle dans ce forum et j'ai vraiment besoin de votre aide, je débute sur vba et je veux copier des cellules A2, B2 , C2, D2 E2 F2 et je veux les coller dans une autre feuille dans la colonne A c'est à dire A2 dans A2 / B2 dans A3 /C2 dans A4 ainsi de suite et s'il y a une cellule vide je passe à la cellule suivante

le problème du code que j'ai fait c'est qu'il ne me copie que la dernière colonne.

Voila le code

Sub affecattion()

Dim derniere_colonne As Long
Dim colonne_en_cours As Long

derniere_colonne = Sheets("cat").Cells(1, Columns.Count).End(xlToLeft).Column
ligne = Sheets("affe").Range("A2").End(xlDown).Row + 1

For colonne_en_cours = 1 To derniere_colonne

 If Cells(1, colonne_en_cours) = "" Then
     colonne_en_cours = colonne_en_cours + 1
   Else
Sheets("affe").Cells(ligne, "A").Value = Sheets("cat").Cells(1, colonne_en_cours).Value
  End If

 Next

End Sub

voici le fichier et merci d'avance

7test.xlsm (19.71 Ko)

Bonjour,

Ci-joint ton fichier test ...

En espèrant que cela t'aide

8test-oumaima.xlsm (17.90 Ko)

Bonjour Oumaima, James, bonjour le forum,

Peut-être comme ça :

Sub affectation()
Dim C As Worksheet 'déclare la variable C (onglet Cat)
Dim A As Worksheet 'déclare la variable A (onglet Affe)
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set C = Worksheets("cat") 'définit l'ontglet C
Set A = Worksheets("affe") 'définit l'ontglet A
DC = C.Cells(1, Columns.Count).End(xlToLeft).Column 'définit la dernière colonne éditée de la ligne 1 de l'onglet C
For I = 1 To DC 'boucle sur toutes les colonnes éditée I de la ligne 1 de l'onglet C
    Set DEST = A.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (1ère cellule vide de la colonne A de l'onglet A)
    DL = C.Cells(Application.Rows.Count, I).End(xlUp).Row 'définit la dernière ligne éditée de la colonne de la boucle
    DEST.Resize(1, DL).Value = Application.Transpose(C.Range(C.Cells(1, I), C.Cells(DL, I))) 'renvoie dasn DEST redimensionnée la plage transposée des cellules éditées de la colonne de la boucle
Next I 'prochaine colonne de la boucle
End Sub

merci beaucoup thauThème pour ton aide

james 007 ça marche parfaitement merci beaucoup

j'ai juste une question si je veux que le nombre de ligne ne soit pas précis par ce que les données varies comment je vais faire et merci d'avance

Re,

Salut ThauThème ...

Pour la dernière ligne ... petite modif ...

Sub Affectation()

Dim derniere_colonne As Long  ' pour balayer les Colonnes
Dim colonne_en_cours As Long
Dim ligne As Long, derl As Long
Dim i As Long                 ' pour balayer les Lignes

derniere_colonne = Sheets("cat").Cells(1, Columns.Count).End(xlToLeft).Column
derl = ActiveSheet.Cells(Rows.Count, "F").End(xlUp).Row

    For i = 1 To derl
        For colonne_en_cours = 1 To derniere_colonne
              ligne = Sheets("affe").Range("A2000").End(xlUp).Row + 1
              If Not IsEmpty(Cells(i, colonne_en_cours)) Then
                  Sheets("affe").Cells(ligne, "A").Value = Sheets("cat").Cells(i, colonne_en_cours).Value
              End If
        Next colonne_en_cours
    Next i

End Sub

Merciiiiiii beaucouuuuup James007

Merciiiiiii beaucouuuuup James007

De rien ...

Rechercher des sujets similaires à "copier ligne coller colonne"