Affectation et initialisation sur la meme ligne en VBA

Résolu
RoGx Messages postés 10 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 9 mars 2010 - 25 févr. 2010 à 20:21
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 26 févr. 2010 à 16:39
bonjour,

Pourquoi est-ce que j'obtiens une erreur sur le "=" avec message "Erreur de compilation: Fin de ligne attendue" lorsque j'écris ceci en VBA dans Excel 2003:

dim test as integer = 1


Je souhaite initialiser la variable en meme temps que la créer, car je trouve cela plus propre et ca prend moins de ligne que

dim test as integer
test = 1


Merci bonne journée!

Rémi

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
25 févr. 2010 à 20:45
Et si tu tiens vraiment (on se demande bien pourquoi) à tout mettre sur une seule ligne, voimà :
dim test as integer : test = 1

Et on n'en parle plus !
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
25 févr. 2010 à 20:31
Bonjour,
Parce-que VBA est VBA et que sa syntaxe est celle de VBA ===>> tu "types"' d'une part, tu définis de l'autre.
Et tu ne gagnerais rien (après compilation) s'il en était autrement (sur une seule ligne)


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
RoGx Messages postés 10 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 9 mars 2010
25 févr. 2010 à 20:47
Je comprends que cela n'est pas plus rapide à l'exécution, mais je trouve que visuellement quand tu regardes le code, voir un paquet de DIM suivi par un paquet d'affectations, ca fait pas très beau...

mais bon, s'il n'existe pas d'autre moyen en VBA, je vais tout faire sur 2 lignes...

Merci!!

Rémi
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
25 févr. 2010 à 20:52
Ah ...
Mais en contre-partie, toute autre syntaxe te conduirait à d'autres lignes !
Ex :
Sous VBA (ou VB6, d'ailleurs) :
Dim toto as integer, titi as string, tata as double
toto 12 : titi "bonjour" : tata = 1.425
et que voudrais-tyèu trouver de mieux dans :
dim toto as integer = 12
Dim titi as string = "bonjour"
Dim tata as double = 1.425
?
C'est pinailler pour pinailler !
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0

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

Posez votre question
RoGx Messages postés 10 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 9 mars 2010
26 févr. 2010 à 16:05
Personnellement, je trouve ca beaucoup mieux visuellement et ca permet déviter d'oublier d'initialiser des variables...

question de gout j'imagine!

merci de tes explications et bonne journée!

Rémi
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
26 févr. 2010 à 16:35
Salut,

j'ajouterais qu'il existe une méthode proche de ce que tu souhaites et qui s'applique aux constantes mais comme leur nom l'indique ce sont des constantes, pas des variables. Donc a ne surtout pas confondre.

Const azerty As String = "FrKeyBoard"


A+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
26 févr. 2010 à 16:39
Ah, j'oubliais,

pour éviter d'oublier de dimensionner les variables il suffit d'ajouter :

Option Explicit


en premiere ligne de tes modules. En cas d'oublie un gentil message d'erreur te sera renvoyé à la compilation

A+
0