Suppression de lignes qui ne marche pas
Bonjour !
Voilà la situation : Je souhaite concaténer les colonnes A et AE de la première feuille dans la colonne C de la deuxième. Peut-être que concaténer n'est pas le mot ! Si les cellules A1 et AE1 ne sont pas vide toutes les deux, il faudrait que dans la colonne C ça soit A1 puis AE1 en dessous (et ainsi de suite).
Voici ce qu'arrive à faire mon code actuellement, je vous l'accorde ce n'est peut-être pas la meilleure méthode pour le faire, je suis désolée je débute en VBA.
Comme vous pouvez le constater, il y a des lignes vides que je souhaite supprimer mais malgré plusieurs essais de lignes de code rien ne marche ...
Pourriez-vous m'indiquer mon erreur ?
Merci
Code ci-dessous et fichier excel en pj
Sub plan()
' Programme pour le plan d'action
Worksheets("ACTION_PLAN").Range("A3:K100").ClearContents
Worksheets("ACTION_PLAN").Range("A3:K100").Interior.ColorIndex = 2
Dim dernierLigne As Long
' Trouver la dernière ligne avec des données dans la colonne A de la feuille source
dernierLigne = 100 'feuilleSource.Cells(feuilleSource.Rows.Count, 1).End(xlUp).Row
'on prend les cellules de AE quand vide, test en colonne 2 pour pas gêner la 1
For i = 3 To dernierLigne
Worksheets("ACTION_PLAN").Cells(i, 1) = Worksheets("HAZOP_test").Cells(i, 1)
If Worksheets("HAZOP_test").Cells(i, 1) <> "" And Worksheets("HAZOP_test").Cells(i, 31) <> "" Then
Worksheets("ACTION_PLAN").Cells(i + 1, 2).EntireRow.Insert
Worksheets("ACTION_PLAN").Cells(i + 1, 2) = Worksheets("HAZOP_test").Cells(i, 31)
End If
If Worksheets("HAZOP_test").Cells(i, 1) = "" Then
Worksheets("ACTION_PLAN").Cells(i + 2, 2) = Worksheets("HAZOP_test").Cells(i, 31)
End If
If IsEmpty(Worksheets("ACTION_PLAN").Cells(i, 1)) And IsEmpty(Worksheets("ACTION_PLAN").Cells(i, 2)) Then
Worksheets("ACTION_PLAN").Cells(i, 1).EntireRow.Delete ' ligne qui pose problème
End If
Next i
' on prend les colonnes 1 et 2 puis on refait dans la 3 ième
For i = 3 To 30
Worksheets("ACTION_PLAN").Cells(i, 3) = Worksheets("ACTION_PLAN").Cells(i, 1)
Worksheets("ACTION_PLAN").Cells(i, 3).Interior.ColorIndex = 15
Worksheets("ACTION_PLAN").Cells(i, 3).Font.ColorIndex = 1
If Worksheets("ACTION_PLAN").Cells(i, 3) = "" Then
Worksheets("ACTION_PLAN").Cells(i, 3) = Worksheets("ACTION_PLAN").Cells(i, 2)
Worksheets("ACTION_PLAN").Cells(i, 3).Interior.ColorIndex = 2
End If
If Worksheets("ACTION_PLAN").Cells(i, 3) = "" Then
Worksheets("ACTION_PLAN").Cells(i, 3).EntireRow.Delete
End If
Next i
End Sub
Bonjour,
Pour éviter les décalages quand on supprime des lignes, il faut commencer par la dernière ligne en remontant. Essai avec :
For i = 30 To 3 Step -1Daniel
Malheureusement ça n'a rien changé
J'ai essayé de faire un enregistrement d'une macro (rechercher et sélectionner les cellules vides puis supprimer), ça marche bien mais j'aimerais comprendre pourquoi mon code n'a pas marché.
Merci pour ton aide, je ne veux pas t'embêter trop avec ça !