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

Résolu
Mistergillus Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009 - 9 déc. 2009 à 20:29
ucfoutu Messages postés 18038 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

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
10 déc. 2009 à 20:05
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 !
1
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
9 déc. 2009 à 21:10
topic nettoyé et déplacé
(rien n'empêchait de commencer à apporter une réponse)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
9 déc. 2009 à 21:18
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 !
0
Mistergillus Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
9 déc. 2009 à 22:26
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é...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
10 déc. 2009 à 08:16
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 !
0
cs_nitho Messages postés 130 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 8 décembre 2015
10 déc. 2009 à 09:44
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
0
Mistergillus Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 19:14
réponse N°2 c'est tout à fait ça.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
10 déc. 2009 à 19:39
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 !
0
Mistergillus Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 19:41
j'ai essayer la première impeccable !
je vais essayer la 2ème...
0
Mistergillus Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 19:44
Magnifique! encore plus rapide
Merci juste une dernière petite chose pourrait on laisser environs 4 lignes au dessus de mon tableau ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
10 déc. 2009 à 19:49
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 !
0
Mistergillus Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 19:59
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
0