Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA effacement de lignes...ma macro en efface trop !

3 réponses
Avatar
Domi
Bonjour à tous,

Cette macro devrait effacer toutes les lignes dont la colonne H est vide
(après un test), hélas elle efface toutes les lignes, même celles qui
contiennent toujours "VRAI"... je ne vois vraiment pas où est l'erreur...
VRAI c'est pas vide !
Si je met .Select à la place de Delete tout est sélectionné même les lignes
VRAI... je ne comprends pas...HELP !

With Range("H11", Range("A65000").End(xlUp).Offset(0, 7))
.FormulaR1C1 = "=COUNTA(RC[-7]:RC[-2])=6"
.Value = .Value
.Replace "FALSE", ""
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With

Merci
Domi

3 réponses

Avatar
Daniel.j
essaie avec celle ci:
Modifie la lettre de la colonne ici : C
Supprime les lignes vides d'un tableau si la colonne C est vide

Sub DétruireLignesiC()
derniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = derniereLigne To 1 Step -1
If IsEmpty(Range("C" & r)) Then Rows(r).Delete
Next r
End Sub

--
Daniel MVP Excel
FAQ du Forum Microsoft Public Fr Excel
http://dj.joss.free.fr/faq.htm

"Domi" a écrit dans le message de news:

Bonjour à tous,

Cette macro devrait effacer toutes les lignes dont la colonne H est vide
(après un test), hélas elle efface toutes les lignes, même celles qui
contiennent toujours "VRAI"... je ne vois vraiment pas où est l'erreur...
VRAI c'est pas vide !
Si je met .Select à la place de Delete tout est sélectionné même les lignes
VRAI... je ne comprends pas...HELP !

With Range("H11", Range("A65000").End(xlUp).Offset(0, 7))
.FormulaR1C1 = "=COUNTA(RC[-7]:RC[-2])=6"
.Value = .Value
.Replace "FALSE", ""
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With

Merci
Domi




Avatar
Domi
Merci pour ton aide,
C'est une solution qui fonctionne, mais qui a l'inconvénient d'être beaucoup
plus longue et comme je dois épurer un fichier texte importé de près de
62000 lignes (je suis à la limite du hors-jeu...) ça prends de longues
minutes....
Ce que je ne comprends pas c'est que cette macro que j'utilise tourne
habituellement très vite et très bien dans d'autres applications, mais là il
y a quelques part un grain de sable que je ne vois pas.
Je ne comprends pas ce qui peut faire qu'Excel voit une cellule contenant
VRAI comme vide...

Encore merci
Domi

"Daniel.j" a écrit dans le message de news:

essaie avec celle ci:
Modifie la lettre de la colonne ici : C
Supprime les lignes vides d'un tableau si la colonne C est vide

Sub DétruireLignesiC()
derniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = derniereLigne To 1 Step -1
If IsEmpty(Range("C" & r)) Then Rows(r).Delete
Next r
End Sub

--
Daniel MVP Excel
FAQ du Forum Microsoft Public Fr Excel
http://dj.joss.free.fr/faq.htm

"Domi" a écrit dans le message de news:

Bonjour à tous,

Cette macro devrait effacer toutes les lignes dont la colonne H est vide
(après un test), hélas elle efface toutes les lignes, même celles qui
contiennent toujours "VRAI"... je ne vois vraiment pas où est
l'erreur...


VRAI c'est pas vide !
Si je met .Select à la place de Delete tout est sélectionné même les
lignes


VRAI... je ne comprends pas...HELP !

With Range("H11", Range("A65000").End(xlUp).Offset(0, 7))
.FormulaR1C1 = "=COUNTA(RC[-7]:RC[-2])=6"
.Value = .Value
.Replace "FALSE", ""
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With

Merci
Domi








Avatar
AV
En l'état ta macro fonctionne chez moi
Suggestion : ne pas utiliser de formule intermédiaire mais directement :

Range("H11", Range("A65000").End(xlUp).Offset(0, 7)). _
SpecialCells(xlCellTypeBlanks).EntireRow.Delete

AV

Range("H11", Range("A65000").End(xlUp).Offset(0,
7)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
"Domi" a écrit dans le message news:

Merci pour ton aide,
C'est une solution qui fonctionne, mais qui a l'inconvénient d'être beaucoup
plus longue et comme je dois épurer un fichier texte importé de près de
62000 lignes (je suis à la limite du hors-jeu...) ça prends de longues
minutes....
Ce que je ne comprends pas c'est que cette macro que j'utilise tourne
habituellement très vite et très bien dans d'autres applications, mais là il
y a quelques part un grain de sable que je ne vois pas.
Je ne comprends pas ce qui peut faire qu'Excel voit une cellule contenant
VRAI comme vide...

Encore merci
Domi

"Daniel.j" a écrit dans le message de news:

essaie avec celle ci:
Modifie la lettre de la colonne ici : C
Supprime les lignes vides d'un tableau si la colonne C est vide

Sub DétruireLignesiC()
derniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = derniereLigne To 1 Step -1
If IsEmpty(Range("C" & r)) Then Rows(r).Delete
Next r
End Sub

--
Daniel MVP Excel
FAQ du Forum Microsoft Public Fr Excel
http://dj.joss.free.fr/faq.htm

"Domi" a écrit dans le message de news:

Bonjour à tous,

Cette macro devrait effacer toutes les lignes dont la colonne H est vide
(après un test), hélas elle efface toutes les lignes, même celles qui
contiennent toujours "VRAI"... je ne vois vraiment pas où est
l'erreur...


VRAI c'est pas vide !
Si je met .Select à la place de Delete tout est sélectionné même les
lignes


VRAI... je ne comprends pas...HELP !

With Range("H11", Range("A65000").End(xlUp).Offset(0, 7))
.FormulaR1C1 = "=COUNTA(RC[-7]:RC[-2])=6"
.Value = .Value
.Replace "FALSE", ""
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With

Merci
Domi