IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

variable pouvant prendre des valeurs définies


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Par défaut variable pouvant prendre des valeurs définies
    Bonjour,

    j'ai une macro nécessitant actuellement 2 paramètres optionnels : 2 booléens.
    Le premier pour dire si le choix a été fait "ChoixDecide" et le second pour connaître ce choix "Choix".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public sub maMacro(optional byval ChoixDecide as boolean,optional byval Choix as boolean)
        if ChoixDecide then
            if Choix=true then
                'Traitement
            end if
        else
            'Pose des questions à l'utilisateur
            'Traitement
        end if
    end sub
    j'aimerais savoir comment créer une variable définie dans la partie paramètre, pouvant prendre les valeurs 1,2 ou 3 ce qui m'éviterait d'avoir recours aux 2 booléens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public sub maMacro(optional maVar as ...)
        if maVar=1 then
            'Pose des questions à l'utilisateur
            'Traitement => équivalent à ChoixDecide=False
        elseif maVar=2 then
            'Traitement => équivalent à ChoixDecide=True et Choix=True
        else 'donc cas3
            'Traitement => équivalent à ChoixDecide=True et Choix=False
        end if
    end sub

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu peux utiliser une variable de type entier. Mais cela ne peut pas être un paramètre optionnel...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public sub TaMacro(ByVal TaVar as integer)
    Select case Tavar
        Case 1
            ...
        Case 2
            ...
        Case 3
            ...
        Case Else
           'Erreur
    End Select
    PGZ

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Par défaut
    merci gpz

    Il semble qu'il n'y ai que le type "variant" qui puisse prendre "null" comme valeur.
    Les autres types prennent une valeur par défaut (string="", integer=0...)

    Pour mon cas, il faudrait une variable qui puisse prendre 3 valeurs différentes et rien d'autre.
    Peut-on définir un type qui afficherait les valeurs possibles du paramètre lors du codage de l'appel de la macro? (comme un booléen le fait en proposant False ou True)

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Tu peux aussi créer une énumération: ce serait même plus explicite que des 0,1,2,3 qui n'ont pas beaucoup de sens.

    Une énumération, c'est beaucoup plus parlant, et en plus c'est considéré comme un type, donc tu pourras même restreindre facilement ton paramètre en le déclarant comme étant du type de ton énumération.

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Par défaut
    Ah oui, effectivement ce serait bien pratique.
    Mais comment fait-on pour faire une énumération et peut-on la déclarer dans la partie paramètres de la macro et le tout en optionnel?

    Pour le moment, je continue mes recherches pour faire une énumération.

    Ok, j'ai compris comment faire une énumération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Enum speci
            PasChoixDecide
            ChoixOui
            ChoixNon
    End Enum
     
    Public Sub valeurs(Optional ByVal val As speci)
        Debug.Print val
    End Sub
    Mais est-on obligé de définir le type "speci" dans le module et non dans la partie paramètres de la macro?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Tu la mets toujours en haut d'un module avant toute procédure. Après, dans quel module tu la mets, tout dépend si tu la déclare comme Public ou Private.

    Mais perso je les mets toujours en public et je les mets donc dans un module où ça m'arrange de l'y mettre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Prendre des valeurs d'une autre base
    Par Marc_27 dans le forum IHM
    Réponses: 5
    Dernier message: 29/10/2008, 16h31
  2. Réponses: 5
    Dernier message: 11/03/2008, 11h41
  3. Debutant : prendre des valeurs dans un textbox
    Par dachir dans le forum Applets
    Réponses: 3
    Dernier message: 05/03/2008, 14h01
  4. [VBA-W]prendre des valeurs "texte" dans Excel
    Par teromah dans le forum VBA Word
    Réponses: 12
    Dernier message: 14/06/2007, 16h20
  5. [MySQL] Variable pouvant contenir des apostrophes
    Par god_enel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/01/2007, 09h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo