XL 2010 VBA - Macro avec postion des feuilles

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 !
 

vgendron

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

Banjounet

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

vgendron

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

Discussions similaires

Réponses
7
Affichages
312
Réponses
2
Affichages
912

Statistiques des forums

Discussions
312 083
Messages
2 085 188
Membres
102 809
dernier inscrit
Sandrine83