[VBA] Dim variable selon condition

4 réponses
Avatar
ThierryP
Bonjour le forum,

Est-il possible de faire le Dim d'une variable en fonction du résultat d'un test :
if condition = vraie then dim maVar as string else dim maVar as integer ?

Test fait et non concluant bien sÍ»r ! Avant de me lancer dans un truc compliqué comme ré-écrire le code Í  la volée suivant le test, je préfère poser la question !

Mais rien n'est impossible aux gourous !!!

Merci d'avance pour toute piste,

ThierryP

4 réponses

Avatar
MichD
Le 18/02/21 Í  08:12, ThierryP a écrit :
Bonjour le forum,
Est-il possible de faire le Dim d'une variable en fonction du résultat d'un test :
if condition = vraie then dim maVar as string else dim maVar as integer ?
Test fait et non concluant bien sÍ»r ! Avant de me lancer dans un truc compliqué comme ré-écrire le code Í  la volée suivant le test, je préfère poser la question !
Mais rien n'est impossible aux gourous !!!
Merci d'avance pour toute piste,
ThierryP

Bonjour,
Tu n'as qu'Í  déclarer cette variable as "Variant". Cette variable peut
contenir du texte, numérique, voire un tableau de données. Tu peux
modifier son contenu aussi souvent que tu veux, et ce dans la même
procédure.
Dim MaVar As Variant
N.B. Lorsque l'on déclare une variable sans attribuer un type comme :
Dim MaVar
Par défaut, la variable a le type "Variant". Cependant, lorsque l'on
peut, c'est toujours mieux d'attribuer le type au moment de la
déclaration de la procédure.
MichD
Avatar
ThierryP
Bonjour Denis,
Pourquoi je ne suis pas surpris que tu me répondes ?? !!!
En fait, je n'ai pas été assez précis, mais ma demande porte sur des objets Outlook et le VBA d'Outlook n'est pas très documenté !
Mais tu as 100% raison, le Variant me va bien et apparemment Outlook est content aussi !
Merci pour la réactivité !
ThierryP
Avatar
MichD
Le 18/02/21 Í  09:05, ThierryP a écrit :
Bonjour Denis,
Pourquoi je ne suis pas surpris que tu me répondes ?? !!!
En fait, je n'ai pas été assez précis, mais ma demande porte sur des objets Outlook et le VBA d'Outlook n'est pas très documenté !
Mais tu as 100% raison, le Variant me va bien et apparemment Outlook est content aussi !
Merci pour la réactivité !
ThierryP

Si tu travailles avec des "Objets", tu peux déclarer la variable comme
ceci :
Dim Olk As Object
Set Olk = CreateObject("Outlook.Application")
Si tu as ajouté la référence "Outlook Microsoft Object 16.0", tu peux
faire comme ceci :
Dim Old As Outlook.application
Set Olk = CreateObject("Outlook.Application")
Et l'avantage de cette dernière approche, dès que tu tapes un point(.)
après Olk, tu vas avoir une liste déroulante des propriétés et méthodes
associées Í  cet objet.
MichD
Avatar
ThierryP
Le jeudi 18 février 2021 Í  16:11:43 UTC+1, MichD a écrit :
Le 18/02/21 Í  09:05, ThierryP a écrit :
Bonjour Denis,
Pourquoi je ne suis pas surpris que tu me répondes ?? !!!
En fait, je n'ai pas été assez précis, mais ma demande porte sur des objets Outlook et le VBA d'Outlook n'est pas très documenté !
Mais tu as 100% raison, le Variant me va bien et apparemment Outlook est content aussi !
Merci pour la réactivité !
ThierryP
Si tu travailles avec des "Objets", tu peux déclarer la variable comme
ceci :
Dim Olk As Object
Set Olk = CreateObject("Outlook.Application")
Si tu as ajouté la référence "Outlook Microsoft Object 16.0", tu peux
faire comme ceci :
Dim Old As Outlook.application
Set Olk = CreateObject("Outlook.Application")
Et l'avantage de cette dernière approche, dès que tu tapes un point(.)
après Olk, tu vas avoir une liste déroulante des propriétés et méthodes
associées Í  cet objet.
MichD

Bonsoir Denis,
Merci pour l'idée !!! Je vais pouvoir creuser un peu !
ThierryP