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 :

Stockage de variable à partir d'un formulaire


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 97
    Points : 64
    Points
    64
    Par défaut Stockage de variable à partir d'un formulaire
    Bonjour,

    J'ai un petit problème concernant l'utilisation de variables définies à partir d'un formulaire.

    Je m'explique. J'ai créé un formulaire qui contient un certain nombre de boutons proposant chacun une couleur différente. Lorsqu'on clique dessus j'enregistre les référence de la couleur choisie pour pouvoir l'utiliser par la suite. Voici le code simplifié du formulaire avec deux couleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Dim Couleur_RGB As String
    Dim R_Interior, G_Interior, B_Interior As Integer
     
    Private Sub Orange1_Click()
        Couleur_RGB = "R207 G077 B018"
        Call Charte
    End Sub
     
    Private Sub Violet1_Click()
        Couleur_RGB = "R106 G029 B088"
        Call Charte
    End Sub
     
    Sub Charte()
     
        ' Décode des valeurs RGB
        R_Interior = Mid(Couleur_RGB, 2, 3)
        G_Interior = Mid(Couleur_RGB, 7, 3)
        B_Interior = Mid(Couleur_RGB, 12, 3)
     
    End Sub
    N'étant pas du tout familier de l'utilisation des formulaires ou des "private sub" je ne sais pas comment sont gérées les variables enregistrées... (je mets toujours toutes les macros dans un seul module).

    Le but est d'utiliser ces variables pour mettre le fond de nombreux en-tête avec la couleur définie initialement par l'utilisateur quand il a cliqué sur le formulaire. En l'occurrence je fais un appel du formulaire dans le module contenant toutes mes macros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Charte_Open()
     
        Charte_Graphique_Formulaire.Show
        Range("B2").Interior.Color = RGB(R_Interior, G_Interior, B_Interior)
     
    End Sub
    Mais mes variables définies en dehors de ma macro dans le code du formulaire ne sont apparemment pas enregistrées. J'ai tenté de mettre le "Dim... As" au niveau du module mais ce n'est manifestement pas le problème.

    Ma macro générale est assez longue et va chercher plusieurs fichiers .csv pour les enregistrer en tant qu'onglet etc. tout le traitement (en tout cas la mise en forme de ces onglets) doit utiliser la couleur déterminée initialement.

    Je suppose que la réponse doit être très simple...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Areis Voir le message
    Bonjour,

    Vous pourriez enregistrer vos valeurs dans des cellules d'un onglet de paramètres par exemple.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    Ah oui c'est une idée effectivement... Si je ne m'en sors pas je ferai certainement comme ça mais je préférerais les stocker .

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Une piste.

    Pour ce qui est de la couleur, tu n'es pas obligé de stocker les valeur RVB, la couleur est aussi défini par une valeur numérique de type Long. La fonction RVB renvoie cette valeur, il est alors plus simple de stocker cette valeur numérique plutôt qu'une chaine de caractère contenant les valeurs RVB.

    Si tu tiens vraiment à stocker ça sous forme de texte ( mais je n'y vois aucun intérêt), tu peux aussi les stocker sous cette forme ("rrr,vvv,bbb") et ensuite utiliser la fonction split pour découper cette chaine en utilisant "," comme séparateur.
    Tu te retrouve alors avec un tableau contenant en 0 la valeur "rrr", en 1 "vvv" et en 2 "bbb"

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    pour que ta variable soit visible de tous les modules il faut la déclarer (toujours dans un module Standard) avec Public et non Dim.
    Stocke plutôt en Long .Color comme déjà dit.
    eric

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    si l'utilisation de cette variable est utiliser ailleurs que dans le userform tu doit la mettre en public dans un module standard
    mais / OU !!!
    si cette variable est utilisé ailleurs PENDANT !! que le userform est affiché tu peux la mettre en public DANS !! le userform

    et l'utiliser
    par
    exemple si l'userform s'appelle "UserForm1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox UserForm1.couleur_rgb
    ET ENTRE parenthèse
    quand dans ton userform tu fais couleur_RGB=rgb(255,145,168) par exemple
    ta variable est un numerique car vba traduit immediatement en Long couleur
    alors attention si tu a besoins des 3 valeurs séparément il te faudra alors une variable de type bit pour jouer avec R OU G OU B
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    Merci pour ces infos sur la déclaration des variables en "public" (je ne connaissais pas du tout ça...) ça règle tous mes problèmes.

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

Discussions similaires

  1. init d'une variable à partir d'un formulaire
    Par hourinas dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/10/2013, 18h29
  2. Réponses: 8
    Dernier message: 22/12/2012, 15h52
  3. Réponses: 0
    Dernier message: 06/04/2011, 16h42
  4. Réponses: 1
    Dernier message: 07/08/2008, 15h55
  5. Appeler des variables à partir d'un formulaire et VBA
    Par LeBihan dans le forum Modélisation
    Réponses: 2
    Dernier message: 19/03/2008, 20h25

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