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 03/05/2007, 10h19   #1
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Par défaut [VBA-W] traitement de toutes mes balises

Bonjour,
J'ai un problème de boucle!!
J'ai un document word avec des balises contenant des chemins de fichiers à insérer.
Ces balises sont identifiées sous la forme: <chemin>
Ma macro fonctionne très bien mais je dois la répéter manuellement pour toutes mes balises.
Comment faire pour lire mon document et pour chaque balise lancer la macro?

Merci de vos réponses
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 10h25   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
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 351
Points : 29 264
Points : 29 264
Tes balises sont-elles toujours remplacée par la même chaîne ?
__________________
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/05/2007, 10h32   #3
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Mes balises commence toujours par "<" et termine par ">". Et à l'interieur se trouve le chemin de mon fichier à mettre dans word.
Une fois le fichier dans word la balise est supprimée.

Voila le code qui me permet de trouver la balise et d'extraire le chemin:




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
Function BaliseWord() As String
'Fonction qui trouve la premiere balise (<....>) du document
'et extrait le chemin
 
    Dim Emplacement As String
    ActiveWindow.ActivePane.View.ShowAll = True
 
    'Selectionne entre < >
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .Text = "<"
    End With
    Selection.Find.Execute
    With Selection
        .ExtendMode = True
        With .Find
            .Text = ">"
        End With
    End With
    Selection.Find.Execute
 
    Emplacement = Selection
    BaliseWord = Strip(Emplacement, "<", ">")
 
    ActiveWindow.ActivePane.View.ShowAll = False
 
End Function
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 11h41   #4
Membre du Club
 
Inscription : février 2007
Messages : 71
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2007
Messages : 71
Points : 62
Points : 62
ne pourrais-tu pas utiliser un fichier xml plutot qu'un document word ?

avec un xml tu pourrais naviguer beaucoup plus facilement entre les balises et les noeuds....
Speedrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 11h48   #5
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Non je suis bloqué à word 2002, j'ai presque trouvé, mais comment faire pour deselectionner?
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 12h22   #6
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
Teste ça
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub RechercheEnBoucle()
Dim fin as boolean
 
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .Text = "[<]*[>]"
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Do While Not fin
        fin = Selection.Find.Execute = False
        If Not fin Then MsgBox Mid(Selection.Text, 2, Len(Selection.Text) - 2)
    Loop
End Sub
Tu sauras effacer la selection ?
Tu dis
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 14h40   #7
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
petits soucis pour déselectionner, je ne trouve pas la commande
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 14h52   #8
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Je ne comprend pas tout ton code notamment les 4 dernierers lignes:

Code :
1
2
3
4
Do While Not fin
        fin = Selection.Find.Execute = False
        If Not fin Then MsgBox Mid(Selection.Text, 2, Len(Selection.Text) - 2)
Loop
pourrais tu me les commenter ou expliquer vite fait
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 15h17   #9
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
Citation:
Envoyé par dev81
Je ne comprend pas tout ton code notamment les 4 dernierers lignes:

Code :
1
2
3
4
Do While Not fin
        fin = Selection.Find.Execute = False
        If Not fin Then MsgBox Mid(Selection.Text, 2, Len(Selection.Text) - 2)
Loop
pourrais tu me les commenter ou expliquer vite fait
Oui, je peux le faire :
Citation:
fin = Selection.Find.Execute = False
'si la recherche ne retrouve plus l'occurence, Fin = True => Sortie de boucle
Citation:
If Not fin Then MsgBox Mid(Selection.Text, 2, Len(Selection.Text) - 2)
'Si la recherche a trouvé, affiche ce qu'elle a trouvé. Tu peux aussi mettre
Code :
        If Not fin Then Resultat = Mid(Selection.Text, 2, Len(Selection.Text) - 2)
Quant à
Citation:
Mid(Selection.Text, 2, Len(Selection.Text) - 2)
Retire les caractères < et > au mot trouvé. Ex : <Le mot que je cherchais> donne "Le mot que je cherchais"
A+
ouskel'n'or 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 02h56.


 
 
 
 
Partenaires

Hébergement Web