Lancement d'une macro sur qques feuilles

Tony44

XLDnaute Junior
Je cherche une manière d'appliquer la macro qui s'appelle "Avancement" sur tous les onglets sauf l'onglet qui s'appelle b34 et TCD.

A savoir que le nombre d'onglet peut etre différent. Dans l'exemple, la macro doit s'appliquer sur les 6 onglets mais il peut y en avoir 10 voire plus.
 

Pièces jointes

  • Macro sur +ieurs onglets.xlsm
    20.8 KB · Affichages: 29

vgendron

XLDnaute Barbatruc
Bonjour à toi aussi...

il te suffit d'ajouter une boucle
for each ws in worksheets
if ws.name = "b34" or ws.name="TCD" then exit sub
lancer macro
next ws

en fait. cette boucle te fait sortir direct...
essai plutot ca
VB:
Sub avancement()
For Each ws In Worksheets
    If ws.Name <> "b34" And ws.Name <> "TCD" Then
        ws.Activate
        Range("D3").Select
        Selection.FormulaR1C1 = "% Avancement"

        Columns("D:D").ColumnWidth = 12.57
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
   
        'Permet de se placer automatiquement sur le ligne "Total général"
        Range("A1").Select
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
        Selection.End(xlUp).Select
   
        ' se place automatiquement sur la dernière ligne de la colonne % Avancement
        ActiveCell.Offset(0, 3).Select
   
    ' applique le formule en reculant d'1 case et en la divisant par 2 cases précédente.
        ActiveCell.FormulaR1C1 = "=RC[-1]/RC[-2]"
        Selection.Style = "Percent"
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
    End If
Next ws
End Sub
 
Dernière édition:

Tony44

XLDnaute Junior
Bonjour à toi aussi...

il te suffit d'ajouter une boucle
for each ws in worksheets
if ws.name = "b34" or ws.name="TCD" then exit sub
lancer macro
next ws

en fait. cette boucle te fait sortir direct...
essai plutot ca
VB:
Sub avancement()
For Each ws In Worksheets
    If ws.Name <> "b34" And ws.Name <> "TCD" Then
        ws.Activate
        Range("D3").Select
        Selection.FormulaR1C1 = "% Avancement"

        Columns("D:D").ColumnWidth = 12.57
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
 
        'Permet de se placer automatiquement sur le ligne "Total général"
        Range("A1").Select
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
        Selection.End(xlUp).Select
 
        ' se place automatiquement sur la dernière ligne de la colonne % Avancement
        ActiveCell.Offset(0, 3).Select
 
    ' applique le formule en reculant d'1 case et en la divisant par 2 cases précédente.
        ActiveCell.FormulaR1C1 = "=RC[-1]/RC[-2]"
        Selection.Style = "Percent"
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
    End If
Next ws
End Sub
 

vgendron

XLDnaute Barbatruc
Hello phlaurent

Suis allé voir rapidement l'autre post.....
et je pense que ce qui "bug", c'est le fait que la macro ne travaille pas sur la bonne feuille...
il te manque (en attendant d'améliorer ton code) la ligne suivante: (je m'adresse à Tony bien sur :-D )
ws.activate
 

Tony44

XLDnaute Junior
Hello phlaurent

Suis allé voir rapidement l'autre post.....
et je pense que ce qui "bug", c'est le fait que la macro ne travaille pas sur la bonne feuille...
il te manque (en attendant d'améliorer ton code) la ligne suivante: (je m'adresse à Tony bien sur :-D )
ws.activate
oui c'est ce que j'ai cru voir.
je débute en peu dans le vba, j'ai pas encore tte ton expertise ou celle de Philippe.

en tt cas merci bien a vous 2. ça résoud un pb sur lequel je me creuse la tête depuis plus d'1 jour.
 

Discussions similaires

Statistiques des forums

Discussions
312 023
Messages
2 084 716
Membres
102 636
dernier inscrit
TOTO33000