[déplacé VB6 -> VBA] Supprimer des lignes dans Excel [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonsoir à tous
Je ne suis pas très fortiche en macro mais j'ai cela m'intéresse et je crois que je vais apprendre beaucoup sur ce forum
Voila mon problème
Je souhaiterai suprimer automatiquement des lignes dans un tableau
Exemple : en A1 j'ai le chiffre 1, en A2 rien,en A3 chiffre 2, A4 et A5 rien,A6 chiffre 3, je peut aussi bien avoir 4 ou 5 lignes de vides et une après c'est aléatoire
Je ne sais quel macro utiliser pour supprimer ces lignes
Pouvez vous m'aider
Merci d'avance

12 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
219
N'est-ce pas ?
Sûr, que CS est un site de pros

Allez, la voilà ta solution pour commencer à supprimer à compter de la 5ème ligne (regarde bien ce qu'est toto : c'est la dernière ligne renseignée)...

Application.ScreenUpdating = False
  toto = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
  With Range("A5:A" & toto)
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  End With
  Application.ScreenUpdating = True

N'oublie surtout pas de marquer comme réponse acceptée

(pas pour moi, mais pour rendre service à d'autres, car cette méthode n'est que peu connue)
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
topic nettoyé et déplacé
(rien n'empêchait de commencer à apporter une réponse)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
219
Bonjour,

1) Peux-tu mieux préciser les conditions exactes qui doivent entraîner la suppression de'une ligne ? (ton exemple ne suffit pas à "cerner" à coup certain cette condition)
2) d'ores et déjà(en admettant que tu saches déjà exprimer la condition de suppression) :
Lorsque l'on supprime une/des ligne(s) il est important de remonter de la dernière vers la première (sans quoi, croche-pieds assurés avec les numéros restants de lignes).
Le principe et le suivant :
For I = dernièreligne to premièreligne step - 1
  if .......ta condition..... then
     .....entirerow.delete
  end if

Next





____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

Bonsoir
j'aurai 18 à 20 chiffre maxi dans la colonne A séparés par plusieurs lignes vides ( il peut avoir une ou plusieurs ligne qui sépare ces chiffres c'est aléatoire )la condition serai que dès qu'on arrive sur une cellule remplie on supprime les lignes vides en dessous ou au dessus ? ainsi de suite ? pour avoir au final les lignes de 1 à 20 par exemple qui se suivent.
Je ne sais pas si je me suis bien exprimé...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
219
Je crains fort que ce ne soit toujours pas assez précis.
Quelles lignes dois-tu exactement supprimer :
1) uniquement celles dont aucune cellule (quelle que soit la colonne, donc) ne contient une donnée
2) toutes celles qui ne contiennent rien en colonne A (même si elles contiennent une valeur dans d'autres colonnes de la ligne)

Réponse 1 ou 2 ?
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

Regarde ce bout de code, ici je traite les 200 premières lignes...

sub nitho()
Dim x
Dim i As Integer
i = 1
Application.ScreenUpdating = False
x = Application.Calculation
Application.Calculation = xlCalculationManual
Do While i < 200
    If Cells(i, 1).Value = "" Then
        Rows(i).Delete shift:=xlUp
        Debug.Print i
        Debug.Print Range(("A" & i)).Value
        i = i - 1
    End If
    If i = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row Then
        i = 200
    End If
    i = i + 1
Loop
Application.ScreenUpdating = True
Application.Calculation = x
End Sub


nitho l'amateur
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

réponse N°2 c'est tout à fait ça.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
219
réponse N°2 c'est tout à fait ça.


Ah... !
Et si on le faisait sans la moindre boucle et d'un seul coup, alors ? Ca te tente ?

allos-y (exemple)

  Application.ScreenUpdating = False
  With Range("A:A")
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  End With
  Application.ScreenUpdating = True
___

Moi, j'aime bien...

Mais si tu préfères avec une boucle (plus lent) tu dis....


_________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

j'ai essayer la première impeccable !
je vais essayer la 2ème...
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

Magnifique! encore plus rapide
Merci juste une dernière petite chose pourrait on laisser environs 4 lignes au dessus de mon tableau ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
219
Ben oui !
Il te suffit de démarrer ta plage (range) à la 5ème ligne

Bon...
Je suis certain que cette méthode en aura intéressé plus d'un (tous ceux qui auront dédié un peu de leur temps ici...)
Si, maintenant, toi, tu veux me remercier : une seule méthode ====>>> prendre la prochaine fois le temps nécessaire pour choisir avec le plus grand soin le thème dans lequel tu dois aouvrir ta discussion (celui où elle a été déplacée... regarde-le bien et mémorise-le). Cela me ferait un réel plaisir.
Bonne chance
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

Je suivrai tes conseils avec la plus grande attention.
Il y a vraiment beaucoup de choses intéressantes à apprendre sur ce site je crois que ça va me passionner.
Merci encore et bonne continuation