Macro suppression ligne vide ne fonctionne pas [Résolu]

Signaler
Messages postés
37
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
29 septembre 2020
-
Messages postés
37
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
29 septembre 2020
-
Bonjour,

j'ai défini une macro supprimant les lignes d'une feuille Excel si la première cellule de chaque ligne est vide.
J'ai naturellement repris des formules trouvées sur le Net et j'ai fait de bêtes copier-coller,
mais j'ai toujours le même message d'erreur: Erreur d’exécution '13': Incompatibilité de type au niveau de la ligne "If Cells(i, 1) = "" Then"
Selon vous qu'elle est l'erreur dans le code qui suit?

Sub Delete_line()
For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
If Cells(i, 1) = "" Then
Cells(i, 1).EntireRow.Delete
End If
Next i
End Sub

Merci d'avance

Configuration: Windows / Chrome 80.0.3987.163

6 réponses

Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
562
Bonjour,

déclare ta variable:

Dim i As Integer


chez moi cela fonctionne!
Messages postés
16261
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 051
Bonjour

J'ai fait un essai sur des cellules fusionnées horizontalement et/ou verticalement et c'est OK

Option Explicit
'---------------------------------------------------------------------------
Sub Supprimer_si_vide()
Dim Ligne As Long

On Error Resume Next
Ligne = Columns("A").Find("*", , , , , xlPrevious).Row
Range("A2:A" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub


Messages postés
37
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
29 septembre 2020
1
Avec la proposition de michel_m, je n'ai plus le message d'erreur mais la macro n'aboutit pas au résultat espéré. Est-ce dû au fait que les cellules qui m’intéressent ne sont pas vraiment vides mais la formule qui est inscrite dedans génère une cellule vide dans certains cas?
Messages postés
37
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
29 septembre 2020
1
Non toujours pas, est-ce que cela peut-être dû au fait que j'ai des cellules fusionnées dans la colonne A?
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
562
Bien sur, les macros n'aiment pas les cellules fusionnées!
Messages postés
37
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
29 septembre 2020
1
Y'a t-il un moyen de la faire fonctionner, par exemple lancer la macro sur l'ensemble des colonnes concernées par la fusion?
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
562
essaie ceci:

Sub Delete_line()
Dim i As Long
Dim cellule As Range
Dim derligne As Long
 derligne = Range("A" & Rows.Count).End(xlUp).Row
For i = derligne To 1 Step -1
For Each cellule In Range("A1:A" & derligne)
If Range(cellule.Address).MergeCells Then
Else
If Cells(i, 1) = "" Then
Cells(i, 1).EntireRow.Delete
End If
End If
Next cellule
Next i
End Sub


@+ Le Pivert
Messages postés
37
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
29 septembre 2020
1
J'ai testé la proposition pour les cellules fusionnées, la première sans cellules fusionnées mais j'ai toujours le même problème...
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
562
Voici une boucle sur les cellules fusionnées et enlever la fusion:

Sub detecteFusion()
Dim cellule As Range
Dim derligne As Long
 derligne = Range("A" & Rows.Count).End(xlUp).Row
For Each cellule In Range("A1:A" & derligne) 'adapter plage cellule
If Range(cellule.Address).MergeCells Then
 cellule.UnMerge 'enleve la fusion
End If
Next cellule
End Sub
Messages postés
37
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
29 septembre 2020
1
J'aurais du commencer par là, en fait j'ai copié un fichier pour garder la mise en forme sans savoir qu'il y'avait des formules cachées derrière. Une fois que j'ai refait la feuille à neuf, la macro initiale a fonctionné parfaitement. Malgré tout je tiens à vous remercier pour la qualité et la rapidité de vos réponses