Harmonisation tableau

Bonjour,

Je bloque sur un code qui me semble très simple.

Je mets un fichier excel pour que vous ayez la disposition des tableaux.

Le plus simple est de l'ouvrir et vous allez directement comprendre ce que je souhaite faire.

J'aimerais aligner mes [N°] au même niveau, le problème est que j'ai des cellules fusionnés qui perturbe la disposition de mon tableau. J'utilise Unmerge mais des cellules blanches sont crée et c'est la que je bloque.

Ça doit être un truc évident mais je n'arrive pas à avoir la logique.

Merci d'avance pour toute aide.

Cordialement.

6forum.xlsm (23.38 Ko)

PS : j'ai oublié de préciser qu'il peut y avoir un très grand nombre de tableau

Bonjour,

Ça doit être un truc évident mais je n'arrive pas à avoir la logique.

La logique est simple, quand on défusionne, seule la cellule en haut à gauche comportera le contenu des cellules fusionnées. Et les autres deviendront blanches !

Je te propose un bout de VBA pour y remédier

Sub test()

    'Enlève la fusion sur l'ensembles des cellules de la table
    Sheets("TABLE").Cells.UnMerge

    'Décale des blocs de 4 colonnes vers le haut si la première de ces 4 colonnes est vide
    lCol = Sheets("TABLE").Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 1 To lCol Step 5
    If Sheets("TABLE").Cells(2, i).Value = "" Then

    lLig = Sheets("TABLE").Cells(Rows.Count, i).End(xlUp).Row
    Range(Sheets("TABLE").Cells(3, i), Sheets("TABLE").Cells(lLig, i + 3)).Copy
    Sheets("TABLE").Cells(2, i).PasteSpecial xlPasteValues

    'Supprime le contenu de la dernière ligne
    Range(Sheets("TABLE").Cells(lLig, i), Sheets("TABLE").Cells(lLig, i + 3)).ClearContents
    Range(Sheets("TABLE").Cells(lLig, i), Sheets("TABLE").Cells(lLig, i + 3)).Borders(xlEdgeLeft).LineStyle = xlNone
    Range(Sheets("TABLE").Cells(lLig, i), Sheets("TABLE").Cells(lLig, i + 3)).Borders(xlEdgeBottom).LineStyle = xlNone
    Range(Sheets("TABLE").Cells(lLig, i), Sheets("TABLE").Cells(lLig, i + 3)).Borders(xlEdgeRight).LineStyle = xlNone
    Range(Sheets("TABLE").Cells(lLig, i), Sheets("TABLE").Cells(lLig, i + 3)).Borders(xlInsideVertical).LineStyle = xlNone
    Range(Sheets("TABLE").Cells(lLig, i), Sheets("TABLE").Cells(lLig, i + 3)).Borders(xlInsideHorizontal).LineStyle = xlNone
    End If
    Next i
    ''''
End Sub

Et bien je vous remercie tous les deux de votre aide.

Effectivement c’était très logique.

Le code marche exactement comme je le souhaite.

Merci beaucoup.

Rechercher des sujets similaires à "harmonisation tableau"