Suppression d'une ligne dans un tableau en VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nadir****

XLDnaute Occasionnel
Bonjour.

J'ai un tableau fixe (D9:H19)
Je voudrais supprimer les lignes de ce tableau dont la première cellule (dans la colonne D) est égale à 0.
Par contre je ne veux pas toucher au reste de la feuille.

Je débute en VBA et bien évidemment, rien ne marche.

Merci à une âme charitable.

PS. peut-on faire la même chose avec un tableau de taille inconnu ?

Merci.
 
Re : Suppression d'une ligne dans un tableau en VBA

Bonjour Nadir****,

Tu veux une réponse toute faite? Ou en profiter pour progresser?

Si tu optes pour la seconde solution :
-> cliquer sur "outils" / "Macros..." / "Nouvelle macro"
-> dans la fenêtre qui s'ouvre "Titre : Enregistrer une macro"
----> dans la zone Nom de la macro : mettre un nom parlant à ta macro (ne pas mettre d'espace - par contre tu as le droit aux majuscules)
----> dans la zone "Touche de raccourci" : pas la peine de répondre
----> dans la zone "Enregistrer la macro dans", s'assurer que le texte écrit juste dessous soit : "Ce classeur"
----> dans la zone "Description" : tu peux te lâcher, tu as le droit aux espaces, majuscules, signes, ... (il faut dire ce que ta macro est censé faire)

Puis cliquer sur Ok.

Ensuite, effectue les opérations que tu veux que la macro fasse
-> sélectionner les cellules ... de la ligne ....
-> effacer ces cellules : "Edition" / "Supprimer..." / "Décaler les cellules vers le haut"
-> sélectionner les cellules ... de la ligne ....
-> effacer ces cellules : "Edition" / "Supprimer..." / "Décaler les cellules vers le haut"
-> ...

Puis cliquer sur le bouton "Arrêt" pour arrêter la macro.

Ca y est, tu as fais ta première macro. Excel a traduit automatiquement et au fur à mesure tout ce que tu as fais en VBA.

Maintenant si tu lance la macro : "outils" / "Macros..." / "Macro"
-> sélectionner ta macro dans la liste puis cliquer sur "Exécuter" pour la lancer.

Evidement, me diras-tu, pour l'instant ta macro ne prend pas en compte si la cellule ... contient un 0 ou non. Mais on verra cela après.

Idem pour le fait : "gérer un tableau de taille variable".

D'abord, tu clic sur "ALT" + "F11" et tu vois ta macro dans la nouvelle fenêtre.

Colle cette macro ici, ainsi nous pourrons te l'expliquer, puis seulement après nous la compliquerons au fur et à mesure pour qu'elle fasse ce que tu veux.

Plus facile à comprendre et à apprendre que si nous te donnions tout d'un coup.

A te lire

Cordialement

Edition : bonsoir Hasco
 
Dernière édition:
Re : Suppression d'une ligne dans un tableau en VBA

Merci pour cette première réponse.

En ce qui concerne les macro, je n'ai pas trop de problème.
C'est d'ailleurs en utilisant des macros que j'accède au code VBA que j'essaye de bidouiller (Oui je sais, c'est pas top, mais enfin!)

Le souci est de savoir si la première cellule est un 0 et seulement de supprimer la ligne du tableau.

Mais je suis prêt à te suivre ...
 
Re : Suppression d'une ligne dans un tableau en VBA

re Bonsoir Nadir,

Post1 nadir à dit:
Je débute en VBA et bien évidemment, rien ne marche.

Merci à une âme charitable.

1- cela suppose que tu as essayer quelque chose, mais je ne vois rien dans le fichier; à part un tableau, pas de vba

2- je ne suis pas du tout charitable et demande un minimum d'effort de la part des demandeurs.

A+ avec tes essais.
 
Re : Suppression d'une ligne dans un tableau en VBA

Bonsoir tout le monde,

nadir**** à dit:
j'essaye de bidouiller (Oui je sais, c'est pas top, mais enfin!)

On le fait tous un peu, donc t'inquiètes pas.

nadir**** à dit:
Le souci est de savoir si la première cellule est un 0 et seulement de supprimer la ligne du tableau

Procédons par ordre, tu nous envoie ta macro, nous dis ce que tu as compris, on t'explique le reste (ainsi cela te servira pour une prochaine fois 😉). Puis on te diras les lignes parasites qui ne servent à rien. Ainsi tu auras un code tout propre. Voir ton code nous permettras également de juger ton niveau et adapter notre réponse en fonction.

Et enfin après nous pourrons passer à cette étape qui te travail 😉. Tu verras c'est tout bête. Mais il faut procéder avec méthode et sans bruler les étapes.

Je sors faire un tour, mais je reviendrais faire un passage ici à mon retour au cas où Hasco (ou un autre) n'ai pu t'aider (car absent ou ...).

ATH
(A Tout à l'Heure)
 
Re : Suppression d'une ligne dans un tableau en VBA

Désolé, je suis un peu lent.
J'ai essayé de trouver comment faire apparaitre un message en 'citation'.
Comme je n'y arrive pas encore, je joins le fichier avec ma macro et je mets ci-dessous la macro.

---------------------------------------------------------------------------------
Sub Macro1()
'
' Macro1 Macro
'

'
Range("D11:H11").Select
Selection.Delete Shift:=xlUp
Range("D14:H14").Select
Selection.Delete Shift:=xlUp
Range("D16:H16").Select
Selection.Delete Shift:=xlUp
End Sub

--------------------------------------------------------------------------------
 

Pièces jointes

Re : Suppression d'une ligne dans un tableau en VBA

Re,

Sélectionne une cellule du tableau et lance la macro ci-dessous:

Code:
Sub SupprimerLignesZero()
    Dim plage As Range
    Dim i As Long
    Set plage = ActiveCell.CurrentRegion
    For i = plage.Rows.Count To 1 Step -1
    Debug.Print plage(i, 1).Address
        If plage(i, 1) = 0 Then plage.Rows(i).Delete xlShiftUp
    Next
End Sub

A+
 
Re : Suppression d'une ligne dans un tableau en VBA

Re,

Code:
Sub SupprimerLignesZero()
    Dim plage As Range
    Dim i As Long
    Set plage = ActiveCell.CurrentRegion
    For i = plage.Rows.Count To 1 Step -1
    Debug.Print plage(i, 1).Address
        If plage(i, 1) = 0 Then plage.Rows(i).Delete xlShiftUp
    Next
End Sub

Dim plage As Range = déclarer une variable pointant vers une plage de cellules

Dim i As Long = déclarer une variable qui contiendra un numérique de type Long (les numéros de ligne des feuille de calcul sont de ce type)

Set plage = ActiveCell.CurrentRegion = Définir la variable plage comme étant la région (au sens excel c-à-d bordée de colonnes et lignes vides) qui contient la cellule active

For i = plage.Rows.Count To 1 Step -1 = Parcourir la plage de cellules à partir de la dernière ligne (Plage.Rows.Count) jusqu'à la première en décrémentant d'une ligne à chaque boucle.

If plage(i, 1) = 0 Then plage.Rows(i).Delete xlShiftUp = si la cellule de la plage qui correspond à la ligne i et la colonne 1 de cette plage = 0 alors la supprimer en décalant les suivantes vers le haut.

Pour plus de détails: l'aide en ligne de l'éditeur de macro fait merveille.

A+
 
Re : Suppression d'une ligne dans un tableau en VBA

Salut Hasco et le forum,
Je fais pas mal de macro pour differentes personnes. Ces macro fonctionnent tres bien, mais je me rends compte sur ce forum (et ailleurs), que vous utilisez tous des DIM plage as Range, des SET, en declaration de varaiables. Meme si je comprend le principe de ces instructions, je n'en vois pas l'interet. Autodidacte, je n'ai suivi aucun cours et donc je ne comprends pas pourquoi declarer les variables, du moins dans la plupart des macro que je vois (certaines macro sont hors de ma portee).
Pourrais-tu m'expliquer Stp ?
Suerte
Croco
 
Re : Suppression d'une ligne dans un tableau en VBA

Bonjour Croco,

1 - Lorsque tu crées une macro, elle est "Compilée", c'est à dire traduite en langage machine par le moteur VB. Déclarer les variables permet à ce même moteur de prévoir, l'espace mémoire nécessaire à chaque variable suivant son type, au moment de cette compilation. Les performances s'en trouve accrues tant en terme d'efficacité que de temps d'exécution. Et s'il y a erreur elle t'est signalée par un message avant que la macro ne soit compilée.

2 - Si ton application comporte plusieurs (voire beaucoup) de variables, procédures et fonctions. Cela permet un débogage plus facile, savoir où et quand la variable est modifiée. Et rend le programme plus lisible dans le temps: tu sais, plusieurs mois(voire années) après quel type de valeur attent telle ou telle variable. La maintenance s'en trouve facilitée. Dans ces applications complexes, le point 1 trouve toute sa valeur.

3 - Bref, cela te donne un code plus "propre".

A+

[Edit]
croco à dit:
Meme si je comprend le principe de ces instructions, je n'en vois pas l'interet

Vu que tu as quitté le forum sans même me répondre et vu la qualité rédationnelles de certains de tes messages, j'en conclue que de la chartre du forum tu ne voies pas non plus l'intérêt.
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour