Correction code VBA


#1

Bonjour
je suis débutante sur vba et je n’arrive pas à faire une boucle qui me permet de copier des cellules d’une feuille à une autre, au cas ou il y a une case vide la boucle va passer à la case suivante. sachant que je veux copier les cellules par ligne par exemple on commence par A2 ensuite B2 jusqu’à F2 et la boucle se répète automatiquement (A3-B3…F3).
j’ai vraiment besoin de votre aide :pray::pray:
Par avance merci de vos réponses et désolé si mon code est trop amateur.
Voici mon code actuel:

Sub affecattion()
derniere_ligne = Sheets(“cat”).Range(“A1”).End(xlDown).Row
ligne = Sheets(“affe”).Range(“A1”).End(xlDown).Row + 1

For i = 2 To derniere_ligne - 2
If IsEmpty(Worksheets(“cat”).Cells(i, “A”)) Then
ActiveCell.Offset(0, 1).Select
Else
Worksheets(“affe”).Cells(ligne, “A”).Value = Worksheets(“cat”).Cells(i, “A”).Value
End If
Next

End Sub

voilà le fichiertest.xlsm (16,7 Ko)


#2

Bonjour,

Déjà, je trouve que pour une débutante tu as recherché et c’est bien.
je te propose le code suivant :

Sub toto()
L = ActiveSheet.UsedRange.Rows.Count 'nombre de lignes de l'onglet "Cat"
L_affe = 2 'numéro de la ligne de l'onglet affe
For I = 2 To L
    For C = 1 To 6 'colonnes de 1 à 6 onglet cat
        If Cells(I, C).Value <> "" Then
          Sheets("affe").Cells(L_affe, 1) = Cells(I, C).Value
          L_affe = L_affe + 1
        End If
    Next
Next

End Sub


#3

Merci beaucoup ouisansdoute pour ton aide
j’ai essaiyé ce code et il marche trés bien`

             Sub Affectation()
           Dim derniere_colonne As Long
           Dim colonne_en_cours As Long
           Dim ligne As Long, derl As Long
           Dim i As Long

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

For i = 2 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