XL 2010 VBA - Macro avec postion des feuilles

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 !

Banjounet

XLDnaute Nouveau
Bonjour à tous,

J'ai une macro qui me permet, selon le nom des feuilles, d'appliquer une formule, sous une condition, dans une plage. Cette macro s'applique sur certaines feuilles, en en excluant selon leurs noms :

Code:
Sub MAJCouleurs()
Application.ScreenUpdating = False
Dim c As Range
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "FeuilA" And ws.Name <> "FeuilB" And ws.Name <> "FeuilC"  Then
'Formule remplissage des lignes blanches. Couleurs = 16777214
Dim LigneBlanche
LigneBlanche = "=IF(OR(RC13=""AGPRO"",RC13=""AGTEC"",RC13=""AGING"",RC13=""AGAPP""),0,RC[-2])"
'Remplissage colonne S
For Each c In ws.Range("T1:U250")
If c.Interior.Color = 16777214 Then c.Formula = LigneBlanche
Next c
End If
Next ws
End Sub

Cependant, le fichier va être repris par d'autres personnes, et les noms des feuilles risque donc de changer... Par consequent j'aimerais modifier la macro pour que la position des feuilles soit prise en compte (la macro doit s'appliquer sur les feuilles de la 12e à 17e position) et non plus le nom. Mais le problème est que je ne sais pas faire ça 🙁

Pouvez vous m'aider ?

Merci d'avance pour vos réponse !
 
Hello

regarde ce bout de code à adapter
VB:
Sub test()
For i = 1 To Sheets.Count 'parourt de toutes les feuilles de ton classeur
    If i = 3 Then Sheets(i).Range("A1") = "test" 'test sur le numéro de la feuille
Next i
End Sub
dans ton cas, tu peux faire directement la boucle de i=12 to 17
 
Code:
Sub MAJCouleurs()
Application.ScreenUpdating = False
    ActiveWorkbook.RefreshAll


Dim LigneBlanche
LigneBlanche = "=IF(OR(RC13=""AGPRO"",RC13=""AGTEC"",RC13=""AGING"",RC13=""AGAPP""),0,RC[-2])"

For i = 12 To Sheets.Count
If i >= 12 Then

Dim c As Range
For Each c In i.Range("T1:U250")
      If c.Interior.Color = 16777214 Then c.Formula = LigneBlanche
Next c
End If
Next i

End Sub

J'en suis à ça. J'ai un soucis maintenant sur la ligne "For each c..."
 
sans ton fichier pour tester , un essai
VB:
Sub MAJCouleurs()
Application.ScreenUpdating = False
    ActiveWorkbook.RefreshAll


Dim LigneBlanche
LigneBlanche = "=IF(OR(RC13=""AGPRO"",RC13=""AGTEC"",RC13=""AGING"",RC13=""AGAPP""),0,RC[-2])"

For i = 12 To Sheets.Count
If i >= 12 Then

Dim c As Range
For Each c In sheets(i).Range("T1:U250")
      If c.Interior.Color = 16777214 Then sheets(i).c.Formula = LigneBlanche
Next c
End If
Next i

End Sub

ou alors plutot ceci
VB:
Sub MAJCouleurs()
Application.ScreenUpdating = False
ActiveWorkbook.RefreshAll
Dim c As Range
Dim LigneBlanche
LigneBlanche = "=IF(OR(RC13=""AGPRO"",RC13=""AGTEC"",RC13=""AGING"",RC13=""AGAPP""),0,RC[-2])"
For i = 12 To Sheets.Count
    With Sheets(i)
        For Each c In .Range("T1:U250")
            If c.Interior.Color = 16777214 Then c.Formula = LigneBlanche
        Next c
    End With
Next i
End Sub
 
- 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
7
Affichages
533
Retour