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 27/10/2007, 00h27   #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 Réouverture d'un UserForm avec données préalablement saisies

Bonsoir Heureux-Oli, Bonsoir à tous,

Citation:
J'ai encore une question :Est-il possible lorsque on saisit des valeurs dans un userform de réouvrir celui-ci avec les valeurs déjà saisies ?
Citation:
Envoyé par Heureux-oli
Oui, c'est tout à fait possible, mais il faut passer par des variables Document.
Elle resteront même si tu fermes le document.

Code :

ActiveDocument.Variables.Add Name:="vdTextBox1"
vdTextBox1 = Me.textBox1

Mais si tu ne veux pas lever d'erreur, il faut tester l'existence de la variable avant de lui attribuer un nom.

Cela pourrait-il te convenir ?


Je pense que cela devrait convenir : Si on reprend l'exemple en pièce jointe il faudrait pouvoir réouvrir l'UF avec les valeurs numériques mais surtout avec les OptionButton qui sont activés et qui constituent la réponse aux questions posées.Si je comprend bien il faut créer un document qui va contenir les différentes valeurs et auquelles on va se référer pour les renvoyer vers l'UF . Le code que tu indique sera placé ou ?

PS : Je n'arrive pas à insérer mon fichier contenant mon UF en cliquant sur le trombone
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2007, 11h04   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Les variables documents, sont des variables qui gardent leur valeur même après avoir fermé le document.

Ces variables seront des Variants.

Pour ce qui est de remettre les valeurs aux boutons, il faudra utiliser du code.

Pour commencer, Initialiser les variables en fonction des noms. Comme tu as choisis d'utiliser des label pour les données, j'ai pris les labels.

Code :
1
2
3
4
5
6
7
8
Private Sub RunOnce()
Dim ctrl As Control
For Each ctrl In Me.Controls
    If Left(ctrl.Name, 4) = "labe" Then
        ActiveDocument.Variables.Add Name:=ctrl.Name
    End If
Next ctrl
End Sub
Ce code est à faire tourner un seule fois, une seconde lèverait une erreur, je n'ai pas mis en place la gestion d'erreur.

A partir de ce moment, nous avons nos variables document qui sont initialisées.

Pour récupérer le contenue des variables et les injecter dans les contrôles

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Private Sub UserForm_Initialize()
Dim varDoc As Variable
Dim ctrl As Control
For Each varDoc In ActiveDocument.Variables
Debug.Print varDoc.Name
    Me.Controls(varDoc.Name).Caption = varDoc.Value
Next varDoc
For Each ctrl In Me.Controls
Debug.Print ctrl.Name
Next ctrl
End Sub
Pour injecter le contenu de dans les variables :
Code :
1
2
3
4
5
6
7
8
 
Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In Me.Controls
   If Left(ctrl.Name, 4) = "labe" Then ActiveDocument.Variables(ctrl.Name) = ctrl.Caption
Next ctrl
 
End Sub
Maintenant, tu va être confronté à un autre problème qui fera l'objet d'un nouveau message, comme remettre mes options button en fonction de la valeur des contrôles ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2007, 12h33   #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
Peut tu préciser où placer les différents codes et une fois ceux-ci en place comment faire pour réouvrir l'UF. : je suppose que c'est avec le CommandButton placé sur le document qui va contenir les variables Faut-il créer le document qui va contenir les variables et sous quel nom ?
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 14h31   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Le premier est à faire fonctionner une fois avec F5.

Le second va fonctionner dès l'ouverture du UF

Let troisième sur un bouton de ton UF de ton choix.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 21h30   #5
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
Voici mon code : peut tu le regarder et me dire ce qui ne vas pas pour faire basculer les données à la réouverture de L'UF. Comment pourrait'on faire pour mettre sur le forum mon UF puisque je n'arrive pas à mettre ce fichir en pièce jointe (Si je te l'envoi par mail peut tu le transférer)

Code :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Option Explicit
 
Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In Me.Controls
   If Left(ctrl.Name, 4) = "labe" Then ActiveDocument.Variables(ctrl.Name) = ctrl.Caption
Next ctrl
End Sub
 
Private Sub Frame1_Click()
 
End Sub
 
Private Sub OptionButton1_Click()
Me.Label1 = 1
MonTotal
End Sub
 
Private Sub OptionButton2_Click()
Me.Label2 = 1
MonTotal
End Sub
 
Private Sub OptionButton3_Click()
Me.Label1 = 2
MonTotal
End Sub
 
