>>> DATABASE XLD <<< FIL RECENCEMENT FIL >> 28415 "Macro Suppression de lignes"
Bonsoir mes amis, Bonsoir Dessimoz
Bon alors d'abord je tiens à te remercier, c'est vraiment sympa ce que tu viens d'écrire et celà me montre que même si parfois après des posts interminables et des heures à passer à essayer d'interpréter au mieux ce que veut l'autre au bout du fil (de discussion j'entends !!!) et que finalement ça fini plus ou moins en queue de poisson...... Il y a une extrême satisfaction quand même grace à des gens comme toi qui prouvent qu'au bout du compte, je n'ai pas préché dans un désert de gens avides qui n'attendent que leur petite appli sans rien comprendre !!!
Pour en revenir à ce fil, je vais encore faire les rabas-joie ou encore le vieux prof enkikineur (lol) !!, si je devais te noter mon cher @Xtoph sur la macro de "DelLigneVide.xls' , tu n'aurais peut-être qu'à peine la moyenne !!!
Et oui !!! si il y a plusieurs cellule vides contigues dans ta plage (par exemple A5, A6, A7 et A8 sont vides), il faut que le user click et reclick jusqu'à ce qu'il n'y en ait plus des cellules vides !!!
Ce phénomène est dû à "EntireRow.Delete" qui, quand cette instruction est utilisée au cours d'un boucle de type "for each cell in range", finit par faire un décalage, ce qui est logique, on enlève des row alors que le "compteur" de la boucle tourne....
Pour supprimmer des lignes entières en fonction de cellules vides dans une colonne définie, voici ce qu'il faut faire et c'est vraiment on ne peut plus simple, et je suis sûr que Celeda va apprécier !! ;-)
Sub CLEAN()
Sheets("Feuil1").Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
............Et c'est tout !!!!!!!!!!!
(des codes aussi simples et efficaces çà me fait toujours penser à celui là
Sub Menu()
Application.CommandBars("Workbook tabs").ShowPopup 500, 200
End Sub
(Celeda doit s'en souvenir)
En ce qui concerne les couleurs, ta 2em macro "delcouleur2.xls", c'est exactement le même problème, il faut arriver à ne pas faire de EntireRow.Delete dans la boucle... Donc voici comment faire en modifiant ta propre macro :
Option Explicit
Sub filtreCouleur()
Dim Cell As Range
Dim NumCoul As Byte
NumCoul = Range("Num")
For Each Cell In Range("A1:A15")
If Cell.Interior.ColorIndex = NumCoul Then
Cell.ClearContents
End If
Next Cell
Sheets("Feuil1").Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Bien sûr ta macro évènementielle Worksheet_Change fait la gueule, mais le but est de te montrer comment procéder, dans la boucle on ne fait que mettre les cellule à Vide, puis on gère la suppression des vides comme indiqué précédemment...
Voilà, ceci dit c'est exactement ce principe de macro que j'utilise dans la Database XLD qui me permet de gérer les doublons de fils... Et j'ai d'ailleurs publié cette macro dans ce fil
Numéro 26004 :
Lien supprimé (voir mon post du 14-04-03 00:42)
Voilà comme çà c'est encore un fil bien rempli, alors qu'il était plutôt sensé éliminer des Lignes Dessimoz ! et du coup je le recommande en recencement Database !!
Bonne fin de Dimanche
@+Thierry