Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Selection de feuille

10 réponses
Avatar
JLuc
Bonsoir les lecteurs,
J'ai une liste de nom de feuille en colonne A . Pas le nom des
feuilles, mais les CodeName.
Dans une une boucle For s Each In Range("A1:A10"), comment faire pour
selectionner la feuille ?
le code : s.Select ne passe pas :/
J'ai une erreur 1004 : La méthode Select de la classe Range à échoué
Merci pour vos reponses

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-\O

10 réponses

Avatar
ru-th
Salut

pas le plus pratique par le codename en variable
un exemple (trop tard pour creusé plus longtemps)
Sub test()
e = "Feuil2"
For i = 1 To Sheets.Count
If Sheets(i).CodeName = e Then
Sheets(i).Select
GoTo suite
End If
Next
suite:

End Sub

a+
rural thierry

Bonsoir les lecteurs,
J'ai une liste de nom de feuille en colonne A . Pas le nom des feuilles,
mais les CodeName.
Dans une une boucle For s Each In Range("A1:A10"), comment faire pour
selectionner la feuille ?
le code : s.Select ne passe pas :/
J'ai une erreur 1004 : La méthode Select de la classe Range à échoué
Merci pour vos reponses



Avatar
cousinhub
Bonsoir, essaie :

For Each x In [a1:a10]
Worksheets("" & x & "").Activate

Bonne soirée

Bonsoir les lecteurs,
J'ai une liste de nom de feuille en colonne A . Pas le nom des feuilles,
mais les CodeName.
Dans une une boucle For s Each In Range("A1:A10"), comment faire pour
selectionner la feuille ?
le code : s.Select ne passe pas :/
J'ai une erreur 1004 : La méthode Select de la classe Range à échoué
Merci pour vos reponses



Avatar
MichDenis
'-----------------------------------
Sub Codename1()
Dim C As Range, NomOnglet As String
On Error Resume Next
'Adapte le nom de la feuille et la plage de cellules
'où sont tes codename
For Each C In Worksheets("Feuil1").Range("A1:A10")
NomOnglet = Worksheets(ThisWorkbook.VBProject. _
VBComponents(C.Value).Properties("Index")).Name
If Err = 0 Then
Worksheets(NomOnglet).Select
Else
Err.Clear
End If
Next
End Sub
'-----------------------------------



"JLuc" a écrit dans le message de news:

Bonsoir les lecteurs,
J'ai une liste de nom de feuille en colonne A . Pas le nom des
feuilles, mais les CodeName.
Dans une une boucle For s Each In Range("A1:A10"), comment faire pour
selectionner la feuille ?
le code : s.Select ne passe pas :/
J'ai une erreur 1004 : La méthode Select de la classe Range à échoué
Merci pour vos reponses

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O
Avatar
LSteph
Bonjour JLuc,

Autant le CodeName est commode dans le code, autant pas dans la feuille
mais ça c'est déjà répondu.

J'y vois autre chose:
(à moins que ce ne soit un cas d'école par rapport à l'objectif)

Peux tu préciser selon quel contexte tu aurais besoin de les
sélectionner ainsi une par une.
Car à la fin d'une telle boucle on est sur la dernière feuille
de la liste, on aurait pu y aller directement.
Mon, pourtant très faible, neurone de perspicacité, n'arrête pas de me
lancer des alertes en me disant
qu'entre chaque select, on doit faire quelquechose qui se pourrait
également sans Select sur chaque feuille.
Exemple ici en remplaçant call traitement(sh) par un msgbox

Dim Sh as worksheet, c as range
For each c in [a1:a10].cells
For each sh in ActiveWorkbook.worksheets
if Sh.CodeName=c then Msgbox Sh.Name
next sh
next c


'Cdlt

'LSteph
Bonsoir les lecteurs,
J'ai une liste de nom de feuille en colonne A . Pas le nom des feuilles,
mais les CodeName.
Dans une une boucle For s Each In Range("A1:A10"), comment faire pour
selectionner la feuille ?
le code : s.Select ne passe pas :/
J'ai une erreur 1004 : La méthode Select de la classe Range à échoué
Merci pour vos reponses



Avatar
JLuc
*Bonjour LSteph*,

Peux tu préciser selon quel contexte tu aurais besoin de les sélectionner
ainsi une par une.


