Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2007, 23h41   #1
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2007, 11h14   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2007, 15h48   #3
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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.
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 11h58   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
Citation:
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 ?
Citation:
- 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 :
Me.Label1.Caption = Val(Label1.Caption) + LaValeur
... où que tu prennes cette valeur.
Dans un TextBox c'est
Code :
Me.TextBox1.Text = Val(Me.TextBox1.Text) + 1
Citation:
- 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)
Citation:
- 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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 12h16   #5
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour


Citation:
- 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 :
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
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 14h55   #6
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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


à +
Fichiers attachés
Type de fichier : pdf tab modéle.pdf (222,6 Ko, 18 affichages)
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 13h23   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
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)
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 22h36   #8
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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 @++
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 22h59   #9
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
Re

Pour la scrolbar c'est testé et Ok: si tout était aussi simple !!!!!
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 09h36   #10
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
As-tu pensé à utiliser le caption de l'optionbutton ?
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2007, 01h32   #11
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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

@+++
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2007, 09h57   #12
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
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 :
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2007, 10h56   #13
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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 à ++
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 20h06   #14
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
Public Total as ... selon tes besoins byte, integer ou long
et pour l'addition
Code :
1
2
3
For Each Controle In Me.Controls
        If TypeOf Controle Is Label Then Total = Total + Val(Controle.caption)
Next
Non testé...
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 00h05   #15
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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 :
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 :
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
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 10h11   #16
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 13h42   #17
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
Je fais le total en additionnant les valeurs contenues dans les zones Label.
Voir exemple en début de discussion sur la PJ
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 23h44   #18
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 00h30   #19
Invité régulier
 
Avatar de clodius46
 
Inscription : août 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 67
Points : 6
Points : 6
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.
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 00h35   #20
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Code :
Me.LautreLabel.caption = cstr(Valeur)
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h49.


 
 
 
 
Partenaires

Hébergement Web