[Resolu] Declaration de plusieurs variables d'un meme type en VBA

g.milano

XLDnaute Junior
bonjour a tous,

dans mes macro, je declare des variables d'un meme type selon cette forme :
Code:
Dim i, k, l, t, tana, retsu, iro, bangou, shouhin, insatsu, insatsuh, insatsum, crit, critnb As Long
C'est une syntaxe qui se trouve souvent sur le net.

Recemment, je suis tombe sur cette page ou il est dit que cette syntaxe est erronee et que seule la derniere variable est declaree correctement (paragraphe Remarques).

Vu qu'on trouve tout et rien sur le net, pourriez-vous me confirmer ou non cette information ?

Merci
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Declaration de plusieurs variables d'un meme type en VBA

Bonjour g.milano, Jean-Marcel

oui je confirme, pour t'en convaincre dans l'éditeur vba, barre de menu => affichage => Fenêtre variables locales, tu positionnes ta série de variables dans une "sub", et F8, tu vois dans la fenêtre en face de chaque variable son type...

bonne journée
@+
 

MJ13

XLDnaute Barbatruc
Re : Declaration de plusieurs variables d'un meme type en VBA

Bonjour à tous

En reprenant le code de JM, tu peux tester ceci:

Code:
'Option Explicit
Sub toto()
    Dim AA As Variant, BB As Long
    AA = "AE123"
    BB = "12,25"
    CC = 12.25
    MsgBox TypeName(AA)
    MsgBox TypeName(BB)
    MsgBox TypeName(CC)
    MsgBox AA 
    MsgBox BB * 5
    MsgBox CC * 5
End Sub

Sachant que si tu ne mets pas option explicit, tous ce qui n'est pas déclaré sera de type variant.
 

g.milano

XLDnaute Junior
Re: Re : Declaration de plusieurs variables d'un meme type en VBA

Bon, ca, c'est fait ! T_T

je vais devoir me farcir une grosse liste de declaration alors... :(

dommage qu'il n'y ait rien pour faire des declarations multiples en vba... :rolleyes:

merci a tous pour votre aide et vos petits programmes qui marchent bien (je vais les garder, ca me permettra de verifier mes modifs :D ).
 

Jam

XLDnaute Accro
Re : [Resolu] Declaration de plusieurs variables d'un meme type en VBA

Salut à tous,

Une petite précision pour "faciliter" la déclaration de variables. Il y a 2 façons de déclarer des variables soit sous la forme maVariable As Type soit sous sa forme simplifiée comme maVariable+caractère déclarant.
En clair:
déclarer maString As String est équivalent à maString$

Les différents caractères à utiliser sont:
$ pour String
% pour Integer
# pour Double
! pour Single
& pour Long
@ pour Currency

rien pour Variant
Les types Date, Boolean ou Byte doivent être explicitement déclarés.
 

MJ13

XLDnaute Barbatruc
Re : [Resolu] Declaration de plusieurs variables d'un meme type en VBA

Re à tous

Testez aussi ceci, c'est surprenant (enfin pour moi :eek:).

Code:
'Option Explicit
Sub toto2()
    'Dim AA As String , BB As Double, cc As Double
    AA = "AE123"
    BB = "12,25"
    cc = 12.25
    MsgBox TypeName(AA)
    MsgBox TypeName(BB)
    MsgBox TypeName(cc)
    MsgBox AA
    MsgBox BB * 5
    MsgBox cc * 5
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : [Resolu] Declaration de plusieurs variables d'un meme type en VBA

Re,

regarde ceci :
Code:
Option Explicit
Sub test()
Dim b
'dans la fenêtre de variables locales variant/Empty
b = "12.25"
MsgBox TypeName(b)
'dans la fenêtre de variables locales variant/string
b = 12.25
MsgBox TypeName(b)
'dans la fenêtre de variables locales variant/double
End Sub

pour une variable de type "variant", à priori c'est le "sous-type" de la variable qui évolue suite aux diverses initialisations faites durant l'éxécution du code... voir ce qui se passe dans la fenêtre de variables locales...

bon après midi
@+
 

Jam

XLDnaute Accro
Re : [Resolu] Declaration de plusieurs variables d'un meme type en VBA

Re,

MJ, concernant l'interprétation de AA de Variant en String, ceci est tout à fait normal. Car le "moteur" de VB(A) lorsqu'il rencontre une variable de type Variant cherche à la convertir dans le type le plus juste avant d'opérer une opération sur cette variable. Il est donc normal de voir la variable AA apparaître comme une String. Par ailleurs, c'est pour cette raison qu'il est déconseillé d'utiliser des variant. Cela "ralenti" le code puisque le moteur doit perdre du temps à analyser le variant.
Pour la variable BB, pour mémoire une string contient des caratères Alpha-Numéric. il est donc possible d'effectuer une opération avec des string.
 
Dernière édition:

Jam

XLDnaute Accro
Re : [Resolu] Declaration de plusieurs variables d'un meme type en VBA

Re,

Aller, encore une petite dernière pour la route :)

On peut déterminer une longueur de string (non non, je ne suis pas sur une belle plage californienne :) ):
VB:
[/FONT][/COLOR]Dim myString As String * 6
La particularité de cette variables est qu'elle aura toujours une longueur de 6, même si sa valeur est "toto" par exemple.

Sur ce, bon après-midi.
 

MJ13

XLDnaute Barbatruc
Re : [Resolu] Declaration de plusieurs variables d'un meme type en VBA

Re

Merci JM, Pierrot et Jam pour ces précisions intéressantes mais si j'écris par rapport à l'aide:

String, type de données

Type de données composé d'une séquence de caractères contigus interprétés en tant que caractères et non en tant que valeurs numériques. Une donnée de type String peut inclure lettres, nombres, espaces et signes de ponctuation. Le type de données String peut stocker des chaînes de longueur fixe dont la longueur est comprise entre 0 et environ 63 Ko de caractères et des chaînes dynamiques dont la longueur est comprise entre 0 et environ 2 milliards de caractères. Dans Visual Basic, le signe dollar ($) est le caractère de déclaration du type String.

Code:
Option Explicit
Sub toto3()
    Dim AA As String, BB As String, cc As String
    AA = "AE123"
    BB = "12,25"
    cc = 12.25
    MsgBox TypeName(AA)
    MsgBox TypeName(BB)
    MsgBox TypeName(cc)
    MsgBox AA
    MsgBox BB * 5
    MsgBox cc * 5
End Sub

D'ou l'expression: "Avec Excel, je sais que je ne sais rien" Confucius peut-être (après la virgule, pas la peine de cliquer, j'ai pas mis de lien hypertexte) :eek:.

Bonne méditation :).
 
Dernière édition:

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 185
dernier inscrit
salhit