Formation : typeof : afficher type hors cascade de if.. ..
lerezeen
Messages postés4Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention26 janvier 2007
-
19 janv. 2007 à 10:30
lerezeen
Messages postés4Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention26 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..
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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és4Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention26 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 ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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és4Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention26 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...