XL 2016 VBA - Comment faire reconnaître l'argument Variant comme Range

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour,
J'ai besoin d'un (ou plusieurs) avis sur ce problème VBA.
Dans le Sub b() je reçois un argument quelconque (tout type de variable).
Lorsque je passe un Range d'une seule cellule, ce n'est pas le Range qui est passé mais le Range.Value.
Comment éviter cela et empêcher ce ".Value" implicite ?

VB:
Sub a()
    Dim r As Range
   
    Set r = [A1]
    Call b(r)
End Sub

Sub b(v As Variant)
    'Problème ici -> v contient [A1].Value et non le Range [A1]
    MsgBox VarType(v)
End Sub

Merci par avance.
 
Solution
Bonjour Dudu2, le fil,

Testez :
VB:
Sub a()
    Dim r As Range
    Set r = [A1]
    Call b(r)
End Sub

Sub b(v As Variant)
    'Problème ici -> v contient [A1].Value et non le Range [A1] => totalement faux !!!
    MsgBox IsObject(v)
    MsgBox v.Parent.Name 'teste l'objet v
End Sub
IsObject renvoie VRAI donc v est bien un objet Range avec toutes ses propriétés.

C'est vérifié avec la 2ème MsgBox.

A+
Bonjour,
Quand tu passes un range à un paramètre de type variant tu as accès à toutes les propriétés et méthodes d'un range mais tu perds la saisie intuitive de l'objet range !

Pour t'en convaincre il te suffit en mode débug de faire un client droit sur la variable V et choisir dans le menu contextuel l'option ajouter à l'espion !
 
Bonjour @dysorthographie,
Merci pour cette précision.
Dans ce cas, le TypeOf Is Range étant vérifié, je suppose qu'il faudrait affecter le Variant V dans une variable explicitement déclarée en Range dans la fonction.

En plus de cette affaire de paramètre Variant de la fonction, j'ai eu quelques difficultés à faire rentrer un Range dans un Item du Dictionary. J'y suis arrivé pour le Range et j'ai généralisé à la notion d'Object mais j'avoue n'avoir pas testé d'autre Object que le Range.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL pour MAC boucle couleur
Réponses
25
Affichages
1 K
Retour