JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 19 sept. 2007 à 15:56
Moi j'ai trouvé ça
Sub ColorForum()
Dim I, s As Worksheet
For Each s In Worksheets
s.Select
Garde_S = s.Name
For I = 1 To Names.Count If Left(Names(I).Name, 9) "Retri_CR_" And Range(Names(I)).Worksheet.Name Garde_S Then
With Range(Names(I).Name).Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
End If
Next
Next
End Sub
Cliquer "Réponse Acceptée" Quand Réponse OK
JML. Partageons notre savoir et nos acquis
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 19 sept. 2007 à 15:59
En fait le truc c'est que tu n'as pas besoin de sélectionner la cellule dans la mesure ou
"Range(Names(I)).Worksheet.Name = Garde_S" vérifie que tu n'as pas changé d'onglet
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 19 sept. 2007 à 14:11
Bonjour,
Je ne comprends pas pourquoi tu balayes toutes les feuilles alors que tu écrits "Malheureusement, j'ai vraiment besoin de n'avoir que les noms des plages de cellules de l'onglet seulement et pas ceux de tout le classeur"
Mais bon ! J'ai pas testé mais ça devrait être quelque chose comme ça
Sub ColorForum()
Dim r AsVariant
Dim s As Worksheet
For Each s In Worksheets
s.Select
Garde_S = s.Name
ForEach r In s.Names
If r.NameLike"Retri_CR_*" And ActiveSheet.Name = Garde_S Then
With range(r.Name).Interior
.ColorIndex = 40
.Pattern = xlSolid
EndWith
EndIf
Next
Next
EndSub
Cliquer "Réponse Acceptée" Quand Réponse OK
JML. Partageons notre savoir et nos acquis
salley
Messages postés34Date d'inscriptionlundi 5 mai 2003StatutMembreDernière intervention19 septembre 2007 19 sept. 2007 à 15:27
Merci pour ta réponse [auteurdetail.aspx?ID= 1017721 JM247L]
En fait j'ai volontairement simplifié le code pour faire comprendre plus facilement mon problème car à l'intérieur de ma boucle For Each s In Worksheets j'utilise des fonctions qui ont besoin d'avoir un onglet sélectionner.
J'ai finalement trouvé la solution à mon pb, il fallait juste (ci-dessous) que j'aille sur mon "names" grâce au code: application.Goto Reference: =r.Name.
RMQ: Je ne pense pas qu'on puisse utiliser directement
For Each r In activesheet.Names car les "Names" sont reliés directement au classeur et non à l'onglet.
Cela donne donc:
Sub ColorForum()
Dim r AsVariant
Dim s As Worksheet
For Each r In ActiveWorkbook.Names
If r.Name Like "RETRI_CR_*" Then
application.Goto Reference:=r.Name
ActiveSheet.Select 'Select the Activ
With range(r.Name).Interior
.ColorIndex = 40
.Pattern = xlSolid
EndWith
EndIf
Next
EndSub
Merci
Salley
Vous n’avez pas trouvé la réponse que vous recherchez ?