Comment déclarer plusieurs variables avec Dim ?

Bonjour à tous,

Comment déclarer plusieurs variables de même type ?

Dim Variable1, Variable2, Variable3 As Double

ou bien :

Dim Variable1 As Double, Variable2 As Double, Variable3 As Double

Ou est-ce que les deux déclarations sont valables ?

Merci de votre aide.

bonsoir,

avec la première déclaration, les Variable1 et Variable2 seront Variant, donc la 2ième est préférable, si vous voulez tous les 3 type Double..

Merci beaucoup.

bonjour,

Cette déclaration est équivalente :

Dim Variable1#, Variable2#, Variable3#

A+

Je ne comprends pas...

Dim Variable1#, Variable2#, Variable3#

et

Dim Variable1 As Double, Variable2 As Double, Variable3 As Double

C'est la même chose ?

Oui.

Le symbole # (dans les Dim) signifie "as Double"

Pour les autres symboles voir aussi ici :

https://www.excel-pratique.com/fr/vba/variables

A+

Ah ok ! J'en apprends beaucoup dans ce forum ! Merci beaucoup.

J'ai une question : existe-t-il un moyen de voir toutes les variables qu'on a créées dans une liste par exemple ou un tableau etc., de manière à voir si elles sont bien prises en compte avec nos "Dim" ?

Lister, Voir, NON.

Option Explicit + Débogage / CompilerVBAProject met en surbrillance toutes variables non (ou mal) déclarées.

A+

Bonjour,

Dans l'editor, image>Fenetre variables locaux (correct en français ???), on peut voir tous ces variables, pendant la session de la macro. Avec la sequence de déclarer les variables, on peut influencer la sequence dans cette fenetre. Si on ajoute de pauzes (avec F9) on voit le type et les valeurs de ces variables à ce moment.

"Option Explicit" est une option.

image

Dans l'onglet Débogage, j'ai cliqué sur "Compiler [mon fichier Excel].xlw] : l'indication "Compiler etc." apparaît en grisé, mais rien ne se passe...

Ah ! "Option Explicit", moi, je n'ai pas ça ! Je suis allé directement sur "Débogage" qui offre l'option "Compiler [Fichier]", mais avec les explications de BsAlv,, je crois que je n'ai pas fait ce qu'il fallait.

Pour BsAlv, j'ai bien l'option "Variables locales" dans l'onglet "Affichage",

Quand je clique dessus, un tableau "Variables locales" s'affiche avec trois colonnes "Expression, Valeur, Type" en bas de l'écran, mais il est vide : je ne vois pas comment m'en servir, même quand j'exécute une macro.

image

Que faut-il faire ?

Bonsoir le forum

Bonsoir le fil

@ChrisBlues : Tu ne l'as pas car tu ne l'a pas déclaré. Pour ce faire depuis l'éditeur VBE - Outils : Options - Il te faut cocher "Déclaration des variables obligatoire".

Pour le présent fichier c'est râpé. Il te faut dans chaque modules créés, le mettre à la mimine tout en haut "Option Explicit"

je ne vois pas comment m'en servir, même quand j'exécute une macro.

Vous pouvez agrandir cette fenetre en clicquent sur les bordures et puis glisser avec le souris.

Puis vous vous mettez au début de votre macro est vous la lancez avec F8 (step-by-step) ou vous mettez un point d'arrêt quelque part dans cette macro et vous lancez le macro avec F5. Au moment où la macro s'arrête (avec un de ces 2 méthodes ici en haut) vous verrez les types et les valeurs des variables comme ici en dessous. Vous verrez par exemple que je ne déclare jamais mes variables (choix personnel), donc ils sont tous du type Variant, mais VBA, en cours de la macro, les a déclaré comme Integer, Long, Range, etc. Vous verrez aussi en haut "Module3" et en face on peut clicquer sur le "+" et alors cela se déroule et on peut voir les variables "public" de ce module ... . On peut aussi clicquer sur le "+" des ranges, mais pour le moment, c'est encore trop compliqué pour vous ... .

image

https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/locals-window

https://www.xlerateur.com/divers/2021/03/26/la-fenetre-variables-locales-en-vba-11655/

Grand merci, BsAlv, pour la peine que tu t'es donnée et pour les explications détaillées et les liens : c'est extrêmement instructif ! J'ai donc suivi tes conseils et j'ai effectivement obtenu les variables locales avec leur type.

Ainsi, une de mes variables était du type Variant, je l'ai redéclarée String de circonstance.

Une autre variable , déclarée Variant, est utilisée en réponse à unMsgBox avec vbOkCancel ; dans ma procédure, je l'utilise ainsi :

If Réponse <> vbOk Then
     ....
     ....
End If

Dans ce cas, de quel type est Réponse ?

En réponse à Ericcool02, pourquoi est-ce trop tard ? Qu'est-ce qui m'empêche de cocher la case "Déclaration des variables obligatoire" maintenant ?

A quel moment faut-il cocher cette case pour obtenir l'Option Explicit ?

Merci de ton aide.

Bonsoir ChrisBlues et le forum ,

