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

VBA Discussion :

Valeur par défaut dans les textbox d'un formulaire


Sujet :

VBA

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut Valeur par défaut dans les textbox d'un formulaire
    Bonjour,

    Quand on dessine un formulaire et qu'on ajoute des textbox, il est possible de leur affecter des valeurs par défaut en indiquant directement, en mode création des valeurs dans les cases.
    Ainsi, après que le formulaire se soit chargé, les cases sont déjà pré remplies.

    Est-il possible de sauvegarder les nouvelles valeurs entrées, pour que, dans la même session, après qu'on ait fermé le formulaire, quand on le rouvre, les dernières valeurs soient présentes au lieu des valeurs par défaut ?

    Je ne parle pas de les sauvegarder temporairement dans une feuille cachée sous Excel (présentement, je fais du vba avec AutoCAD), mais que ces nouvelles valeurs soient stockées au même endroit que les valeurs entrées par défaut lors de la création du formulaire ?

    Merci pour vos précisions,

    Jean-Marc

  2. #2
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Bonjour,

    Si j'ai bien compris tes textbox ont des valeurs par défaut?

    Et quand le user les modifie et ferme le programme a la prochaine réouverture tu veux que les valeur que a saisie le user devienne celle par défaut ?
    Il faut que tu trouve un moyen de les stocker quelque part. Sous Excel comme tu le dis tu le stock dans un coin et tu la récupère a la prochaine réouverture.

    Tu peux pas faire la même chose avec ton truc ?
    Si oui il te reste a faire a ta form_load ou autre :

    Textbox.Text = "variable de la nouvelle valeur"


    Cdt
    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Que l'utilisateur récupère les valeurs modifiées après redémarrer le programme (ici AutoCAD), je n'en demande pas tant, mais après avoir rechargé le formulaire (relancé la macro), ça serait pas mal.
    Un peu comme si je faisais "hide" puis "show". Sauf que aujourd'hui, je décharge (unload) le formulaire quand je clic sur le bouton "Fermer" (pour préserver la mémoire) et j'aimerais pouvoir récupérer les dernières valeurs quand je recharge le formulaire (load). Dans la même session, bien sûr.

    JM

  4. #4
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Salut

    Quand tu dis dans la même session c'est sans fermer le programme? juste en dechargant la form?

    Je ne vois pas comment tu peux faire a part de mettre un champ caché sur ton truc pour les récupérer au prochain démarrage.

    je suis désolé mais je ne connais pas Autocad. ^^


    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Plusieurs pistes peuvent être envisagées :

    Stockage dans une variable globale
    Stockage dans une variable d'environnement
    Stockage dans une base de données

    Le plus simple selon moi c'est le stockage dans un fichier ini sachant qu'en plus la FAQ VB et/ou Access de developpez.com propose des exemples prêts à être réutilisés.

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Le stockage dans une variable globale n'est-elle pas valable que lorsque la macro tourne ? Si on arrête la macro, tout est perdu, non ?
    En ce qui concerne les variables d'environnement, je ne connais ces choses ! Est-il possible d'en créer en vba qui soient valables le temps de la session du logiciel ?
    Le stockage dans une BD est une solution équivalente à un fichier ini, en un peu plus compliqué.

    Comme je venais de découvrir qu'on pouvait entrer des valeurs directement dans les textbox en mode création, je me demandais s'il était possible de faire pareil mais pendant l'exécution de la macro. Apparemment, non.

    Donc, le plus simple, si les variables d'environnement ne fonctionnent pas, serait de passer par un fichier ini planqué dans un répertoire temporaire ?

    JM

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Je suis en train d'écrire une fonction pour écrire et lire un fichier ini afin de stocker chaque valeur des controles qui sont sur le formulaire que je veux sauvegarder.

    La lecture et l'écriture du fichier ini se passe parfaitement bien, mais je me heurte à un petit problème auquel je ne trouve pas de solution : je n'arrive pas à lire le nom du formulaire que je passe à ma fonction !

    Exemple :

    dans la procédure pour fermer le formulaire, je lance la fonction comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SauverFormulaire formGousset
    formGousset étant le nom de l'objet du formulaire

    et voici ma fonction pour sauvegarder (qui est dans un module) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function SauverFormulaire(formulaire As UserForm) As Boolean
    
    Dim ctrl As Control
    Dim NomForm As String
    
    NomForm = formulaire.Name '<--- ERREUR ICI !
        'Mise en mémoire de chaque valeurs du formulaire
        For Each ctrl In formulaire.Controls
        If TypeOf ctrl Is TextBox Or TypeOf ctrl Is ComboBox Or TypeOf ctrl Is OptionButton Then
            EcrireFichierIni NomForm, ctrl.Name, ctrl.Value
        End If
        Next ctrl
    End Function
    Quand je regarde dans la fenêtre Variables locales, il semble que .name n'existe pas !
    Comment peut-on faire ?
    Dois-je donner 2 paramètres, un pour l'objet + un pour son nom ? Ca va fonctionner, mais c'est moins propre !
    Une autre solution serait de donner le nom du formulaire en type string, puis récupérer l'objet à partir de ce nom.

    Mais, pour ma culture personnelle, comment faire pour récupérer le nom du formulaire ?

    Merci,

    JM

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    C'est quand même étonnant qu'on puisse faire un
    pour récupérer le nom d'un formulaire dans une procédure, mais si on passe en argument le formulaire dans une fonction :
    fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function NomFormulaire(Formulaire as Userform)
    msgbox Formulaire.Name
    End Function
    ceci ne fonctionne pas !

    Je contourne le problème en donnant 2 arguments à la fonction, l'objet formulaire, puis son nom, ça fonctionne correctement, mais c'est moins propre !

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFormulaire Me, Me.Name
    et la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function NomFormulaire(Formulaire as Userform, NomFormulaire as String)
    Dim ctrl as Control
    For Each ctrl in Formulaire.Controls
    msgbox NomFormulaire & " " & ctrl.Name
    Next
    End Function

  9. #9
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Salut

    Comme je venais de découvrir qu'on pouvait entrer des valeurs directement dans les textbox en mode création, je me demandais s'il était possible de faire pareil mais pendant l'exécution de la macro. Apparemment, non.
    Bas si suffit de faire

    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  10. #10
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Oui, mais quand on ferme le formulaire, la valeur est perdue et il faut la re-rentrer dans on le recharge...

    JM

  11. #11
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Moi je me prendrais pas la tete,

    je stockerais dans un fichier txt structurer toutes les textbox du style

    1er ligne : premier textbox
    2eme ligne : deuxième textbox
    ...


    Et au chargement de la form je lis le fichier text et je restitue les valeurs.

    C'est a dire au
    Form_close je sauve les données et au form_load je les restitue.

    tu vois ce que je veux dire?
    Cela te convient?

    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  12. #12
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Oui, c'est ce que j'ai fait, mais avec un fichier .ini qui est plus facile à manipuler pour faire ce genre de truc. Mais je voulais savoir s'il n'y avait pas une méthode plus simple pour conserver ces valeurs tant qu'on a pas quitté le programme (ici AutoCAD).

    JM

  13. #13
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Salut,


    Stockage dans une variable d'environnement
    C'est comme une variable Windows, renseigne toi dessus ca pourrait te convenir.

    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  14. #14
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,
    vois sinon peut-être aussi les tutos du genre :

    Visual Basic Editor

    pour manipuler le vba.. par macro.

    Si on ne trouve pas la méthode pour écrire dans la fenêtre propriétés, il y a peut-être la possibilité d'intervenir ainsi.

    tu attribues la valeur voulue à ton textbox via la procédure initialize de ton USF, ensuite tu vois avec les exemples cités pour à la fermeture de ton USF mettre dans la procédure appelante le code qui ira par exemple remplacer le mot voulu par le nouveau stocké en variable public entre deux. Ou autre chose du genre : destruction et reconstruction de l'initialize etc...

    Je m'appuie sur du VBA Excel, mais le vba étant le vba, le parallèle doit exister...

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  15. #15
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Merci pour ta solution, c'est celle qui correspond à ce que je recherchais. J'ignorais qu'on pouvait directement agir par vba sur du code vba !
    Ca m'ouvre de nouvelles perspectives,

    Jean-Marc

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/12/2011, 11h46
  2. Valeur par défaut dans un textbox ?
    Par charif591 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 14/11/2010, 18h25
  3. Réponses: 2
    Dernier message: 23/11/2009, 20h11
  4. Sélection valeur par défaut dans une zone de liste
    Par Cécile154 dans le forum IHM
    Réponses: 2
    Dernier message: 15/02/2005, 18h20
  5. Valeur par défaut dans une table objet
    Par Ricky81 dans le forum Oracle
    Réponses: 12
    Dernier message: 18/03/2004, 11h52

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