numéro de feuille d'un autre classeur

Le
rmillerlcxl
Bonjour,

Je n'ai jamais réussi auparavant à faire ceci et j'aimerais b=
ien.

Dans un 2ème classeur disons que j'ai 3 feuilles. Dans le projet VBA e=
lles apparaissent comme suit;

- Feuil6 (E-W)
- Feuil12 (E-X)
- Feuil27 (E-Y)

Dans le classeur actif j'ai aussi ces feuilles;

- Feuil6 (A1)
- Feuil12 (A2)
- Feuil27 (A3)

Le nom des feuilles peuvent modifier selon la langue dans le fichier. Alors=
je souhaite faire une action avec la feuil6 dans le classeur 2.

Si j'inscrit le code Workbooks(2).sheets(Feuil6).name ou Workbooks(2).s=
heets(Feuil6.Name).name etc. je n'arrive pas à atteindre la feuille E-=
W du classeur 2.

Il doit me manquer un bout de code que je ne connais pas. J'y arrive par In=
dex mais exemple Index 1 = à la position de la feuille dans le class=
eur.

Comment atteindre la feuil6 du classeur 2 sans possibilité d'erreur?

Merci à l'avance.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #26465708
Bonjour
Je me méfie toujours des noms de feuilles que l'on intitule "feuilx ou y"
....
pourquoi ne pas donner un nom bien clair?
Ensuite, faire un essais avec l'enregistreur de macro. il donnera sa
solution. pas toujours la plus courte, mais cela fonctionne.

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
a écrit dans le message de groupe de discussion :

Bonjour,
Je n'ai jamais réussi auparavant à faire ceci ... et j'aimerais bien.
Dans un 2ème classeur disons que j'ai 3 feuilles. Dans le projet VBA elles
apparaissent comme suit;
- Feuil6 (E-W)
- Feuil12 (E-X)
- Feuil27 (E-Y)
Dans le classeur actif j'ai aussi ces feuilles;
- Feuil6 (A1)
- Feuil12 (A2)
- Feuil27 (A3)
Le nom des feuilles peuvent modifier selon la langue dans le fichier. Alors
je souhaite faire une action avec la feuil6 dans le classeur 2.
Si j'inscrit le code ... Workbooks(2).sheets(Feuil6).name ou
Workbooks(2).sheets(Feuil6.Name).name etc. je n'arrive pas à atteindre la
feuille E-W du classeur 2.
Il doit me manquer un bout de code que je ne connais pas. J'y arrive par
Index mais exemple Index 1 = à la position de la feuille dans le classeur.
Comment atteindre la feuil6 du classeur 2 sans possibilité d'erreur?
Merci à l'avance.
Michd
Le #26465710
Bonjour,
Ce que tu demandes est impossible. Dans le code, on peut utiliser la
propriété "NAME" d'un objet worksheet (codename) seulement dans le classeur
où cette feuille est située.
Cependant, si tu connais d'avance le "CodeName" de la feuille située dans
l'autre classeur, tu peux faire ce qui suit :
Créer une fonction, qui boucle sur toutes les feuilles et qui teste le
codename de chacune. Lorsqu'il trouve, il renseigne la variable
"GetSheet_CodeName" qui représente ladite feuille dans ton code. Pour
vérifier que c'est bien vrai, je fais le petit test en affichant dans une
boîte de message, la valeur d'une cellule de cette feuille.
Dans mon Exemple :
"Test" est le codename de la feuille recherchée.
"Classeur2" est le nom d'un classeur pas encore enregistré.
'----------------------------------------------
Sub test()
Dim Sh As Worksheet
Dim Wk As Workbook
Set Wk = Workbooks("Classeur2")
Set Sh = GetSheet_CodeName(Wk, "test")
With Sh
MsgBox .Range("A1").Value
End With
End Sub
'----------------------------------------------
Function GetSheet_CodeName(Wk As Workbook, _
CodeName As String) As Excel.Worksheet
Dim Sh As Excel.Worksheet
For Each Sh In Wk.Worksheets
If Sh.CodeName = CodeName Then
Set GetSheet_CodeName = Sh
Exit For
End If
Next
End Function
'----------------------------------------------
MichD
rmillerlcxl
Le #26465712
Merci.
Ça répond parfaitement à mon interrogation.
Publicité
Poster une réponse
Anonyme