Supprimer les lignes d'apparence vide alors qu'il y a une formule

lolodepau

XLDnaute Junior
Bonjour a tous,
je voudrais bien un coup de main pour un macro qui me permet de supprimer les lignes vides d’apparence dans un tableau ("H6:K406") car il y a une formule du type =si(X="";"";X).
Merci
 

WUTED

XLDnaute Occasionnel
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Le screenshot sert à quoi? Comme l'a suggéré précédemment phlaurent55, je pense que ton problème serait résolu depuis un moment si tu mettais un fichier en pièce jointe.
 

JNP

XLDnaute Barbatruc
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Re :),
Si tu commences à K8500, c'est que tu as des formules jusque là je suppose :rolleyes:...
Donc End(XlUp) s'arrêtera forcément à 8500 vu que si elle contient une formule, ta cellule est... non vide :p !
Donc la seule solution pour accélérer la chose, ce sera de tester d'autres méthodes qu'Evaluate en espérant que ce soit plus rapide :eek:...
A plus :cool:
 

JNP

XLDnaute Barbatruc
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Re :),
Non, réflexion faite, il y a d'autres solution comme de stocker la plage et la supprimer en une seule fois...
Si tu dis que la plupart des lignes sont dans les premières centaines, tu peux aussi faire une première boucle sans suppression et l'arrêter quand tu trouves une ligne non vide, tu supprimes depuis celle du dessous jusque à la dernière, puis tu mets une 2ème boucle qui va utiliser la suppression de départ, mais en repartant effectivement de la dernière ligne :rolleyes:
Bonne suite :cool:
 

lolodepau

XLDnaute Junior
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Dernière petite question est après je vous embête plus,
voila dans la macro si dessous je voudrais remplacer dans -For I = 8000 To 1 Step -1-
le 8000 par la valeur de la cellule A1 de l'onglet "Tn1"
de façon a quand je modifie le nombre dans la cellule A1 cela le modifie aussi directement dans la macro.
Si c'est possible.
Encore mille merci.

Sub Suppronglet1()

Dim I As Integer
Application.ScreenUpdating = False
For I = 8000 To 1 Step -1
If Evaluate("A" & I & "&B" & I & "&C" & I & "&D" & I & "&E" & I & "&F" & I & "&G" & I & "&H" & I) = "" Then
Rows(I).Delete
End If
Next I
Application.ScreenUpdating = True
End Sub
 

JNP

XLDnaute Barbatruc
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Re :),
B A BA du VBA :p...
Code:
For I = Sheets("Tn1").Range("A1") To 1 Step -1
Mais si A1 est égal à 0, un chiffre à virgule ou du texte, plantage assuré :rolleyes:...
Bye :cool:
 

lolodepau

XLDnaute Junior
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

j'ai un tableau avec en colonne A des chiffre et vide ensuite, je voudrais une fonction qui me donne le numéro de ligne aprés le dernière chiffre, du genre : Premier vide de la colonne A alors le résultat qui apparaît dans ma cellule sera 9(en fonction de l'exemple si dessous).
Voila , j’espère avoir été clair.


A
1 15
2 2
3 14
4 148
5 752
6 24
7 36
8 50
9
10
11
 

JNP

XLDnaute Barbatruc
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Re :),
SVP une âme charitable :(
Si c'était si simple, tu crois pas qu'on l'aurait intégré dès le début à la macro :rolleyes: ?
Tu redonnes un nouvel exemple, mais avant, il y avait des trous (cf ta copie d'écran)... Si dans toutes les lignes de la colonne A, il y a des chiffres jusqu'à la dernière ligne, ça fait des heures qu'on cherche la complication pour rien :eek:... Si ce n'est pas le cas, tu nous renvoies sur une fausse piste :mad:...
Bref, je passe la main :(
 

ROGER2327

XLDnaute Barbatruc
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Bonjour à tous



Bien que la situation ait l'air changeant, et que, par conséquent, je sois certainement hors de propos, voilà une proposition répondant (je l'espère) à la problématique initiale, i.e. suppression des lignes apparemment vides des colonnes A à K :​
VB:
Sub Efface_Lignes_Apparemment_Vides()
Dim i&, j&, k, s$, plg As Range
    With Application: .ScreenUpdating = False: .Calculation = xlCalculationManual: .EnableEvents = False: End With
    Set plg = Columns("A:K") 'Bloc de colonnes à traiter
    k = plg.Columns.Count
    For i = plg.Columns(1).Cells(Rows.Count).End(xlUp).Row To 2 Step -1
        For j = 1 To k: s = s & Cells(i, j).Value: Next
        If s = "" Then Rows(i).Resize(1, k).Delete shift:=xlUp Else s = ""
    Next
    With Application: .EnableEvents = True: .Calculation = xlCalculationAutomatic: .ScreenUpdating = True: End With
End Sub
Temps d'exécution : environ une minute pour traiter dix mille lignes dont les deux tiers sont vides. (Voir le classeur joint.)​



ROGER2327
#5891


Vendredi 6 Merdre 139 (Saint Cucufat, mécène - fête Suprême Quarte)
4 Prairial An CCXX, 6,1527h - angélique
2012-W21-3T14:45:59Z
 

Pièces jointes

  • XLD_184884_Suppression_des_lignes_apparemment_vides.xlsm
    355.2 KB · Affichages: 59

ROGER2327

XLDnaute Barbatruc
Re : Supprimer les lignes d'apparence vide alors qu'il y a une formule

Re...


SVP une âme charitable :(

Code:
=MAX(($A$1:$A$40<>"")*LIGNE($1:$40))+1
à valider par Ctrl Maj Entrée.
(Augmenter '40' si le nombre de données l'exige.)



ROGER2327
#5892


Vendredi 6 Merdre 139 (Saint Cucufat, mécène - fête Suprême Quarte)
4 Prairial An CCXX, 6,2853h - angélique
2012-W21-3T15:05:05Z
 

Discussions similaires

Réponses
4
Affichages
220
Réponses
11
Affichages
480

Statistiques des forums

Discussions
312 342
Messages
2 087 432
Membres
103 543
dernier inscrit
YannBernard