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 :

Comment conserver les modifications faites sur un UserForm [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut Comment conserver les modifications faites sur un UserForm
    Salut à tous !

    Je souhaiterais savoir s'il est possible de sauvegarder une modification sur un
    UserForm. Pour la sauvegarde des valeurs des contrôles c'est possible.
    Je veux construire une interface utilisateur personnalisable du moins au niveau des
    couleurs du formulaire et de l'arrière plan des feuilles comme exemple
    ce code permet de changer le BackColor du UserForm a chaque clique mais je
    je voudrais que si l'utilisateur applique une couleur Vert Claire, qu'il puisse appuyer sur un
    bouton pour sauvegarder ses modifications et que a la prochaine ouverture,
    qu'il retrouve son interface personnalisée avec ce fond Vert Claire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CmbPersonaliserForm_Click()
        Red = Int(Rnd * 255)
        Green = Int(Rnd * 255)
        Blue = Int(Rnd * 255)
        UserForm1.BackColor = RGB(Red, Green, Blue)
    End Sub
    Merci D'avance de votre réponse


    Cordialement.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Plusieurs possibilités, parmi lesquelles :
    - en utilisant les fonctions Savesetting et Getsetting (à lire dans ton aide VBA où elles sont accompagnés d'un exemple)
    - en enregistrant ces données dans un fichier texte et en les y récupérant pour les appliquer à l'ouverture de ton userform
    - en enregistrant ces données sur une feuille de ton classeur et en les y récupérant à l'ouverture de ton userform.

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, tu peux également utiliser les bons vieux fichiers *.ini. Ceci évitant d'aller encombrer la base de registre.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une autre possibilité, celle d'utiliser un Nom caché dans le classeur (ici, "CouleurFond"). A la première ouverture de la Form le nom n'existe pas, il sera créé. A la fermeture de la Form la valeur sera stockée dans le nom et à l'ouverture suivante la couleur de fond de la Form sera chargée. Tu peux créer autant de Noms que tu as besoin pour stocker tes différentes valeurs.
    Attention, la valeur du Nom est sous la forme =49152 d'où l'utilisation de "Right()" pour supprimer le signe "=" :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Private Sub UserForm_Initialize()
     
        Dim Nom As Name
     
        On Error Resume Next 'gère l'erreur de la non existance du nom
        Set Nom = ThisWorkbook.Names("CouleurFond")
     
        'si il existe...
        If Err.Number = 0 Then
     
            'la couleur de fond est définie pour la Form
            Me.BackColor = CLng(Right(Nom.Value, Len(Nom.Value) - 1))
     
        Else
     
            'le nom est créé et est invisible dans la boite "Gestionnaire de noms"
            ThisWorkbook.Names.Add "CouleurFond", Me.BackColor, False
     
        End If
     
        On Error GoTo 0
     
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
        Dim Nom As Name
     
        On Error Resume Next
        Set Nom = ThisWorkbook.Names("CouleurFond")
     
        'stocke la valeur dans le nom
        If Err.Number = 0 Then
     
            Nom.Value = Me.BackColor
     
        End If
     
    End Sub

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Pour résumer :
    - un userform perd à sa fermeture ses paramètres et variables modifiés en mode exécution
    - il faut alors :
    ---- les stocker ailleurs. Cet "ailleurs" est à choisir selon ce qui te convient le mieux (plusieurs "ailleurs ont déjà été évoqués... on pourrait en ajouter d'autres, dont par exemple un fichier xml)
    ---- les extraire de cet "ailleurs" lors de l'ouverture du userform et les appliquer.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    bien vu theze
    je n'y aurais jamais pensé sans utiliser une cellule sur un sheets en plus pour une transportabilité c'est sans équivalent
    bravo pour l'astuce!
    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
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Une autre possibilité, celle d'utiliser un Nom caché dans le classeur (ici, "CouleurFond"). A la première ouverture de la Form le nom n'existe pas, il sera créé. A la fermeture de la Form la valeur sera stockée dans le nom et à l'ouverture suivante la couleur de fond de la Form sera chargée. Tu peux créer autant de Noms que tu as besoin pour stocker tes différentes valeurs.
    dans le même genre on peut utiliser CustomDocumentProperties

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        'Récupération de la valeur de la propriété personnalisée (Autoexec_done) du classeur dans la variable p
        Set p = ActiveWorkbook.CustomDocumentProperties("Autoexec_done")
     
        'Test si la valeur récupérée dans p est vide ou non : si oui, on rentre dans la condition, ce qui signifie alors que c'est la première fois que l'on ouvre le classeur.
        If p Is Nothing  Then
     
     
            'Affectation de la valeur "done" à la propriété personnalisée (Autoexec_done) du classeur
            Set p = ActiveWorkbook.CustomDocumentProperties.Add("Autoexec_done", False, msoPropertyTypeString, "done")
    end if
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut RE
    BIEN VU OLIV AUSSI

    ON Y PENSE PAS A CES PETITES ASTUCES QUAND ON VEUT PAS UTILISER UN SHEETS DE MEMO
    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

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

Discussions similaires

  1. Comment gérer les modifications sur un lot
    Par emeric2502 dans le forum Modélisation
    Réponses: 0
    Dernier message: 30/01/2015, 16h11
  2. Réponses: 4
    Dernier message: 28/07/2011, 15h16
  3. SVN ne voit pas les modifications faites sur mes fichiers
    Par LGnord dans le forum Subversion
    Réponses: 1
    Dernier message: 03/05/2011, 15h36
  4. Réponses: 4
    Dernier message: 12/05/2007, 23h24
  5. [DOM] comment enregistrer les modifs?
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 26
    Dernier message: 30/07/2004, 10h56

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