Macro pour supprimé les lignes avec des cellules vides

  • Initiateur de la discussion Dessimoz
  • Date de début
D

Dessimoz

Guest
bonjour,
besoin d'un renseignement : savoir si il exite une macro pour suprimé les lignes à partir des cellules vides d'une colonne exemple :
colonne A vous avez des chiffre de 1 à 10 (donc 10 ligne)
si j'enlève le chiffre 5 et 7. il y a toujours 10 lignes... mais comment faire pour que les lignes s'effaces ? comme avecla fonction ctrl "-".

déjà un grand merci.

Dess
 
@

@Christophe@

Guest
Re

Coucou Celeda, ben oui, j'avais pensé faire plus dure, mais non, je ne me suis pas trop cassé la tête. Je me dis que si cela lui plait, c'est super, aussi non, on verra pour améliorer, lol

J'ai fais la même choses il ya un petit temps, mais pour supprimer des cellule de couleur(voir fichier joint).

Dire que je dois tous mon savoir complètement a XLD et en grand partie gràce a Thierry, que je remercie au passage.

Voila

Bonne soirée

@Christophe@
 

Pièces jointes

  • delcouleur2.xls
    34 KB · Affichages: 109
@

@+Thierry

Guest
>>> 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
 
@

@Christophe@

Guest
Re

Merci Thierry, je ne connaissais pas du tous ce code:

Sheets("Feuil1").Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

qui est vraiment super pratique, comme quoi j'ai encore beaucoup a apprendre, lol

Bonne soirée et un grand merci Thierry

@Christophe@

P.S. Je suis sur que Celeda va adoré ce code, lol
 
C

Celeda

Guest
Bonsoir

Bon ok je m'apprêtais à dire à Cricri plein de douceurs mais je fus arrêtée dans mon élan quant je vis ton post Thierry (bien que je trouve Cricri super cute et tout plein de fondant comme les friandises dans la bouche!).

Et j'ai préféré me reporter sur ce proverbe chinois qui nous dit :
Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres.

Et je pense que tu nous enseignes à enlever les petites pierres les unes aprés les autres,Thierry, mais y arrivera-t-on à la déplacer cette VBA et te faire monter en haut de la montagne en guise de remerciement ?

Thanks Monsieur Thierry. Je prends bonne note de toutes les rectifs.
Thanks a lot Christophe.

Celeda
 
@

@Christophe@

Guest
Re

Petite info pour Thierry,

Sache que j'ai bien réfléchi, et je te donne 100% raison pour ta boucle, qui saute une cellule si elle se suive.

Pour le delete d'une ligne vide, ta méthode est la meilleur, mais pour le systeme de couleur, j'aime pas trop le cell.clearcontent pour ensuite la repérer et la deleté de la même façon qu'une cellule vide, alors, j'ai pensé a la solution suivante, en esperon monté ma moyenne, rire

Sub filtreCouleur()
Dim Cell As Range

Start:
For Each Cell In Range("A1:A15")
If Cell.Interior.ColorIndex = 5 Then
Cell.EntireRow.Delete
GoTo Start
End If
Next Cell
End Sub

Quand penses tu, j'espère avoir un petit 8/10 cette fois si, lol

Bonne soirée

@Christophe@
 
@

@+Thierry

Guest
Grrrrrrrrrrr

Tu es fou !!!

Tu lis ce que tu écris ou tu rigoles ?, Tu as essayé sur une vraie plage de 1000 ou 10000 cellules !!!!!!!!

Tu es entrain de faire boucler en boucle avec ta balise qui renvoie au début, fait çà sur une plage de........... A1:A10000 !!!!!!!!!! Et BOUM !!!

Mdrr

Pfff 8/10 !!! non non non !!!

Bonne Nuit
@+Thierry
 
@

@Christophe@

Guest
Re

Ah bon

Ben j'ai essayé sur une plage de 15, pas plus, mais c'est vrai que j'ai pas pensé a une plage de 10000, boucle sur boucle.

Avec mon P4 cela peut peux être aller, rire

Mais tu as à nouveau raison, bonne solution, mais limité a de petite plage

Merci Thierry

@Christophe@
 
D

dj.run

Guest
Bonjour à toutes et à tous,

moi je me régale à lire vos posts, et je suis "vert" quand je vois avec quelle facilité vous manipulez le VBA .

rassurez moi ça fait combien d'année que vous "jouez" avec ça ??

moi qui croyais être bon avec Excel !! quand j'ai découvert le VBA et surtout XLD je me sens tout mais alors tout petit .

j'ai encore beaucoup de travail pour vous arriver juste à la cheville (pas plus haut) lol .

bonne journée à tous

dj.run
 
F

Fredr

Guest
Re: >>> DATABASE XLD <<< FIL RECENCEMENT FIL >> 28415 "Macro Suppression de lignes"

Merci pour cette instruction que je ne connaissais pas.
Attention toutefois : s'il n'y a pas de ligne vide un message d'erreur est affiché (erreur 1004), du genre "je n'ai rien trouvé", du coup un "on resume next" s'impose.
 

Discussions similaires

Statistiques des forums

Discussions
314 162
Messages
2 106 591
Membres
109 632
dernier inscrit
koetz