XL 2016 Je ne trouve pas l'explication...

dodineau

XLDnaute Occasionnel
Bonjour à toutes et tous.
J'ai une macro qui se lance sur un double clic en feuil1.
VB:
Sheets(2).Activate
aaa = Sheets(2).[a1]
bbb = [a1]
...
aaa vaut bien A1 de la feuil2, normal.
Pourquoi bbb vaut A1 de la feuil1 alors que j'ai activé la feuil2 ?
Merci pour votre aide.
A+
 
Solution
Re,

Si vous placez un code dans un module de feuille, alors les références implicite des range sont relatives à la feuille où se trouve le code. Donc ici, [a1] est relatif à la feuille Feuil1.

Si vous placez le code dans un module standard, une référence implicite fait référence à la feuille active.

En général il est inutile de sélectionner une feuille pour travailler dessus. le code suivant suffit

VB:
aaa = Sheets(2).[a1]
bbb = [a1]

Ou si vous voulez être sûr de votre coup :
VB:
aaa = Sheets(2).[a1]
bbb = Sheets(1).[a1]

Ou encore :
VB:
aaa = Sheets(2).[a1]
bbb = Me.[a1]

Quand le code est dans le module de code associé à une feuille, Me fait référence à cette feuille.

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Si vous placez un code dans un module de feuille, alors les références implicite des range sont relatives à la feuille où se trouve le code. Donc ici, [a1] est relatif à la feuille Feuil1.

Si vous placez le code dans un module standard, une référence implicite fait référence à la feuille active.

En général il est inutile de sélectionner une feuille pour travailler dessus. le code suivant suffit

VB:
aaa = Sheets(2).[a1]
bbb = [a1]

Ou si vous voulez être sûr de votre coup :
VB:
aaa = Sheets(2).[a1]
bbb = Sheets(1).[a1]

Ou encore :
VB:
aaa = Sheets(2).[a1]
bbb = Me.[a1]

Quand le code est dans le module de code associé à une feuille, Me fait référence à cette feuille.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 978
Membres
101 854
dernier inscrit
micmag26