Formation : typeof : afficher type hors cascade de if.. ..

lerezeen Messages postés 4 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 26 janvier 2007 - 19 janv. 2007 à 10:30
lerezeen Messages postés 4 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 26 janvier 2007 - 19 janv. 2007 à 13:10
Bonjour à tous.

question niveau débutant...

Quelqu'un a-t-il quelque part un équivalent typeof plus léger à manipuler, à savoir utilisable hors du if.  ?

Dans le cadre d'un débogage je cherche à savoir quel est le type d'une variable effectivement passée à une fonction... Je présume, dans l'exemple qui suit plus bas , que mon souci vient de la propriété par défaut renvoyée (ici = value)...
Si quelqu'un a crée une fonction  évitant de faire if typeofxx  else if typeof zzz  else mais utilisable tout bêtement sous la forme :
 
 if jesuisenphasedebogage=true
      msgbox (nomdutype  unevariablequelconque )
 end if

je suis preneur... Jusqu'à présent je n'ai pas trouvé...

Exemple de petites interrogations sur plantages...

Je  crée une sub qui attend un paramètre de type range...  par exemple...

  

 sub  onAffiche(byval unecellule as range)

      msgbox(unecellule.value & " " unecellule.address)

  end sub 

 

j'appelle cette sub

activecell.value= "un message":

 onAffiche(activecell) '  .. marche pas.. bien décrite comme renvoyant une valeur de type range, celui qui est attendu

 

je fais alors :

dim c as range

set c = activecell.cells

onaffiche(c) ' marche pas !! <gras>alors que C est bien du type attendu :  range
!  j'avoue que cette incohérence m'est bien incompréhensible !

 

<gras>J'enlève le dim c as range,

set c = activecell.cells

onaffiche(c) '  <gras>hourrah ! ça marche

 

pourquoi passer par un tel détour?  essayons directement onaffiche(activecell.cells) ' marche pas...  pourquoi  ? 

voilà, c'est sans doute élémentaire mais si quelqu'un a écrit une Fonction TypeDeLaDonnee renvoyant une string affichable tranquillement dans n'importe quel bout du code j'en serai bien content.. Et si par dessus le marché quelqu'un peut m'éclairer sur les incohérences ? évoquées dans ce petit exemple..

Merci à tous..

Yves lerezeen

J'ai la mémoire qui flanche...

6 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
19 janv. 2007 à 10:50
TymeName (aide en ligne)
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
19 janv. 2007 à 10:50
Et zut (encore les gros doigts...)

TypeName
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
19 janv. 2007 à 10:52
ou si ton but est juste de faire du deboguage : Debug.Print "toto" qui t'affichera dans la console, Debug.Assert (false) te quittera l'exécution, utilisation des espions sur une variables pour savoir les valeurs qu'elle prend au cours de l'exécution, etc., bref, tout les outils donné par vb pour débugguer sont bien plus pratique qu'un bon vieux msgbox !
lerezeen Messages postés 4 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 26 janvier 2007
19 janv. 2007 à 11:04
Merci à tous,


il ne me reste plus qu'à me  mordre les doigts.. Je n'avais pas vu le typeName et vous remercier de vos réponses aussi rapides.. Et pour ce qui est du debug là encore,  autoforme toi l'ami rezéen...

Pour le reste je vais essayer de piger les pourquois de ces apparentes(?) incohérences... ou bien je vais faire avec ;-) et dire bon.. laisse pisser.

. Le programmation vba pour excel pour les nuls est peut être un peu juste pour ces explorations ;-)..


Yves


J'ai la mémoire qui flanche...

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 janv. 2007 à 11:07
Voila ce qui existe en VB6, je ne sais pas si ça existe en VBA :

[javascript:alink_4.Click() variable].

Syntaxe

VarType(varname)

L'
<object id= "alink_5" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_5.Click() argument] varname est une valeur de
type
<object id ="alink_6" type= "application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_6.Click() Variant] pouvant contenir toute variable à
l'exception d'une variable de
<object id="alink_7" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_7.Click() type défini par l'utilisateur].

Valeurs renvoyées

Constante, Valeur, Description, ----
vbEmpty, 0, <object id ="alink_8" type= "application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_11.Click() constantes] mentionnées dans ce tableau
sont spécifiées par Visual Basic pour Applications. Vous pouvez par conséquent
utiliser leur nom n'importe où dans votre code à la place des valeurs réelles
correspondantes.

Remarques

La fonction VarType ne renvoie jamais la valeur pour la constante
vbArray elle-même. Elle est toujours ajoutée à une autre valeur pour
indiquer un tableau d'un type particulier. La constante vbVariant n'est
renvoyée que lorsqu'elle est associée à vbArray pour indiquer que
l'argument de la fonction VarType est un tableau de type Variant.
Par exemple, la valeur renvoyée pour un tableau de nombres entiers est le
résultat de vbInteger + vbArray, ou 8194. Si un objet possède une
<object id ="alink_12" type= "application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_12.Click() propriété] par défaut, VarType ( object ) renvoie le type de celle-ci.

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
lerezeen Messages postés 4 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 26 janvier 2007
19 janv. 2007 à 13:10
Merci pour toutes ces explications, elles me permettront de voir un peu mieux ce qui circule effectivement dans mes bouts de code.. Entre ce que nous croyons et  ce qui est...

J'ai la mémoire qui flanche...
Rejoignez-nous