L'appui sur un bouton d'une MsgBox (bouton oui, non, ok, cancel, etc..) renvoi un nombre entier, le type de ta variable "Réponse" et, pour pouvoir couvrir toute la plage des valeurs renvoyées, de type Long.

Un conseil, je te conseille de suivre la convention de nommage pour les variables (1ère lettre de la variable en minuscule, ne pas mettre de caractère d'accentuation "è", "à", "ô", etc) et utiliser le camel case si ta variable contient plusieurs mots (maPremiereVariable par exemple)

Bonne fin de soirée à toi

Bonsoir Streetchris82,

Merci pour ces conseils avisés : je m'aperçois que je fais tout le contraire, mes variables peuvent être accentuées et avoir deux ou trois mots, mais dans ce cas, je les relie toujours avec l'underscore... (Camel case, je ne connaissais pas ce terme !)

Compte tenu de tes remarques, je vais y remédier.

Merci encore.

Encore une question sur la déclaration des variables, et je pense que ce sera la dernière...

Il m'arrive de déclarer plusieurs variables.

Quand il y en a deux ou trois à l'intérieur d'une procédure, pas de problème, je les déclare ensemble chacune avec leur As + type (ou avec leur symbole ainsi que me l'a montré Galopin ! Hé hé ! Lol ! )

    Dim PointageAstérisque%, PointageBarre%             ' % -> Integer

Peut-être ma question est-elle un peu superflue, mais je voudrais avoir une réponse aussi rassurante que possible.

Lorsqu'il y a beaucoup de variables à déclarer , faut-il un Dim à chaque ligne ?

Dim Variable1 as Integer, Variable2 as Integer, Variable3 as Integer
Dim Variable4 as Double, Variable5 as Double, Variable6 as Double
Dim Variable7 as String, Variable8 as String, Variable9 as String 

... ou bien peut-on les déclarer avec un seul Dim en les reliant avec l'underscore ?

Dim Variable1 as Integer, Variable2 as Integer, Variable3 as Integer, _
Variable4 as Double, Variable5 as Double, Variable6 as Double, _
Variable7 as String, Variable8 as String, Variable9 as String 

A mon avis, c'est la même chose... Qu'en pensez-vous ?

Merci de votre aide.

Supprimé...

Bonsoir à tous,

En attendant la réponse à ma question ci-dessous, permettez-moi de vous faire part de mes "découvertes" (il y en a peut-être parmi vous que cela intéressera, cela dit avec toute humilité, croyez-moi... Ce sera ma modeste contribution et ma manière de remercier tous les internautes qui nous aident)

* Si vous voulez vous obliger à déclarer toutes vos variables, vous devez mettre à la première ligne de chaque module :

Option Explicit

* Ne mettez pas de "on" à la suite, malgré les explications du site :https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/option-explicit-s...) : pour moi, ma ligne devient rouge tout de suite, sinon...

* Lancez votre procédure : à la moindre erreur de variable non ou mal déclarée (variable mal écrite, avec ou sans accent ou absence de déclaration etc.), la compilation s'arrête et indique votre erreur, et la procédure ne démarre même pas.

* Même une variable que vous avez déclarée publique (donc en dehors et loin de votre procédure, mais ainsi accessible partout dans tous les modules), si vous faites une erreur quelconque sur la variable, la compilation s'arrêtera sur la variable surlignée en jaune. Exemple d'erreur :

Public Dim Reponse as Long

Dans votre procédure, vous avez écrit :

If Réponse <> vbOk Then
   ...
   ...
   ...
End If

Vous avez vu l'erreur ? Dans la déclaration publique, "Reponse" est écrit sans accent, tandis que dans la procédure, "Réponse" est écrit avec accent : dans ce cas de figure, la compilation s'arrête sur "Réponse" de la procédure et signale "Variable non définie".

* A mon avis, ça vaut le coup d'utiliser cette "Option Explicit", car ça aide à faire un travail de programmation propre et net ! Mais chacun agit comme bon lui semble.

* Dans l'IDE, dans l'onglet Affichage, il y a une option "Fenêtre Variables locales" :

- quand vous cliquez dessus, une fenêtre, vide d'abord, s'affiche en bas de l'écran : déplacez- la , changez ses dimensions en petite fenêtre pour avoir une visibilité de l'intérieur,
- ensuite, NE LANCEZ PAS VOTRE PROCEDURE, mettez-vous sur la première ligne de votre procédure et vous faites du pas-à-pas avec la touche F8 : vous suivez les conseils de BsAlv ci-dessus qui explique très bien la manière de s'en servir,
- vous voyez s'afficher toutes les variables locales avec leur type et leur valeur, mais pas les variables publiques, puisque c'est une fenêtre de variables locales déclarées dans la procédure.
- si vous n'avez pas mis Option Explicit en première ligne du module, les variables non déclarées sont signalées comme "Variant".

Voilà ! J'espère ne pas vous avoir ennuyés, les spécialistes me pardonneront (et me signaleront, svp) mes erreurs (il y en a certainement : je m'empresserai de les corriger.) et si vous voulez bien, je compléterai avec des constations ultérieures si j'en fais, sur cet intéressant sujet des variables.

Merci à vous tous.

Rechercher des sujets similaires à "comment declarer variables dim"