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 :

changement de couleur à l'ouverture d'un userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut changement de couleur à l'ouverture d'un userform
    Bonjour à toutes et à tous,

    Mon idée est de créer un fichier excel avec des userforms.

    Et j'ai une question très importante si quelqu'un pouvait m'aider.

    J'aimerai utiliser un userform, remplir des informations dedans qui seront ensuite inscrites dans une feuille du classeur quand on clique sur un bouton "OK", jusque là tout va bien.
    J'aimerai, lors de la fermeture et de la réouverture du fichier, rappeler les informations qui étaient inscrites dans l'userform, là aussi tout se passe bien.

    Ma question est la suivante : Est-il possible de changer de couleur d'écriture à chaque fois que je ferme mon userform et que je le réouvre?

    Par exemple, aujourd'hui j'écris dans mon userform
    Bonjour tout le monde
    et demain j'écrirai à la suite de ce qui a déjà été écrit
    Bonjour bonjour

    J'espère avoir été assez claire. Si vous avez des questions, ou des exemples si vous l'avez déjà fait n'hésitez pas.

    Merci

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Première question : A chaque fois ou chaque jour ? Car les deux cas sont possibles, mais ne se gèreront pas de la même manière...
    Autre question : as-tu un ordre pour l'apparition des couleurs, ou bien cela doit-il être aléatoire ?
    Enfin : combien de couleur en tout souhaites-tu gérer ?

    A toi !

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Bonjour Maxence HUBICHE,

    J'aimerai que le changement de couleur se fasse à chaque ouverture de l'userform et non pas à chaque jour, car l'userform en question peut être ouvert plusieurs fois dans la même journée.

    Pour l'ordre des couleurs, je n'ai pas vraiment de choix, j'aimerai bien des couleurs qui puissent se voir quand même, comme du noir, du bleu, du vert, du marron, du violet, du rouge et éviter des couleurs du style jaune, rose, blanc,...

    J'aimerai bien que cela soit toujours dans le même ordre, mais bon si cela n'est pas possible, ce n'est pas extrêmement gênant.

    Le nombre de couleur serait de 10 maximum.

    Merci pour ton aide et pour ta réponse

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Alors voilà UNE solution...

    D'abord, te créer une fonction comme ceci :
    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
    22
    23
    24
    Function GetColor()
        Const myAppName           As String = "MonAppli"
        Const mySection           As String = "Config"
        Const myKey               As String = "LastColor"
        Dim sValue                As String
        Dim iValue                As Integer
        Dim vColors               As Variant
        'Définition de la liste des couleurs
        vColors = Array(vbBlue, vbRed, vbYellow, &HFFFF00)
     
        'Récupération de la valeur précédente
        sValue = GetSetting(myAppName, mySection, myKey, UBound(vColors))
        'Contrôle des limites et renvoi de la valeur suivante
        Select Case Val(sValue)
            Case UBound(vColors)     'si on est au bout de la liste, on retourne au début
                iValue = LBound(vColors)
            Case Else               'sinon, on incrémente la position de 1
                iValue = Val(sValue) + 1
        End Select
        'sauvegarde de la valeur
        SaveSetting myAppName, mySection, myKey, CStr(iValue)
        'renvoyer la couleur
        GetColor = vColors(iValue)
    End Function
    Comme tu veux ton cycle, de manière arbitraire, j'ai choisi un stockage dans la base de registre de la derniere valeur utilisée (d'où les GetSetting et SaveSetting)
    Tu peux également définir à volonté le nombre de couleurs que tu veux dans l'Array de vColors. Je t'y ai mis quelques exemples. A toi de jouer avec maintenant.


    Pour son application maintenant, il va falloir que, lors de l'initialisation de ton formulaire, tu récupères, dans une variable, la couleur "nouvelle", puis que tu l'affectes à tes contrôles.

    En voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
        Dim lColor As Long
        'récupération de la dernière couleur
        lColor = GetColor()
        'Affectation aux contrôles
        Me.Label1.ForeColor = lColor
    End Sub
    Voilà

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Merci merci pour ton aide, ça fonctionne

    Encore merci

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

Discussions similaires

  1. [XL-2007] changement de couleur d'onglet Userform
    Par zineb87 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/08/2009, 13h27
  2. Réponses: 4
    Dernier message: 22/01/2007, 21h14
  3. Changement de couleur d'un libellé sur OnClick
    Par maysa dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/11/2005, 15h29
  4. CSS Pas de changement de couleur quan on clique sur un lien
    Par pmboutteau dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 16/08/2005, 10h15
  5. Changement de couleur quand j'affiche du texte...
    Par MaxPayne dans le forum OpenGL
    Réponses: 3
    Dernier message: 10/12/2004, 13h55

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