C'était justement pour éviter une boucle sur toutes les feuilles. Je
mets au point (enfin, j'éssaie) un code pour ALF avec une macro
Workbook_SheetChange qui doit tourner seulement sur quelques feuilles.
Pour éviter les changements de nom d'une feuille, je voulais mettre en
colonne A d'une feuille "Config" les CodeName des feuilles à traiter,
et en colonne B les noms des feuilles à ne pas traiter. A chaque fois
que j'active une feuille, je controle si son nom est présent dans une
des liste, si oui, je fais rien, si non alors je demande si la feuille
devra être traitée par la macro ou pas pour savoir dans quelle liste je
la met.
Donc, tant pis ! Je mettrais les noms d'onglet.
Merci à tous pour votre aide même si çà ne débouche sur rien de
favorable :oÞ

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
cousinhub
Bonsoir,
Merci à tous pour votre aide même si çà ne débouche sur rien de
favorable :oÞ
micro-climat?;-)


mon code, ainsi que celui de MichDenis fonctionnent parfaitement!
Bonne soirée

*Bonjour LSteph*,

Peux tu préciser selon quel contexte tu aurais besoin de les
sélectionner ainsi une par une.


C'était justement pour éviter une boucle sur toutes les feuilles. Je
mets au point (enfin, j'éssaie) un code pour ALF avec une macro
Workbook_SheetChange qui doit tourner seulement sur quelques feuilles.
Pour éviter les changements de nom d'une feuille, je voulais mettre en
colonne A d'une feuille "Config" les CodeName des feuilles à traiter, et
en colonne B les noms des feuilles à ne pas traiter. A chaque fois que
j'active une feuille, je controle si son nom est présent dans une des
liste, si oui, je fais rien, si non alors je demande si la feuille devra
être traitée par la macro ou pas pour savoir dans quelle liste je la met.
Donc, tant pis ! Je mettrais les noms d'onglet.
Merci à tous pour votre aide même si çà ne débouche sur rien de
favorable :oÞ




Avatar
JLuc
*Bonjour cousinhub*,
Ne te méprends pas sur mes propos cher cousin,
je n'ai pas dis qu'ils ne fonctionnaient pas, mais qu'ils ne me
convennaient pas ;-) Je ne veux pas faire de boucle sur toutes les
feuilles en vérifiant le CodeName.
J'avais esperé qu'il y aurai quelquechose comme :
Object(Range("A1")).Select
où il y aurai le CodeName dans A1 ;o)
Mais apparement, ce n'est pas le cas vu que vous passez tous par une
boucle
Il faut reconnaitre que tous vos codes sont excelent :oÞ et je n'en
attendais pas moins de vous , seulement un petit peu plus :')
Aller, sans rancune :-*

Bonsoir,
Merci à tous pour votre aide même si çà ne débouche sur rien de favorable
:oÞ
micro-climat?;-)


mon code, ainsi que celui de MichDenis fonctionnent parfaitement!
Bonne soirée

*Bonjour LSteph*,

Peux tu préciser selon quel contexte tu aurais besoin de les sélectionner
ainsi une par une.


C'était justement pour éviter une boucle sur toutes les feuilles. Je mets
au point (enfin, j'éssaie) un code pour ALF avec une macro
Workbook_SheetChange qui doit tourner seulement sur quelques feuilles.
Pour éviter les changements de nom d'une feuille, je voulais mettre en
colonne A d'une feuille "Config" les CodeName des feuilles à traiter, et en
colonne B les noms des feuilles à ne pas traiter. A chaque fois que
j'active une feuille, je controle si son nom est présent dans une des
liste, si oui, je fais rien, si non alors je demande si la feuille devra
être traitée par la macro ou pas pour savoir dans quelle liste je la met.
Donc, tant pis ! Je mettrais les noms d'onglet.
Merci à tous pour votre aide même si çà ne débouche sur rien de favorable
:oÞ




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
MichDenis
Et ça monsieur, ça ressemble à quoi

avec le codename d'une feuille dans A1

Une ligne de code écrite sur 2 lignes....
'--------------------------
Worksheets(Worksheets(ThisWorkbook.VBProject. _
VBComponents(Range("A1").value).Properties("Index")).Name).Select
'--------------------------

Mais difficile de présenter cela sans faire de boucle sur tu veux
sélectionner toutes les feuilles d'une plage de cellule à tour de rôle !

Sois gentil où M devra retenir le cadeau un peu plus longtemps
;-)))





"JLuc" a écrit dans le message de news:

*Bonjour cousinhub*,
Ne te méprends pas sur mes propos cher cousin,
je n'ai pas dis qu'ils ne fonctionnaient pas, mais qu'ils ne me
convennaient pas ;-) Je ne veux pas faire de boucle sur toutes les
feuilles en vérifiant le CodeName.
J'avais esperé qu'il y aurai quelquechose comme :
Object(Range("A1")).Select
où il y aurai le CodeName dans A1 ;o)
Mais apparement, ce n'est pas le cas vu que vous passez tous par une
boucle
Il faut reconnaitre que tous vos codes sont excelent :oÞ et je n'en
attendais pas moins de vous , seulement un petit peu plus :')
Aller, sans rancune :-*

