Voilà une question que je ne m'étais pas posée jusqu'à présent lol
"Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete"" supprime toutes les lignes colonne "A" vide.
Mais est-il possible de supprimer les lignes colonne "A" vide à partir d'une ligne ?
Par exemple, dans le petit fichier test joint, je voudrais supprimer les lignes colonne "A" vide à partir de la ligne 8 jusqu'à la dernière ligne.
Pas certain que ce soit possible.
Jusqu'à maintenant, je n'ai pas trouvé...
Merci pour vos retours...
Bonjour @Usine à gaz
Avec ce code, cela devrait le faire
VB:
Sub SupprimeLigne()
xPreLig = 9 'Première ligne
xDerlig = Range("A65000").End(xlUp).Row 'Dernière ligne
Range("A" & xPreLig & ":A" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Bonjour @Usine à gaz
Avec ce code, cela devrait le faire
VB:
Sub SupprimeLigne()
xPreLig = 9 'Première ligne
xDerlig = Range("A65000").End(xlUp).Row 'Dernière ligne
Range("A" & xPreLig & ":A" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Bonjour @Usine à gaz
Avec ce code, cela devrait le faire
VB:
Sub SupprimeLigne()
xPreLig = 9 'Première ligne
xDerlig = Range("A65000").End(xlUp).Row 'Dernière ligne
Range("A" & xPreLig & ":A" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Re bonjour,
Je me suis aperçu que si la macro était lancée une première fois, cela fonctionnait. Du coup, plus de ligne vide entre celle du début et celle de fin.
Cependant, si on relance la macro, cela bugg
En rajoutant un simple "On Error Resume Next", plus de souci
VB:
Sub SupprimeLigne()
On Error Resume Next
xPreLig = 9 'Première ligne
xDerlig = Range("A65000").End(xlUp).Row 'Dernière ligne
Range("A" & xPreLig & ":A" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Re bonjour,
Je me suis aperçu que si la macro était lancée une première fois, cela fonctionnait. Du coup, plus de ligne vide entre celle du début et celle de fin.
Cependant, si on relance la macro, cela bugg
En rajoutant un simple "On Error Resume Next", plus de souci
VB:
Sub SupprimeLigne()
On Error Resume Next
xPreLig = 9 'Première ligne
xDerlig = Range("A65000").End(xlUp).Row 'Dernière ligne
Range("A" & xPreLig & ":A" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Salut le fil,
Je pense qu'il faut éviter de prendre l'habitude de balancer des Error Resume Next partout, surtout quand on peux l'éviter.
Ici, il suffit de tester si la colonne contient des vides
VB:
Sub SupprimeLigne()
Dim xPreLig As Long
xPreLig = 9 'Première ligne
Dim xDerlig As Long
xDerlig = Range("A65000").End(xlUp).Row 'Dernière ligne
Dim TestingRange As Range
Set TestingRange = Range("A" & xPreLig & ":A" & xDerlig)
If WorksheetFunction.CountBlank(TestingRange) > 0 Then
TestingRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End Sub
C'est vrai, mais pour un petit code comme celui-ci, je ne pense pas que cela génère beaucoup de problème pour la suite. Mais je reste d'accord avec toi sur le principe
@+ Lolote83
Re bonjour,
Si comme tu le dis, en remplaçant "A" par "B", cela devrait être OK. Par contre, si cela supprime bien les lignes vides de la colonne B (mais sans tenir compte - pas testé) que la colonne A soit vide ou non
Dis nous
@+ Lolote83
Re bonjour,
Si comme tu le dis, en remplaçant "A" par "B", cela devrait être OK. Par contre, si cela supprime bien les lignes vides de la colonne B (mais sans tenir compte - pas testé) que la colonne A soit vide ou non
Dis nous
@+ Lolote83
Re,
J'ai fait le test chez moi et cela supprime bien les lignes de la colonne B
VB:
Sub SupprimeLigneB()
On Error Resume Next
xPreLig = 9 'Première ligne
xDerlig = Range("B65000").End(xlUp).Row 'Dernière ligne
Range("B" & xPreLig & ":B" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Mais si une ligne de la colonne A n'est pas vide et que B est vide, cela supprime bien la ligne en question
@+ Lolote83
Re,
Par contre, si tu souhaites conservé les données de la colonne A et celle de la colonne B
Code:
Sub SupprimeLigneVide()
Call RemonteLesDonnées("A")
End Sub
Sub RemonteLesDonnées(xCol)
Application.ScreenUpdating = False
xPreLig = 9 'Première ligne
xDerLig = Range(xCol & "65000").End(xlUp).Row 'Dernière ligne
For F = xDerLig To xPreLig Step -1
If Cells(F, xCol) = Empty Then
Cells(F, xCol).Delete Shift:=xlUp
End If
Next F
Application.ScreenUpdating = True
End Sub
Lancer une première fois avec "A" puis "B" dans le code Call RemonteLesDonnées
En fait, on ne sais pas trop si tu souhaites ou pas conserver les données des colonnes précédemment testées
@+ Lolote83
L'objet de mon #post1 (mon besoin) est bien de supprimer les lignes colonne "A" vide à partir de la ligne 8 jusqu'à la dernière ligne = c'est bon, ton code fonctionne bien.
L'objet de mon #post9 (test) est de supprimer les lignes colonne "B" vide à partir de la ligne 8 jusqu'à la dernière ligne ? sans tenir compte de la colonne A, c'est à dire si en A, c'est vide et pas en B, on garde la ligne