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 10/10/2011, 16h54   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Par défaut "boucler" textbox vers signet

Bonjour,

J'ai un userform qui comprend plusieurs textbox.
Mon document word comprend autant de signets que de textbox.
Les textbox sont libellés ainsi textbox1, textbox2, ... et les signets ainsi signet1, signet2,...

Je pensais boucler le tout avec des "for i=i+1" un truc du genre mais je n'y arrive pas.
J'ai des bribes de code :
Code :
1
2
dim i as integer
For i = 1 to 40 '40 étant le nombre de signets. C'est ça ?
J'aimerais faire appel à cette macro pour le remplissage des signets :
Code :
1
2
3
4
5
6
7
8
Sub BookmarkNewValue(ByVal NomSignet As String, ByVal NouvelleValeurSignet As String)
If ActiveDocument.Bookmarks.Exists(NomSignet) Then
ActiveDocument.Bookmarks(NomSignet).Select
Selection = NouvelleValeurSignet 'le bug est ici... le remplacement de la valeur supprime le signet
Selection.Bookmarks.Add Name:=NomSignet, Range:=Selection.Range
Selection.MoveRight Unit:=wdCharacter, Count:=1
End If
End Sub
Si quelqu'un pouvait m'aider à tout assembler

Merci
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h26   #2
Responsable Word

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

Il faut concaténer le nom du controle ou le nom du signet et la valeur de I

Voilà un exemple de boucle sur les contrôles :

Code :
1
2
3
4
Dim intI As Integer
For intI = 1 To 3
Me.Controls.Item("TextBox" & intI) = "Oli " & intI
Next intI
__________________
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 11/10/2011, 11h48   #3
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Bonjour,

Merci pour cette réponse.
Cependant elle ne répond pas à mes attentes. Je me suis sans doute mal exprimé.
En effet, avec le code fourni, quand je clique sur "ok" dans l'USF mes textbox affiche "signet1", "signet2", ...
Or j'aimerais que le contenu de mes textbox soit renvoyé vers les signets du document.

J'utilise actuellement ce code :
Code :
1
2
3
4
 
Bookmarknewvalue "signet1", Me.textbox1
Bookmarknewvalue "signet2", Me.textbox2
...
Mais c'est trop long à coder.
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 18h17   #4
Responsable Word

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

Pour l'envoi vers le document, c'est :
Code :
ActiveDocument.Bookmarks(NomSignet).range.text = NouvelleValeurSignet
Par contre, pour UserForm, sans aucune ligne de code, pas possible de dire d'où vient l'erreur.
__________________
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 12/10/2011, 09h19   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Bonjour,

Bon, je reprends.

Dans mon USF j'ai ce code :
Code :
1
2
3
4
Private sub commandbutton1_Click()
Bookmarknewvalue "signet1", Me.textbox1
Bookmarknewvalue "signet2", Me.textbox2
end sub
Et dans un module j'ai ce code :
Code :
1
2
3
4
5
6
7
8
Sub BookmarkNewValue(ByVal NomSignet As String, ByVal NouvelleValeurSignet As String)
If ActiveDocument.Bookmarks.Exists(NomSignet) Then
ActiveDocument.Bookmarks(NomSignet).Select
Selection = NouvelleValeurSignet 'le bug est ici... le remplacement de la valeur supprime le signet
Selection.Bookmarks.Add Name:=NomSignet, Range:=Selection.Range
Selection.MoveRight Unit:=wdCharacter, Count:=1
End If
End Sub
Ce système fonctionne bien.
Je voudrais juste éviter à avoir à écrire 30 fois la même chose car 30 textbox pour 30 signets.

Merci
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 16h35   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Il faut concaténer le nom du controle ou le nom du signet et la valeur de I

Voilà un exemple de boucle sur les contrôles :

Code :
1
2
3
4
Dim intI As Integer
For intI = 1 To 3
Me.Controls.Item("TextBox" & intI) = "Oli " & intI
Next intI
Tu me dit que ce n'est pas ça que tu cherches ??

Or, c'est une boucle sur les TextBox d'un userform, je n'en ai mis que trois dans mon UF de 1 à 3.

Tu me dis que tu souhaites injecter dans un signet le contenu des TextBox, je donne le code à utiliser dans ta fonction :
Code :
 ActiveDocument.Bookmarks(NomSignet).range.text = NouvelleValeurSignet
c'est toujours pas ce que tu cherches !

je suis un peu perdu.
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h37.


 
 
 
 
Partenaires

Hébergement Web