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
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
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
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