Bonsoir,
Merci à tous pour votre aide même si çà ne débouche sur rien de favorable
:oÞ
micro-climat?;-)


mon code, ainsi que celui de MichDenis fonctionnent parfaitement!
Bonne soirée

*Bonjour LSteph*,

Peux tu préciser selon quel contexte tu aurais besoin de les sélectionner
ainsi une par une.


C'était justement pour éviter une boucle sur toutes les feuilles. Je mets
au point (enfin, j'éssaie) un code pour ALF avec une macro
Workbook_SheetChange qui doit tourner seulement sur quelques feuilles.
Pour éviter les changements de nom d'une feuille, je voulais mettre en
colonne A d'une feuille "Config" les CodeName des feuilles à traiter, et en
colonne B les noms des feuilles à ne pas traiter. A chaque fois que
j'active une feuille, je controle si son nom est présent dans une des
liste, si oui, je fais rien, si non alors je demande si la feuille devra
être traitée par la macro ou pas pour savoir dans quelle liste je la met.
Donc, tant pis ! Je mettrais les noms d'onglet.
Merci à tous pour votre aide même si çà ne débouche sur rien de favorable
:oÞ




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
LSteph
Bonsoir,

Outre les exemples proposés,que tu sauras ou non adapter à ton
objectif(pas bien clair pour mon neurone)
désolé, je ne vois toujours pas en quoi faire un select sur la feuille
au lieu de l'utiliser directement apporte quelquechose de plus!

Mais, indépendament de ce point de vue sur les select je vois que tu as
une autre suggestion de MD, qui augure vraisemblablement autre chose
que ce que j'ai pas vraiment compris sur la finalité profonde, et qui a
donc faculté à y répondre...


@+

lSteph


*Bonjour LSteph*,

Peux tu préciser selon quel contexte tu aurais besoin de les
sélectionner ainsi une par une.


C'était justement pour éviter une boucle sur toutes les feuilles. Je
mets au point (enfin, j'éssaie) un code pour ALF avec une macro
Workbook_SheetChange qui doit tourner seulement sur quelques feuilles.
Pour éviter les changements de nom d'une feuille, je voulais mettre en
colonne A d'une feuille "Config" les CodeName des feuilles à traiter, et
en colonne B les noms des feuilles à ne pas traiter. A chaque fois que
j'active une feuille, je controle si son nom est présent dans une des
liste, si oui, je fais rien, si non alors je demande si la feuille devra
être traitée par la macro ou pas pour savoir dans quelle liste je la met.
Donc, tant pis ! Je mettrais les noms d'onglet.
Merci à tous pour votre aide même si çà ne débouche sur rien de
favorable :oÞ




Avatar
LSteph
Bonjour JLuc,

Maintenant que mon neurone se réveille (tout cela AMHA bien sûr):

Ton idée d'écrire les noms (CodeName) des Feuilles qu'il faut traiter est
excellente
sauf que
ce serait à lister dans le code et non dans la feuille.

Donc la boucle qui intègre un filtre:
For each sh ....
Select Case Sh.codename
Case "Feuil1","Feuil3", "Feuil14", "Feuil32"
'on traite
end select
next

Ainsi les noms de celles qui conviennent peuvent dispenser de celles qui
ne conviennent pas.
Une simple boucle sur les feuilles serait ainsi à mon sentiment
bien préférable à des selectionchange et des select.
Et le Sh.Select avantageusement remplacé par le traitement lui même!



;-)

@+

lSteph


*Bonjour LSteph*,

Peux tu préciser selon quel contexte tu aurais besoin de les
sélectionner ainsi une par une.


C'était justement pour éviter une boucle sur toutes les feuilles. Je
mets au point (enfin, j'éssaie) un code pour ALF avec une macro
Workbook_SheetChange qui doit tourner seulement sur quelques feuilles.
Pour éviter les changements de nom d'une feuille, je voulais mettre en
colonne A d'une feuille "Config" les CodeName des feuilles à traiter, et
en colonne B les noms des feuilles à ne pas traiter. A chaque fois que
j'active une feuille, je controle si son nom est présent dans une des
liste, si oui, je fais rien, si non alors je demande si la feuille devra
être traitée par la macro ou pas pour savoir dans quelle liste je la met.
Donc, tant pis ! Je mettrais les noms d'onglet.
Merci à tous pour votre aide même si çà ne débouche sur rien de
favorable :oÞ