VBA dépouillement classeur excel
Fermé
rayondesoleil
-
16 juil. 2009 à 18:15
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 17 juil. 2009 à 14:20
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 17 juil. 2009 à 14:20
A voir également:
- VBA dépouillement classeur excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
16 juil. 2009 à 18:50
16 juil. 2009 à 18:50
bonjour
je mettrais plutôt un OR qu'un AND
d'autre part dans cells(x,y)="" "" n'est pas numérique donc...
Si tu veux tester si la cellule est vide, emploie la fonction ISEMPTY(cells(x,y))
pour la rapidité et le confort, en debut de procédure, désactive le déroulement de l'écran par:
application.screenupdating=false
Cordialement, Michel
je mettrais plutôt un OR qu'un AND
d'autre part dans cells(x,y)="" "" n'est pas numérique donc...
Si tu veux tester si la cellule est vide, emploie la fonction ISEMPTY(cells(x,y))
pour la rapidité et le confort, en debut de procédure, désactive le déroulement de l'écran par:
application.screenupdating=false
Cordialement, Michel
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
17 juil. 2009 à 14:20
17 juil. 2009 à 14:20
Re,
il fallait travailler avec la feuille sélectionnée par For each
j'ai modifié quelques trucs question de rapidité
non géré: feuille vide
il fallait travailler avec la feuille sélectionnée par For each
j'ai modifié quelques trucs question de rapidité
non géré: feuille vide
Sub SupprimerLignes() Dim sh As Worksheet Dim i As Long Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Sheets With sh 'on se débarasse des lignes vides d'un seul coup ==> rapidité Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'Range("A65536").End(xlUp).Row). permet d'éviter de bosser sur 65536 lignes ==> rapidité For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Not IsNumeric(.Cells(i, 1).Value) Then 'si la valeur de la cellule n'est pas numerique je fais .Rows(i).Delete End If 'i=i-1 erreur grossière :for next incrémente automatiquement Next i End With Next sh End Sub
17 juil. 2009 à 13:31
Merci de ta réponse, le code modifié est le suivant et ne marche pas trop mal, sauf qu'il n'agit que sur une feuille à la fois. Je suis donc obligé de l'exécuter une autant de fois que le nombre de feuilles.
Aurais tu idée de pourquoi cela ne fonctionne pas?
Merci d'avance
Sub SupprimerLignes() '
Dim i As Long
Application.ScreenUpdating = False
For Each sh In ActiveWorkbook.Sheets
For i = 65536 To 1 Step -1
If Not IsNumeric(Cells(i, 1).Value) Or IsEmpty(Cells(i, 1)) = True Then 'si la valeur de la cellule n'est pas numerique je fais
Rows(i).Delete Shift:=xlUp
i = i - 1
End If
Next i
Next sh
End Sub