Comment déclarer plusieurs variables avec Dim ?
Bon, voilà une erreur de ma part, je viens de lire le post de Galopin : on déclare "Option Explicit" une seule fois !
Ce qui me paraît bizarre, c'est que cette option est accessible, même pour les classeurs futurs ! Comment l'efface-t-on si on n'en veut plus ?
On dit autant de chose que cela vous donne le vertige. Déclarer y est là pour plus de fonctionnalité, de lisibilité et ... surtout pour moi pour comme correcteur orthographique. Donc moi, j'utilise des variables comme dKm, dM2, dTemp, shTCD pour un variable de kilometre, de surface, de température ou une feuille avec les TCDs. Si on a plusieurs, alors dTemp1, dTemp2, ... . Quand j'écris ma macro, je n'utilise pas de masjucules, mais VBA les met à ma place dès que je change de ligne. j'écris "for dtemp1=1 to 5" et VBA remplace cela par "For dTemp1 = 1 To 5" et je sais que c'est okay, le fameux "Camel Case".
Le miniscule "d" en face y est pour me rappeler que ce variable sera probablement un double (mais je ne le déclare pas comme double, j'écris dans un dim statement, donc c'est un Variant), sResp, c'est un variable Variant, probablement string, pour la Response, etc ... .
Donc je commence en écrivant ma macro avec une ligne comme ceci "Dim i,j,k,dTemp1,dTemp2" et au fur et à mesure que les choses avancent, j'y ajoute des variables. (comme je l'ai dit, ce DIM n'est qu'un correcteur orthographique pour moi). Déclarer des variables "Public" au début d'un module, c'est rare que je le fais.
Comme vous connaissez l'outil "Variables locaux" maintenant, cette fenetre n'est pas toujours grand assez, donc si vous choississez la bonne séquence dans vos déclarations des variables, cette fenetre sera plus utile. Ma déclaration, ici dessus, je peux la modifier en "Dim dTemp1,k,j,dTemp2,i" si cela me conviens mieux.
Au début, quand on est encore un NOOB, on écrit cet "option explicit" au début de chaque module (on peut le déactiver à chaque instant en mettant un ' ou REM en face) et puis dans ce DIM statement, on ajoute tous les variables très consciencieusement avec leur type. Après quelque années d'experience, c'est moins nécessaire parce qu'à ce moment on (pense qu'on) connait tous les pièges.
Bonjour,
Option Explicit est une Option Excel quand tu l'utilises une fois dans un nouveau module elle y reste UNE FOIS POUR TOUTE pour tous les modules de tous les classeurs à venir... sauf si le module comportait déjà des instructions !
Il n'y a pas de règle à ce sujet, toutefois l'usage est de mettre un Dim à chaque ligne.
Pour compléter le sujet on pourrait rajouter parmi les pratiques usuelles :
A l'exception de "i" dans expression de type For... Next éviter d'utiliser des noms de variables à une seule lettre "a", "b", "c"... (car c'est impossible à déboguer : Le débogueur s’arrèterait à toutes les lettres...)
Utiliser des Noms ou des abréviation de noms anglais (souvent plus court que l'équivalent français et jamais accentué)
iR ou iC (abréviation de iRow( ou (iColumn) est tout aussi bien compris que "Ligne" ou "Colonne"
iLR ou iLRS (abréviation de iLastRow( ou (iLastRowSource) est tout aussi bien compris que "DernièreLigne" ou "DernièreLigneSource"
Si on utilise le "i", surtout pas de majuscule (qu'on confond souvent avec un "l" (L minuscule) ou un "1"
Pour la même raison éviter le "l"... dont on ne sait pas si c'est du lard ou cochon, et éviter le "O" qu'on confond souvent avec 0 (zéro)
Eviter les noms de variables trop longs (jamais plus de 7 ou 8 caractères) p.e; "Var" plutôt que "variable"
Utiliser de noms de variables significatifs ("parlants" ou expressifs) Pour une feuille "Ws" ou "WsC" est aussi bien compris que "Feuille" ou "FeuilleCible"
Pas de synonymes indicés mais de type différents ("Var1" as Integer et "Var2" as String)
Il existe encore bien d'autres usages qui facilite la lecture et la compréhension du code mais déjà si tu utilises celle-ci , ça sera déjà pas mal !
A+
Bonjour à tous,
Je viens de lire quelque chose d'intéressant :
Dim intX%, intY%, intZ as IntegerJe m'interrogeais sur l'utilité des symboles tout de même un peu difficiles à retenir ; cet exemple rend leur utilité évidente : avec plusieurs variables du même type, on met le symbole aux premières et le nom complet du type à la dernière ; du coup, ça devient lisible !
PS : J'ai oublié de remercier Galopin et BsAlv aussi pour le post sur leurs conseils pertinents à propos des variables.
Bonsoir à tous,
Je me sers de l'Option Explicit qui est un excellent outil pour moi... Quelques précisions me semblent nécessaires :
* Un petit rappel : il faut l'écrire sur la toute première ligne d'un module, sans "on/off". "Option Explicit" et c'est tout ! Vous le verrez à chaque nouveau module inséré, mais pas sur les premiers déjà créés.
Exemple : j'ai un projet de 5 modules, j'ai inscrit Option Explicit au 4e module, il s'est inscrit de lui-même en haut du 5e, mais il n'est pas inscrit sur les 3 premiers.
* Dans l'éditeur (Alt + F11), onglet "Outils/Options/Cocher "Déclaration des variables obligatoire"
* Si vous ne voulez plus de l'Option Explicit, décocher cette case : à l'ouverture d'un prochain module, Option Explicit ne s'inscrira pas (je n'ai pas testé, c'est ce que j'ai lu, mais c'est logique... Donc à faire pour attester). En tout cas, mettre une apostrophe ou un REM devant ne suffit pas pour le désactiver.
* Option Explicit inscrit dans un seul module détectera les variables non ou mal définies dans tous les modules qui disposent de l'Option Explicit. Dans l'exemple ci-dessus, Option Explicit détectera les variables non ou mal définies dans les 4e et 5e modules,
* Option Explicit ne les détectera pas dans les 3 premiers : dans ceux-là, les variables non ou mal définies seront déclarées "implicitement" par Excel et disposeront donc du type variant pour que le programme puisse se dérouler quand même normalement (pratique, ce Variant, n'est-il pas ? Mais solution de facilité...).
* Peut-on rajouter l'Option Explicit après : OUI ! Dans l'exemple ci-dessus, Option Explicit a été rajouté sur les 3 premiers modules et a détecté une variable non définie.
Voilà ! Là encore, je vous demanderai de me signaler les erreurs que j'aurais faites. afin que je puisse apporter les corrections ou précisions nécessaires.
Cordialement à tous.
Pas besoin de chercher midi à 14 h !
Tu mets Option Explicit en tête de tous tes modules. Et basta... A ma connaissance il n'y a aucun inconvénient à déclarer ses variables :
Donc je ne vois aucune raison de vouloir supprimer cette option par la suite.
Il y a une différence entre déclarer et dimensionner ses variables. Option Explicit force uniquement la déclaration : C'est à dire l'orthographe des variables.
Pour ce qui du dimensionnement (As String, integer...) Option Explicit est inefficace. Donc en cas de problème, si tu ne sais pas ou ne veut pas en dimensionner une, rien ne t'oblige...
Bien qu'il ne soit pas obligatoire le dimensionnement des variables est hautement recommandé pour de nombreuses raisons.(Gestion de la mémoire, format des données, rapidité d'exécution...)
A+
Bonsoir Galopin,
Oui, c'est ce que je fais maintenant : Option Explicit en haut de mes modules est comme un outil sécurisant, avec ça, je sais que je ne peux pas me tromper, encore que... je peux me tromper autrement !
Mais tous les internautes du Forum n'utilisent pas forcément Option Explicit : comme en toutes choses, il y a les convaincus ... et les autres qui le sont plus ou moins ou pas du tout, sans compter les indécis qui ont des difficultés à s'en servir : ça n'a pas été évident pour moi non plus au début. Il vaut mieux savoir qu'il existe la possibilité de désactiver cette option, au cas où...
Les différences entre la déclaration ou le dimensionnement des variables sont intéressantes à connaître en effet... Merci de tes lumières que j'apprécie de lire.
@+