Boucle pour mise en forme de tableaux

Tony44

XLDnaute Junior
Bonjour,

j'ai un feuille dans laquelle j'ai plusieurs petits tableaux qui se suivent et qui sont séparés d'un ligne vierge.

j'ai créé une macro de mise en forme qui permet de mettre en forme chaque tableau lorsque je suis positionné dessus.

je souhaite créer une boucle qui dirait qu'à chaque fois qu'il trouve un tableau, la boucle applique la macro de mise en forme.

merci pour votre aide.
le tableau est en pièce jointe
 

Pièces jointes

  • Boucle.xlsm
    285.5 KB · Affichages: 21

Dudu2

XLDnaute Barbatruc
Bonjour,
Essaie un truc comme ça...
VB:
Sub Boucle_Mise_en_forme()
    Dim Cellule As Range
    Const LigneVideAvantPremierTableau = 6
    Const ColonneFamille = 1
    
    For Each Cellule In ActiveSheet.Cells(LigneVideAvantPremierTableau, ColonneFamille).Resize(Rows.Count - LigneVideAvantPremierTableau)
        If IsEmpty(Cellule) Then
            If Not IsEmpty(Cellule.Offset(1, 0)) Then
                Cellule.Offset(1, 0).Select
                Call Mise_en_forme
            Else
                Exit For
            End If
        End If
    Next Cellule
End Sub
 

Dudu2

XLDnaute Barbatruc
Ah oui, personnellement je les ai découvertes avec étonnement.

La Macro dit:
- Pour chaque cellule de la feuille active qui va de la ligne 6 à la dernière ligne de la feuille dans la colonne 1
- Si la cellule est vide et que la suivante ne l'est pas:
- Sélectionner la suivante et appliquer la mise en forme
- Si la cellule est vide et que la suivante l'est aussi :
- Sortir de la boucle (arrêt du traitement)
 
Dernière édition:

chris

XLDnaute Barbatruc
RE

Une variante si c'est le Code Famille qui détermine l'angle du tableau
VB:
Sub Mise_en_Forme()
    Dim Coin As Range, Prem As String
    Set Coin = ActiveSheet.Range("A:A").Find("Code Famille")
    If Not Coin Is Nothing Then Prem = Coin.Address Else Exit Sub
    Do
        Coin.AutoFormat Format:=xlRangeAutoFormatSimple, Number:=True, _
            Font:=True, Alignment:=False, Border:=True, Pattern:=True, Width:=False
        Set Coin = ActiveSheet.Range("A:A").FindNext(Coin)
    Loop While Not Coin Is Nothing And Prem <> Coin.Address
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 369
Membres
102 875
dernier inscrit
Jimbo2374