Récupérer le nom d'un classeur d'un Range passé en paramètre

[Résolu]
Signaler
Messages postés
14
Date d'inscription
samedi 15 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2008
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour à toutes et à tous,

C'est la première fois que je poste sur ce forum, donc j'espère ne pas m'être trompé de catégorie !

J'ai recherché un peu partout, mais je n'ai rien trouvé (trop de mots dans la recherche).

Voilà, je vous expose mon problème :

Je crée une fonction VBA afin qu'elle soit utilisable dans Excel. Cette fonction est un peu du style "Recherchev".
Cette fonction prend 3 paramètres qui sont des "Range". Ces Ranges peuvent être dans d'autres classeurs ouverts.

Ma question est simple... mais pas évidente à solutionner (pour moi du moins) :
-> Comment, dans mon code VBA, puis-je trouver le nom du classeur de tel ou tel range passé en paramètre ?

Merci par avance pour vos réponses... et n'hésitez pas à me dire si vous voulez plus
d'infos.

Samy.

7 réponses

Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Non, ca n'existe pas excuse moi, par contre ceci semble marcher :
Range.Parent.Parent.Name

Julien.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
tu as bien la propriété WorkSheet de ta variable Range....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Si c'est le classeur qu'il veut ca doit plutot être WorkBook
Essaye
Range.Workbook.Name

Julien.
Messages postés
14
Date d'inscription
samedi 15 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2008

Merci Renfield. J'avais essayé, mais je n'ai pas réussi à monter jusqu'au classeur de Worksheet.

Merci Julien ! Ca marche parfaitement.

A bientôt.
Samy.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

Julien237, ton premier code est effectivement bizarre ! ;)
Par contre, le second est parfait !

Pour expliquer à Samy,
le Parent sert à retrouver l'objet dont appartient Range (enfin, pour cet exemple) :
donc WorkSheet.
le double Parent sert donc à retrouver l'objet de l'objet
(donc l'objet de WorkSheet --> WorkBook)

++
Messages postés
14
Date d'inscription
samedi 15 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2008

Merci Mortalino pour ces explications. J'avais bien vu que cette propriété existait, mais je n'ai même pas pensé à m'en servir.
Je pensais, vu que l'on pouvait avoir le "Range.Worksheet.Name", qu'on pouvait faire la même chose avec "Range.Worksheet.Workbook.Name"... du coup, je suis resté bloqué là dessus.

Encore merci à vous tous pour votre rapidité et votre aide.

A+
Samy.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
_samy_: En suivant  ce que tu essayais, je pense que ceci devrait fonctionner aussi alors:
ObjRange.Worksheet.Parent.Name

@+,   Ju£i?n