Supprimer toutes les lignes d'une feuille à partir d'un critère
Bonjour,
J'aimerai supprimer toutes les lignes d'une feuille Excel dès lors que je tombe sur une ligne vide.
En fait, mon tableau contient des données de la ligne 6 à 36 puis de la ligne 36 à 78, il n'y a pas de données écrite, ensuite de la ligne 78 à 145, il y a des données mais qui ne m'intéresse pas et ensuite j'ai des lignes sans données mais qui ne sont pas interprétées comme vide par Excel.
car quand je cherche la dernière ligne non vide de mon tableau par la formule suivant : DernLigne = wscopie1.Range("C" & Rows.Count).End(xlUp).Row, il me donne la ligne 260, ce qui correspond à ma dernière ligne du tableau dépourvue de valeur mais qui fait partie du tableau.
Donc ma question est :
Comment faire une macro VBA qui me permette de supprimer toutes les lignes à partir de la première ligne ne contenant pas de valeur ?
Je vous ai joins des captures écran afin que vous compreniez mieux mon problème....
Merci beaucoup,
Eva
Bonjour EvaNounou
Voici un code qui devrait t'aider, je l'espère
Sub SupLigneVide()
Dim DernLigne As Long
Dim Ligne As Long
' Avec la feuille active
With ActiveSheet
' Récupérer le numéro de la dernière ligne
DernLigne = .Range("C" & Rows.Count).End(xlUp).Row
' Pour chaque ligne à partir de la dernière
For Ligne = DernLigne To 2 Step -1
' Est-ce que la cellule Cx est vide
If .Range("C" & Ligne).Value = "" Then
' Oui, alors on supprime la ligne
.Range("A" & Ligne).EntireRow.Delete Shift:=xlUp
End If
Next Ligne
End With
End SubA+
Bonjour,
Tout d'abord merci beaucoup pour ce programme VBA qui marche très bien.
Donc ce programme me supprime toutes les lignes vides donc c'est parfait mais maintenant j'aimerai supprimer aussi à partir de la ligne où la colonne A est vide, et supprimer toutes les lignes jusqu'à la fin à partir de cette colonne A vide.
J'ai également fait une capture d'écran pour illustrer mes propos car des fois je ne suis pas très claire !!
Merci,
Eva
C'est bon j'ai réussi !
Voici le code :
Sub DimLig()
Dim Lig, DernLigne As Long
Dim i As Integer
Dim wscopie1 As Worksheet
Set wscopie1 = Worksheets("Données d'entrée Cables")
DernLigne = wscopie1.Range("A" & Rows.Count).End(xlUp).Row
Lig = 6 'première ligne à vérifier
Do While Not IsEmpty(Range("A" & Lig))
Lig = Lig + 1
Loop
MsgBox "La première ligne vide colonne C est la ligne : " & Lig
For i = Lig To DernLigne
Range("A" & Lig).EntireRow.Delete Shift:=xlUp
Next
End Sub
Merci beaucoup pour votre aide,
Eva
Re bonjour,
En fait en Excécutant mon code, j'ai un problème, il me supprime ma deuxième ligne (ligne 2 de la feuille) et celle là je veux la garder car elle fait partie de la présentation.
Voici mon code :
ub SupLigne()
Dim DernLigne As Long
Dim i As Integer
Dim Ligne, Lig As Long
Dim wscopie1 As Worksheet
Set wscopie1 = Worksheets("Données d'entrée Cables")
' Avec la feuille active
With ActiveSheet
' Récupérer le numéro de la dernière ligne
DernLigne = .Range("C" & Rows.Count).End(xlUp).Row
' Pour chaque ligne à partir de la dernière
For Ligne = DernLigne To 2 Step -1
' Est-ce que la cellule Cx est vide
If .Range("C" & Ligne).Value = "" Then
' Oui, alors on supprime la ligne
.Range("A" & Ligne).EntireRow.Delete Shift:=xlUp
End If
Next Ligne
End With
Lig = 6 'première ligne à vérifier
DernLigne = wscopie1.Range("A" & Rows.Count).End(xlUp).Row
Do While Not IsEmpty(Range("A" & Lig))
Lig = Lig + 1
Loop
MsgBox "La première ligne vide colonne C est la ligne : " & Lig
For i = Lig To DernLigne
Range("A" & Lig).EntireRow.Delete Shift:=xlUp
Next
End Sub
Et une capture d'écran de la ligne supprimée alors que je veux la garder !
Merci,
Eva
En fait, mon code était beaucoup trop compliqué !
Donc voilà, maintenant ça marche !
C'était tout bête ce qu'il fallait écrire :
Sub SupLigne()
Dim DernLigne, Lig As Long
Dim i As Integer
Dim wscopie1 As Worksheet
Set wscopie1 = Worksheets("Données d'entrée Cables")
Lig = 6 'première ligne à vérifier
DernLigne = wscopie1.Range("A" & Rows.Count).End(xlUp).Row
Do While Not IsEmpty(Range("A" & Lig))
Lig = Lig + 1
Loop
MsgBox "La première ligne vide colonne C est la ligne : " & Lig
For i = Lig To DernLigne
Range("A" & Lig).EntireRow.Delete Shift:=xlUp
Next
End Sub
Merci pour votre aide,
Eva