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

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é

1612800628762.png

Début
1612800727362.png

Fin

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

Merci d'avance.

Scorp
 

Pièces jointes

  • TEST.xlsm
    16.2 KB · Affichages: 8
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.

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • TEST (29).xlsm
    20.3 KB · Affichages: 2

SCORP95

XLDnaute Nouveau
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 @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.
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 883
Membres
103 015
dernier inscrit
Chris5707