Private Sub OptionButton4_Click()
Me.Label2 = 2
MonTotal
End Sub
 
 
Private Function MonTotal()
'If Me.TextBox1 = "" Then Me.TextBox1 = 0
'If Me.TextBox2 = "" Then Me.TextBox2 = 0
Label3 = Val(Label1) + Val(Label2)
'Me.Label3.Caption = CInt(Me.Label1) + CInt(Me.Label2)
End Function
 
Private Sub UserForm_Click()
 
End Sub
Private Sub RunOnce()
Dim ctrl As Control
For Each ctrl In Me.Controls
    If Left(ctrl.Name, 4) = "labe" Then
        ActiveDocument.Variables.Add Name:=ctrl.Name
    End If
Next ctrl
End Sub
Private Sub UserForm_Initialize()
Dim varDoc As Variable
Dim ctrl As Control
For Each varDoc In ActiveDocument.Variables
Debug.Print varDoc.Name
    Me.Controls(varDoc.Name).Caption = varDoc.Value
Next varDoc
For Each ctrl In Me.Controls
Debug.Print ctrl.Name
Next ctrl
End Sub
Merci d'avance a +
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 21h50   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
C'est tout le doc que tu dois mettre, mais quel est ton souci ?

Ce serait plus facile si tu expliquais ce qui se passe !
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 22h17   #7
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
Citation:
Envoyé par Heureux-oli Voir le message
Le premier est à faire fonctionner une fois avec F5.

Le second va fonctionner dès l'ouverture du UF

Let troisième sur un bouton de ton UF de ton choix.
Si je mets des valeurs dans les zones labels en cliquant sur les options bouttons le total s"effectue dans la label destinée à recevoir le résultat. Pour fermer l'UF je quitte par la X. Jusque là tout va bien Si je réouvre mon UF pour retrouver les valeurs saisies lors du précédent accès je fais F5 cela devrait exécuter le code 1 et 2 puis en cliquant sur mon CommandButton celà devrait réinjecter les valeurs dans l'uf Si celà ne correspond pas à la procédure dis le moi car l'action sur F5 et sur le CommandButton n'a aucun effet
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 06h29   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
L'action de la touche F5 ne doit être utilisée qu'une seule fois pour initialiser les variables documents.

Le bouton de commande, je l'avais mis pour ce que je n'avais rien d'autre sur mon UserForm, il sert à injecter les valeurs des Labels dans les variables document qui seront récupérées à l'ouverture du UserForm.



Ensuite, le simple fait de réouvrir le UserForm va remettre les données contenues dans les variables documents dans leur contrôle respectif.

Voilà, j'ai mis le document que j'ai utilisé pour faire mes tests.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 10h19   #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
Citation:
Envoyé par Heureux-oli Voir le message
L'action de la touche F5 ne doit être utilisée qu'une seule fois pour initialiser les variables documents.

Le bouton de commande, je l'avais mis pour ce que je n'avais rien d'autre sur mon UserForm, il sert à injecter les valeurs des Labels dans les variables document qui seront récupérées à l'ouverture du UserForm.



Ensuite, le simple fait de réouvrir le UserForm va remettre les données contenues dans les variables documents dans leur contrôle respectif.

Voilà, j'ai mis le document que j'ai utilisé pour faire mes tests.
Merci j'ai testé cela marche , cependant je ne comprend pas le s'il faut utiliser F5 seuleument Lors de la première ouverture de l'UF.
Comment tu procède pour ouvrir par la suite L'UF sans Valeur dans dans les Labels
clodius46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 13h32   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Si tu veux avoir le choix de recharger les données ou non, il faut alors passer par un bouton.

F5, c'est lors de la première utilisation du document, on peut mettre une procédure de vérification, mais si c'est pour une seule fois, on peut le faire en manuel.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2007, 19h06   #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
Voilà des précisions sur mon projet ; En fait c’est la suite de la discussion :
-http://www.developpez.net/forums/sho...d.php?t=430487
En résumé mon UF contient un questionnaire qui me permet de calculer un score. Les réponses sont sélectionnées grâce à des boutons d'option qui lorsque ils sont cliqués renvoient des valeurs vers des labels . Un cumul automatique de ces valeurs se fait dans un label destiné à recevoir le total.
Je dois pouvoir :
-une fois mon questionnaire complété pouvoir l’ ‘’enregistrer sous’’ et le rouvrir ultérieurement sous son nouveau nom
-ou ouvrir mon UF modèle vierge de toute réponse pour calculer un nouveau score
Voir le fichier joint en exemple
Merci @++
Fichiers attachés
Type de fichier : doc ESSAI LABELS AVEC TOTAL SOMME97.doc (39,0 Ko, 7 affichages)
clodius46 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 15h55.


 
 
 
 
Partenaires

Hébergement Web