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 Word Discussion :

Création UserForm (Labels OptionButton TextBox )


Sujet :

VBA Word

  1. #1
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut Création UserForm (Labels OptionButton TextBox )
    Bonsoir à tous.

    Je souhaite créer un userform en vue d’établir un questionnaire avec un score chiffré : pour cela je vais placer dans cet userform :
    - des zones label qui vont me permettre d’insérer le texte de mes questions.
    - Des boutons d’options qui vont permettre de sélectionner les réponses ( un boutons d’options par réponse possible)
    - Des zones de texte (une zone par question qui contiendra le chiffre permettant de calculer le score en fonction de la réponse).
    - Une zone de texte qui permettra de calculer le score total en fonction des réponses par cumul de toutes les zones de texte ci-dessus.
    J’ai donc besoin d des codes pour
    - attribuer une valeur à chaque bouton options.
    - Renvoyer cette valeur vers la zone texte reliée à la question.
    - Faire le cumul de toutes les zones de texte et insérer la valeur obtenue dans la zone de texte finale.

    Merci d’avance pour cette nouvelle contribution

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Et tu veux faire ça dans Word ? Excel, pour les calculs, c'est mieux...
    Pour les textbox, si c'est simplement pour y placer un résultat, les labels, c'est aussi bien.
    Quant aux boutons d'option, si tu veux qu'une sélection exclut les autres, dans un frame, c'est mieux (l'aide explique ça très bien)
    Pour les calculs, tu peux ajouter une macro qui fasse ça que tu appelles à la demande.
    Besoin de code pour quoi ?
    A+

  3. #3
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut Création UserForm (Labels OptionButton TextBox )
    Bonjour ouskr'eln'or,

    Merci de ta réponse, J’opte pour Word car l’application que je souhaite réaliser devra être exploitable sur d’autres ordinateurs qui n’ont pas forcément Excel Je veux créer des groupes de boutons d’option et souhaite que la sélection d’un des boutons d’option entraine l’affichage d’un nombre dans un contrôle pourquoi pas un label si cela est suffisant. Le seul calcul à effectuer sera une addition des nombres figurant dans les contrôles label . Le résultat obtenu devra être reportable dans un autre UserForm. Je pense aussi à autre chose : je vais devoir rajouter un contrôle de défilement texte dans l’U_F_ le nombre de questions à poser étant de l’ordre d’une vingtaine soit 120 contrôles environ : 20 Contrôles Label ( un/questions) 80 boutons d’option ( 4/question)et 20 labels (1/question) + 1 label pour faire le total.
    Il me faut donc les code:
    - pour faire le lien entre le bouton d’option et la valeur que je veux donner à ce bouton
    - La macro ou le code pour effectuer automatiquement cette addition
    - Le code pour transférer mon résultat dans l’userform principal.
    - Le code pour mettre en place le défilement texte de l’U_F_
    Voila pour cette discussion qui est cependant à relier à mes précédentes questions qui sont pour le moment presque totalement résolues, sauf pour la création des onglets http://www.developpez.net/forums/sho...d.php?t=405073
    Voir aussi dès que possible :
    - Enregistrement d’un UserForm : http://www.developpez.net/forums/sho...d.php?t=399089
    - Insertion d’un retour à la ligne : http://www.developpez.net/forums/sho...d.php?t=405972
    Voila beaucoup d’exigences de ma part , mais c’est très important pour moi d’avancer rapidement car je ne trouve pas dans le commerce de logiciel pour effectuer correctement cette tache quotidienne, de collecte et de synthèse d’informations.

    Merci d’avance à toi Ouskel’n’or et à tous pour votre aide.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok. Alors au lieu d'avoir 80 boutons d'option, pourquoi ne pas prendre une combobox avec boutons d'option ? Tu n'auras qu'une combo par question au lieu de 4 textbox ou labels, la question étant dans l'en-tête. Pour chaque question une case à cocher. Ensuite tu récupères la réponse pour chacun d'eux. Tu peux limiter le nombre de ligne des combo à 4. Mais j'ai une crainte : N'est-ce pas toi qui as posé la question des combos pouvant, pour chaque item, afficher plusieurs lignes ? Si c'est toi, c'est que les réponses sont trop longue, et c'est rapé
    Sinon, cette solution serait moins lourde à gérer.

    Tes questions :
    Il me faut donc les code:
    - pour faire le lien entre le bouton d’option et la valeur que je veux donner à ce bouton
    Où prends-tu cette valeur ? Est-ce la réponse ? Quel bouton ? L'optionButton ?
    - La macro ou le code pour effectuer automatiquement cette addition
    Là, ça dépend de la réponse à la question précédente : Si tu utilises des labels, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Label1.Caption = Val(Label1.Caption) + LaValeur
    ... où que tu prennes cette valeur.
    Dans un TextBox c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextBox1.Text = Val(Me.TextBox1.Text) + 1
    - Le code pour transférer mon résultat dans l’userform principal.
    Tu as un ou vingt résultats ? Si tu n'en as qu'un, le plus simple pour t'affranchir des difficultés à passer des valeurs d'un ufrm à l'autre, tu as la variable Public à placer dans le module standard qui contient la macro qui ouvre le premier userform.
    Pour vingt, tu peux transférer les données d'un userform dans l'autre si le second (celui contenant les données à transférer) n'est que "masqué" (par Usf.Hide) et non déchargé (Unload Usf)
    - Le code pour mettre en place le défilement texte de l’U_F_
    Que veux-tu dire ? Tu veux faire défiler du texte ? Où ça ?
    Je t'apporte plus de questions que de réponses, je sais

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour


    - Le code pour mettre en place le défilement texte de l’U_F_
    Un exemple en utilisant un WebBrowser ("Navigateur Web Microsoft" dans la liste des contrôles supplémentaires)

    scrollAmount définit la vitesse de défilement.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
        ParametresHtml "Le forum DVP: Un texte qui défile.", "#000099"
    End Sub
     
     
    Private Sub ParametresHtml(LeTexte As String, LaCouleur As String)
        Me.WebBrowser1.Navigate _
            "about:<html><body BGCOLOR ='#CCCCCC' scroll='no'><font color= " _
            & LaCouleur & " size='5' face='Arial'>" & _
            "<marquee scrollAmount=3>" & LeTexte & "</marquee></font></body></html>"
    End Sub


    bonne journée
    michel

  6. #6
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    En fait c’est tout simple Ouskel'n'or et BilkyRoad,
    je vais prendre un exemple (Voir tableau en piece jointe)

    Je place pour chaque question
    - 1 zone labelQ1 pour mettre le texte de la question 1
    - 1 groupe de 3 boutons d'option par question.
    - 1 zone labelR1 pour la réponse de la question 1

    Si le patient répond non à la Question 1) le click du bouton d'option va entrainer automatiquement l'affichage de la valeur 2 dans une zone texte ou labelR1.S'il avait répondu oui le click aurait ->l'affichage d'une valeur 0
    - Pour la question 2 le patient répond "Partiellement" ->affichage d'une valeur 1 dans une zone ou labelR2 Voilà j'espère que c'est un peu plus clair et ainsi de suite ..... jusqu'a la Question 20
    Dans l'exemple le score total qui devrait se calculer seul est de valeur 3
    C'est cette valeur 3 que je veux reporter dans l'userform cipale. S'il y a 20 questions cette valeur s'afficherait dans une label21 = Label1+label2+label.... à + label20

    Pour le contrôle défilement texte j'ai pris mon exemple avec seuleument 3 questions. Si j'ai 20 questions à poser tout ne vas pas rentrer dans l'UserForm : il me faut donc mettre en place une barre de défilement ScrolBar (Microsoft VB 6.3 ) verticale pour faure défiler mon UserForm

    Voilà j'espère que c'est un peu plus clair


    à +
    Images attachées Images attachées

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Corrigé avec ajout d'un bouton...
    Je vais déjà répondre à ta dernière question. Pour ça, tu prends un userform tout neuf.
    Dans l'userform tu mets une scrollbar
    et tu ajoutes un bouton [/B]pour retourner en sommet d'USF
    Ensuite tu colles ce code dans la feuille de code de l'usf

    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
     
    Dim DifTop
    Private Sub CommandButton1_Click()
    ScrollBar1.Value = 0
    End Sub
     
    Private Sub ScrollBar1_Change()
        Me.Top = DifTop - ScrollBar1.Value
        Label1.Caption = Me.Top & "  " & ScrollBar1.Value
    End Sub
     
    Private Sub UserForm_Activate()
        Me.Height = 1111
        Me.ScrollBar1.Height = Me.Height
        Me.ScrollBar1.Max = Me.Height
        DifTop = Me.Top
        Me.CommandButton1.Top = Me.Height - 70
    End Sub
    Le bouton peut être placé n'importe où, son positionnement étant dynamique (ici)

  8. #8
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Bonsoir Ouskel'n'or

    Citation Envoyé par ouskel'n'or Voir le message

    Pour les autres questions, mets-tu des optionbuttons dans un cadre ? (frame)
    Si tu veux : cela serait plus présentable s'il n'y a pas d'inconvénients. Options boutons mais aussi les labels.

    Je pense également à autre chose ; il faut que je puisse réouvrir cette userform avec les réponses saisies donc sauver en quittant par la croix: Cette userform Sera en fait un sous formulaire d'une UserForm principale que j'ouvrirai grâce à un command button placé dans l'user principale. Si des données ont été saisies dans l'user secondaire elles devront réapparaitre lors d'une réouverture.
    Pour la Scrolbar dit comme ça je devrais y arriver !!

    bcp @++

  9. #9
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Re

    Pour la scrolbar c'est testé et Ok: si tout était aussi simple !!!!!

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    As-tu pensé à utiliser le caption de l'optionbutton ?

  11. #11
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    RE
    Citation Envoyé par ouskel'n'or Voir le message
    As-tu pensé à utiliser le caption de l'optionbutton ?
    je ne peux pas car la caption de l'optionbutton affiche la réponse à la question posée et je veux attribuer en fonction de cette réponse une valeur numérique.
    EX :
    OptionButton1 : Dans la caption je mets Oui
    OptionButton2: Dans la caption je mets Partiel
    OptionButton3 : Dans la caption je mets Non
    - si la personne répond Oui j'affiche dans la Label1 associée une valeur = 0,
    - si elle choisit la réponse Partiel j'affiche dans la Label1 associée une
    valeur = 1
    - si elle choisit la réponse Non j'affiche dans la Label1 associée une
    valeur = 2

    @+++

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon. Ce que je fais quand je veux associer divers contrôles, je donne à chaque type de contrôle le même nom Reponse pour les Labels, Option pour les checkbox, Question pour les ... etc.
    Pour les différentier, j'ajoute un index à chaque nom de contrôle de même type
    Reponse1, Reponse2, Reponse3, ...
    Option1, Option2, Option 3
    Pour les utiliser, j'utilise l'index pour chaque type de contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i = 1 to NbreDeControlesAvérifier
         if Me.Controls("Option" & i) = True then _
              Me.controls("Reponse" & i) = LaRéponse(i)
    Next
    Code que tu peux simplifier en ne mettant que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Me.Controls("Option" & i) then _
    En prenant l'un de tes exemples, si l'option bouton1 est validée, la réponse est la réponse 1 et la valeur donnée à cette réponse 0
    Juste pour l'idée.
    A+

  13. #13
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Ok ça a l'air finalement assez simple. Pour terminer ce formulaire il me reste à effectuer la somme des valeurs de mes contrôles labels et d'envoyer le résultat dans l'userform principal. donc en résumé
    - un code pour additionner plusieurs labels
    - un code pour transférer le résultat

    Merci à ++

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Le plus simple (je ne sais plus si c'est à toi que je l'ai indiqué..) c'est la variable déclarée en Public dans le module standard (dans lequel se trouve la macro qui ouvre l'userform par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Total as ... selon tes besoins byte, integer ou long
    et pour l'addition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Controle In Me.Controls
            If TypeOf Controle Is Label Then Total = Total + Val(Controle.caption)
    Next
    Non testé...

  15. #15
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Bon pour les valeurs à associer au click sur mes optionbutton j'ai eu finalement un peu de mal j'ai fini par mettre le code suivant pour chaque bouton d'option et c'est bien ce que je voulais faire exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub OptionButton3_Click()
    If Controls("OptionButton3").Value = True Then
    Label4 = "2"
    End If
    End Sub
    J'aurais besoin de plus de détails :
    - pour additionner les valeurs numériques de plusieurs labels par exemple "valeur"Label5 = "valeur"Label4 + "valeur"Label3 + "valeur"Label2 + "valeur"Label1
    Jai mis le code que tu me donne mais cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each Controle In Me.Controls
            If TypeOf Controle Is Label Then Total = Total + Val(Controle.caption)
    Next
    
    
    ????????
    - Pour reporter ce total contenu dans cette label5 vers une autre Label située dans une autre UserForm je souhaite egalement un peu plus de détails

    Merci de tes réponses

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comment récupères-tu Total ?
    Pour tester, mets un msgbox Total en fin de boucle ou ajoute un Debug.print Total et affiche la fenêtre Exécution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each Controle In Me.Controls
            If TypeOf Controle Is Label Then Total = Total + Val(Controle.caption)
    Next
    Msgbox Total
    'ou
    Debug.print Total
    Tu dis

  17. #17
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Je fais le total en additionnant les valeurs contenues dans les zones Label.
    Voir exemple en début de discussion sur la PJ

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ce n'est pas la question. Quel total obtiens-tu ? Le code que je t'ai mis vise à l'obtenir en sortie de formule de calcul.

  19. #19
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    En fait j'ai testé : le résultat obtenu dans Le MsgBox est bon il correspond à l"addition des différentes zones labels mais je veux afficher ce résultat dans une autre zone label.

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.LautreLabel.caption = cstr(Valeur)

Discussions similaires

  1. ensemble de label et textbox
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/12/2006, 16h43
  2. Création de label par VBA (excel)
    Par WagaSeb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2006, 14h46
  3. [etiquette] peut on gerer la création de label
    Par ozzmax dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 29/09/2006, 18h29
  4. [VB6] Soucis avec Création de label dynamique
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/06/2006, 18h55
  5. Réponses: 2
    Dernier message: 12/06/2006, 11h51

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