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 05/06/2011, 15h34   #1
Invité de passage
 
Inscription : juin 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Par défaut remplir signet via userform

Bonjour à tous,
Je cherche à faire un truc simple mais comme je débute...
Je voudrais remplir deux valeurs dans un document word qui va me servir a imprimer des étiquettes.

Pour cela j'ai créer dans mon documents des signets nommés "nom" et "date"
J'ai créer une macro nommée "autoopen" pour qu'elle s'execute a l'ouverture du document et me lance "Userform1" avec userform1.show

Dans le code de UserForm1 j'ai mis :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub CommandButton1_Click()
Dim nom1 As String
Dim date1 As String
'num_nom et num_date sont les noms des textbox
nom1 = num_nom.Value
date1 = num_date.Value
End
End Sub
Private Sub Label1_Click()
End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub TextBox2_Change()
End Sub
Private Sub UserForm_Click()
End Sub
J'ai essayé plein d'autres choses, j'ai acheté un bouquin pour essayer de comprendre comment faire mais rien n'y fait...je vais baisser les bras...

Au secours...
Joak60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 16h04   #2
Invité de passage
 
Inscription : juin 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
J'ai essayé autre chose :

Code :
1
2
3
4
5
6
7
8
Private Sub CommandButton1_Click()
Dim nom1 As String
Dim date1 As String
nom1 = num_nom.Value
date1 = num_date.Value
ActiveDocument.FormFields("nom").Result = nom1
ActiveDocument.FormFields("date").Result = date1
End
J'ai comme résultat le message d'erreur :
Le membre de la collection requise n'existe pas.
Joak60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 17h38   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
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 323
Points : 29 225
Points : 29 225
Salut,

C'est un peu confus !

Tu nous parles de Signet et dans ton code, tu fais appel à des Champs de Formulaire.

Ce sont des choses différentes, même si un champ de formulaire possède un nom de signet.
__________________
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 07/06/2011, 00h10   #4
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Si tu as des signets et que le code est dans le module du formulaire, tu peux essayer
Code :
ThisWorkbook.Bookmarks("nom").Range.Text = Me.num_nom.value
.

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 09h19   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
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 323
Points : 29 225
Points : 29 225
Salut,

Malheureusement, ça ne fonctionne pas lorsque le formulaire est actif. Le mode protégé empèche le remplissage du signet.
__________________
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 08/06/2011, 01h05   #6
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

J'ai essayé et chez moi cela marche. Bien sûr, il fallait lire au lieu de ThisWorkbook.

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 07h26   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
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 323
Points : 29 225
Points : 29 225
Salut,

J'ai essayé en 2003, 2007 et 2010, lorsque le document est protégé, on ne peut accéder au signet.
Avec une erreur d'exécution 6124.
__________________
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 08/06/2011, 13h31   #8
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour Heurex-Oli

Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Malheureusement, ça ne fonctionne pas lorsque le formulaire est actif. Le mode protégé empèche le remplissage du signet.
Dans un document j'écris "Mr et Mme sont des clients de notre filiale Banan Co."
Sur le point d'insertion devant le "s" de "sont" j'insère un signet que je nomme "bkmPoint".
Je sélectionne tout le mot "clients" et je lui associe le signet "bkmPlage".

Je crée un formulaire avec 2 textboxes que je nomme "txbNom" et "txbStatut"; et 1 bouton de commande que je nomme "BtnOK"

Code :
1
2
3
4
5
Private Sub BtnOK_Click()
    ThisDocument.Bookmarks("bkmPoint").Range.Text = Trim$(Me.txbNom) & " "
    ThisDocument.Bookmarks("bkmPlage").Range.Text = Me.txbStatut
    Unload Me
End Sub
J'ouvre le formulaire. Je renseigne :
txbNom : Duchemin
txbStatut : prospects
je clique OK.

Dans mon document, le texte est devenu "Mr et Mme Duchemin sont des prospects de notre filiale Banan Co."

Il faut noter que le signet blmPoint reste un point d'insertion placé devat de "D" de "Duchemin". Le signet "bkmPlage" est supprimé. On peut ajouter qq instructions pour modifier cela, suivant ce que l'on souhaite obtenir.
J'ai essayé avec WD 2007.

Citation:
Envoyé par Heureux-oli
J'ai essayé en 2003, 2007 et 2010, lorsque le document est protégé, on ne peut accéder au signet.
Avec une erreur d'exécution 6124.
Là je me demande si nous parlons de la même chose. C'est d'ailleurs peut-être moi qui n'ai rien compris à la question posée.
Autre interrogation : la question intéresse-t-elle encore Joak60?

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 14h33   #9
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
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 323
Points : 29 225
Points : 29 225
Salut,

Voilà un document qui tente de remplir un champ de formulaire.
Fichiers attachés
Type de fichier : zip formulaire.zip (7,4 Ko, 25 affichages)
__________________
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 08/06/2011, 17h09   #10
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Hello!

J'ai l'impression qu'on s'éloigne du sujet, mais ce n'est pas grave.


Dans ton exemple, on a à faire à un champ et on peut faire :
Code :
1
2
3
Sub Document_Open()
ThisDocument.Bookmarks("Text1").Range.Fields(1).Result.Text = InputBox("Texte à insérer", "Essai")
End Sub


Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 17h40   #11
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
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 323
Points : 29 225
Points : 29 225
Salut,

On n'est plus dans le Range du Bookmark, mais dans le Result du Field.

Et pour le Result, pas besoin de passer par le signet.

Code :
ActiveDocument.FormFields(1).Result
__________________
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 08/06/2011, 19h22   #12
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Ce n'est pas toujours pratique d'appeler un champ par son index.

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 23h27   #13
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
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 323
Points : 29 225
Points : 29 225
Salut,

Index ou nom, ça ne change iren, j'utilise l'index pour mes exemples, c'est plus rapide que par leur nom. Dans le meilleur des cas, on gagne deux caractères.
__________________
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 10/06/2011, 09h13   #14
Invité de passage
 
Inscription : juin 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Merci à tous pour vos réponses, j'ai résolu mon problème en mettant un bout de code qui provoque la mise à jour des champs à l'ouverture du document car je manque un peu de temps en ce moment.
Je vais tester toutes les solutions que vous m'avez proposer et je reviendrais poster le résultat.
Encore merci.
Joak60 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 18h47.


 
 
 
 
Partenaires

Hébergement Web