Supprimer des lignes en VBA

Amilo

XLDnaute Accro
Bonsoir le Forum,

J'ai trouvé une ptite macro pour supprimer toutes les lignes vides d'une feuille, par contre dans mon exemple je souhaite également supprimer d'autres lignes partiellement vides !!!

Ci-dessous le récapitulatif des lignes que je souhaite supprimer :

- les lignes bleues (la macro les supprime sans problème)
- les lignes oranges et les lignes rouges qui sont partiellement vides

Les lignes que je souhaite conserver :

- la 1ère ligne en vert (correspondant à l'en-tête de mon tableau)
- les autres lignes vertes

Pour info, mes données tiennent en réalité sur 300 lignes env. mais toujours avec la même structure comme présentée dans le fichier, avec du texte, des chiffres et de tirets, à intervalles, lignes et colonnes identiques.

Je vous remercie d'avance pour votre aide

Cordialement.
 

Pièces jointes

  • SuppLignes.xls
    44 KB · Affichages: 168
  • SuppLignes.xls
    44 KB · Affichages: 174
  • SuppLignes.xls
    44 KB · Affichages: 176
Dernière édition:

david84

XLDnaute Barbatruc
Re : Supprimer des lignes en VBA

Re
je viens de tester vite fait et effectivement il y a un problème. Cela est dû à mon avis à
If Application.WorksheetFunction.CountA(Rows(Compteur)) <> Range([A1], [A1].End(xlToRight)).Count Then
Si par ex, tu modifies [A1] par [A10] et que tu insère des lignes, cela semble fonctionner.
Donc à voir de plus près (mais pas ce soir).
A+
 

david84

XLDnaute Barbatruc
Re : Supprimer des lignes en VBA

Re
testé ce matin avec la modification suivante, cela semble fonctionner qu'elle que soit la configuration, mais à tester :
Code:
Sub SupprLignesVides3() 'Le Programmeur
    Dim DerniereLigne As Long
    Dim Compteur As Long
    DerniereLigne = ActiveSheet.UsedRange.Row - 1 + _
                       ActiveSheet.UsedRange.Rows.Count
    For Compteur = DerniereLigne To 1 Step -1
        If Application.WorksheetFunction.CountA(Rows(Compteur)) <> [B]ActiveSheet.UsedRange.Columns.Count[/B] Then
          Rows(Compteur).Delete
        ElseIf Range("D" & Compteur) Like "[A-Z]" And Range("E" & Compteur) Like "[A-Z]" And Range("F" & Compteur) Like "[A-Z]" Then
          Rows(Compteur).Delete
        End If
    Next Compteur
End Sub
A+
 

haonv

XLDnaute Occasionnel
Re : Supprimer des lignes en VBA

Bonjour David ,

C'est bien :
If Application.WorksheetFunction.CountA(Rows(Compteur )) <> Range([A1], [A1].End(xlToRight)).Count Then
qui doit poser problème.C'est pour cela que je l'avais remplacer par :
If Application.WorksheetFunction.CountA(Rows(Compteur)) <> PremiereLigne Then
avec:
PremiereLigne = Range(Cells(ActiveSheet.UsedRange.Row, 1), Cells(ActiveSheet.UsedRange.Row, 1).End(xlToRight)).Count

Par contre les résultats entre les versions excel 2003 et 2007 sont différents en cas d'insertion de lignes.
Sur la feuille "lignes insérées" , j'ai collé sur la ligne 1 le tableau de la feuille "donnée".Puis j'ai inséré des lignes vides (lignes 1 à 4)
Sur la feuille "lignes vides" , j'ai collé le tableau directement sur la ligne 5.
Les macros appliquées sur la feuille "lignes insérées" avec le fichier ouvert sous 2007 donnent un résultat différents de tous les autres cas.
Avec "Sub Plage",le range renvoyé est A5:A43 , sauf pour "lignes insérées" sous 2007 où le range est A1:A43.

A Kjin:
Je suis ,il est vrai, un peu "tête en l'air",mais je pense avoir appliqué la même sub...:)

Edit : David ,on s'est croisé ...
Amicalement
A+
 

Pièces jointes

  • pour amilo adresse.zip
    11.8 KB · Affichages: 15
Dernière édition:

Discussions similaires

Réponses
26
Affichages
1 K

Statistiques des forums

Discussions
312 841
Messages
2 092 703
Membres
105 514
dernier inscrit
Hébera