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 31/12/2007, 11h59   #1
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Par défaut Insertion de variables dans un document

Bonjour,

Je connais un peu VB sous Excel, mais je n'ai jamais utilisé sous Word.

Je souhaiterais lire un fichier afin de récupérer différente variable (ca je sais faire), puis les affecter à différentes position d'un document Word (ca je sais pas faire).

Merci de votre aide et bonne fêtes.
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2007, 12h10   #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
Pour les affecter à différents endroits du document, il faut que ces endroits soient marqués.
La solution la plus facile est l'utilisation de signets.

La première chose à faire est l'insertion de signets.

Ensuite on atteint les signets par la commande suivante :

Code :
1
2
 
ActiveDocument.Bookmarks("MonSignet").range.text = "Ma valeur à mettre"
On peut atteindre un signet de deux façon différentes, la première, via le nom du signet, la seconde via l'index.
__________________
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/12/2007, 12h38   #3
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Merci,

J'ai besoin d'avoir certaine de ces variables à plusieurs endroit du document (pour la même variable).

J'ai essayé d'inserer un même signet à 2 endroit différent, ca ne marche pas.

En fait je nomme le signet comme le nom de variable présent dans mon fichier, mais pour certaine je doit les mettre à plusieurs endroit.

Est-ce faisable ?
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2007, 12h50   #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
Il faut alors insérer une référence vers le signet principal.

Il ne te restera qu'à remplir ce signet.

http://heureuxoli.developpez.com/off...hamps/#LIV-D-8
[Edit]
Si ce sont des variables contenant certaines informations liées au document, elles sont disponibles sans passer par VBA.
[/Edit]
__________________
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/12/2007, 15h02   #5
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
J'ai bien inséré tout mes signets, mais j'ai pas trouvé comment mettre des référence aux signets.

Désolé
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2007, 15h34   #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 expliqué dans le lien que j'ai donné ?
Tu fais Ctrl + F9 tu inscrit dans les {} REF et ton signet.

Ou encore via l'interface, tu fais insérer champ et il y a un champ référence.
__________________
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 02/01/2008, 13h28   #7
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Bonjour, bonne année,

J'ai un petit problème :

Je lis un fichier comprenant des identifiants (qui sont également mes signets dans mon document Word) associé à une valeur numérique.

Pour chaque identifiant j'affecte le signet avec sa valeur par l'instruction
Code :
ActiveDocument.Bookmarks(signet).Range.Text = valeur
Mon problème est que certains identifiant n'existent pas dans mon document et dans ce cas il me produit une erreur 5941 (le membre de la collection requis n'existe pas).

Comment inorer cette erreur, je voudrais que dans ce cas la il ne fasse rien et passe au suivant.

Merci de votre aide
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 13h43   #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
Essaie

Lorsque l'on utilise cette gestion d'erreur, il faut être certain de maîtriser toutes les erreurs possibles. Si une autre erreur survient, elle sera simplement ignorée.
__________________
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 02/01/2008, 16h06   #9
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Merci,

J'ai encore une question, si je réexécute mon programme 2 fois, il me remet mes valeur une 2ème fois pour les signet à coté de la 1ere.

Comment lui dire de remplacer l'ancienne valeur ?

Merci
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 16h16   #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
La solution serait d'utiliser un FormFields.
__________________
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 02/01/2008, 16h21   #11
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
Combien de valeur doit tu insérer dans ton document, j'ai peut-être une autre idée.
__________________
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 02/01/2008, 16h28   #12
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Environ une centaine.
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 16h52   #13
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
Une centaine, c'est un peu beaucoup.
Il existe les variables de documents qui sont appelables via des des champs.

Mais 100, c'est faisable, mais c'est beaucoup.
__________________
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 02/01/2008, 17h01   #14
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
C'est quoi les FormFields ? c'est différent des signets ?

Ya pas un tutoriel sur le sujet ?
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 17h05   #15
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
Pas encore eu le temps.
Les FormFields sont des champs de formulaires et sont différents des signets.

C'est pas le but de la chose, mais on peut détourner les objets de leur utilité de départ.

Suivant la version de Word, on les insére avec les outils formulaires.
__________________
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/01/2008, 10h57   #16
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Bonjour,

Et les variables de document, c'est quoi ? encore autre chose ?

Sinon, c'est étonnant que pour les signet ya pas moyen de remplacer la valeur déja existante.
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 11h57   #17
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
Oui, les variables de document sont des variables que l'on peut atteindre par champ.

Voilà un exemple.
Le document possède un champ qui donne la valeur d'une variable de document.
__________________
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/01/2008, 12h56   #18
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
En cherchant dans ce forum j'ai trouvé un post qui me donne la solution, comment supprimer la valeur d'un signet avant de la réaffecter.

Mon problème viens du fait que j'ai des signet qui n'existent pas dans mon document et que je passe par .

Du coup il me détecte pas quand le signet n'existe pas et me détruit le premier, je sais pas si c'est très clair.

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Stat()
Open "Statistiques.txt" For Input As 1
On Error Resume Next
Do Until EOF(1)
    Line Input #1, enr
    signet = Mid(enr, 22, 10)
    valeur = Mid(enr, 102, 9)
    ActiveDocument.Bookmarks(signet).Select
    deb = Selection.Start
    fin = InStr(ActiveDocument.Range(deb), ")")
    ActiveDocument.Range(deb, deb + fin - 1).Delete
    ActiveDocument.Bookmarks(signet).Range.Text = valeur
Loop
Close 1
End Sub
En fait il faudrait que pour l'instruction
Code :
ActiveDocument.Bookmarks(signet).Select
, je puisse detecter s'il a trouvé le signet et dans ce cas faire la suite :

Code :
1
2
3
4
deb = Selection.Start
    fin = InStr(ActiveDocument.Range(deb), ")")
    ActiveDocument.Range(deb, deb + fin - 1).Delete
    ActiveDocument.Bookmarks(signet).Range.Text = valeur
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 13h04   #19
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
Sans vouloir être désagréable, tu nous laisses chercher et après plusieurs échange de messages, tu nous montres finalement ton code !
Que de temps 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
Vieux 03/01/2008, 13h09   #20
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Je suis désolé, mais je vous ai pas laissé chercher, je viens juste de le trouver sur ce forum :

http://www.developpez.net/forums/sho...ghlight=signet

Mais ca marche pas vraiment, j'ai le problème des signet qui n'existe pas et la suppression ne marche pas super.

Quand le signet ne comporte pas de valeur ca marche, mais quand il comporte une valeur il me supprime la valeur et le signet lui-même

Code :
1
2
3
4
5
6
7
ActiveDocument.Bookmarks(signet).Select
    deb = Selection.Start
    fin = InStr(ActiveDocument.Range(deb), ")")
    If fin > 1 Then
        ActiveDocument.Range(deb, deb + fin - 1).Delete
    End If
    ActiveDocument.Bookmarks(signet).Range.Text = valeur
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h02.


 
 
 
 
Partenaires

Hébergement Web