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

Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 10 déc. 2009 à 20:05
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
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
1
Merci
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 !

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
0
Merci
topic nettoyé et déplacé
(rien n'empêchait de commencer à apporter une réponse)
Commenter la réponse de PCPT
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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 !
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009
0
Merci
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é...
Commenter la réponse de Mistergillus
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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 !
Commenter la réponse de ucfoutu
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015
0
Merci
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
Commenter la réponse de cs_nitho
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009
0
Merci
réponse N°2 c'est tout à fait ça.
Commenter la réponse de Mistergillus
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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 !
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009
0
Merci
j'ai essayer la première impeccable !
je vais essayer la 2ème...
Commenter la réponse de Mistergillus
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009
0
Merci
Magnifique! encore plus rapide
Merci juste une dernière petite chose pourrait on laisser environs 4 lignes au dessus de mon tableau ?
Commenter la réponse de Mistergillus
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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 !
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009
0
Merci
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
Commenter la réponse de Mistergillus