Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Macro : création d'une boucle avec tableau

  • Initiateur de la discussion Initiateur de la discussion SCORP95
  • Date de début Date de début

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 !

SCORP95

XLDnaute Nouveau
Bonjour à tous !

Je bloque sur la mise en place d'une boucle. Dans le fichier ci-joint, il y a un tableau 4 colonnes.
Je souhaitais créer une boucle qui permette de vérifier pour chaque ligne du tableau si la première cellule ( colonne "date") est vide. Si elle est non vide, alors on passe à la ligne suivante. Si elle est vide, alors on va sur la seconde cellule de la ligne ( colonne " libellé de l'opé ") , coupe l'ensemble des données et la rajoute dans la cellule juste au-dessus. [ On part du principe que la première cellule de la première ligne est forcément non nul] . Puis, répéter l'opération, jusqu'à à la dernière ligne du tableau. Voici un exemple imagé


Début

Fin

Si un connaisseur pouvez m'aider, ce serait super aimable !

Merci d'avance.

Scorp
 

Pièces jointes

Solution
Bonsoir Scorp,
Un essai en PJ avec :
VB:
Sub Compresse()
    Application.ScreenUpdating = False      ' Fige écran
    DL = Range("C65500").End(xlUp).Row      ' Calcul dernière ligne
    For L = DL To 6 Step -1                 ' pour toutes les lignes
        If Cells(L, "B") = "" Then          ' Si B est vide
            Cells(L - 1, "C") = Cells(L - 1, "C") & "  [ " & Cells(L, "C") & " ]"
            Cells(L, "B").EntireRow.Delete  ' On supprime la ligne
        End If
    Next L
End Sub
Si la matrice est vraiment très grande, alors il faut passer par des arrays pour accélérer. Plus complexe mais plus rapide.
Bonsoir Scorp,
Un essai en PJ avec :
VB:
Sub Compresse()
    Application.ScreenUpdating = False      ' Fige écran
    DL = Range("C65500").End(xlUp).Row      ' Calcul dernière ligne
    For L = DL To 6 Step -1                 ' pour toutes les lignes
        If Cells(L, "B") = "" Then          ' Si B est vide
            Cells(L - 1, "C") = Cells(L - 1, "C") & "  [ " & Cells(L, "C") & " ]"
            Cells(L, "B").EntireRow.Delete  ' On supprime la ligne
        End If
    Next L
End Sub
Si la matrice est vraiment très grande, alors il faut passer par des arrays pour accélérer. Plus complexe mais plus rapide.
 

Pièces jointes

Bonsoir @sylvanu,

Franchement...

Vous êtes un génie !!! 1000 mercis pour votre rapidité. La Macro est juste superbe et pour la petite suppression de ligne vide, vous avez lu dans mes pensées 😉

Belle soirée.
 
- 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

Réponses
9
Affichages
393
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…