Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office
Microsoft Office Forum d'entraide sur Microsoft Office
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 16/04/2009, 12h14   #1
Invité régulier
 
Inscription : juillet 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 35
Points : 8
Points : 8
Par défaut Macro Lien Hypertexte Word/Excel

Bonjour à tous,

J'ai déjà posté mon problème il y a quelque temps dans une autre section, mais je ne pense pas avoir expliqué assez clairement.

Pour essayez de faire simple, j'aimerais une macro dans un Word, qui parcours le document; et dés qu'une chaine de caractère correspond a une cellule excel, j'aimerais qu'il prenne une adresse comme lien hypertexte.

Par exemple j'ai un doc word, où je vois la chaine AABB, qui correspond a une cellule unique dans un excel par exemple A1 (ou j'ai donc AABB), et en B1 j'ai l'adresse correspondant a cette chaine (www.google.com par exemple).

Je voudrais donc avoir en lien sur AABB dans le word l'adresse google.com


En plus je ne sait pas si c'est faisable, puisque la longueur de la chaine peut varier, par exemple je peu avoir un AABB, puis un AA3B0, puis un Q_AA02.


En tout cas, si vous avez des pistes, je suis preneur
Merci
zenzolarticho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2009, 21h48   #2
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 7 906
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 7 906
Points : 13 687
Points : 13 687
Envoyer un message via Skype™ à Pierre Fauconnier
Bonjour

Il faudrait déjà voir comment déterminer quelles chaînes rechercher.

Je suppose qu'il faut donc commencer par utiliser le fichier excel, déterminer la plage qui contient les paires "mot-clé/URL", puis scanner le document Word, chaîne par chaîne...

Est-ce cela?
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2009, 09h53   #3
Invité régulier
 
Inscription : juillet 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 35
Points : 8
Points : 8
Oui, il vaut mieux partir du fichier excel finalement pour verifier si les chaines sont dans le word.

Donc en fait je prend la chaine contenu dans une cellule, je la compare avec mon word, et si il la trouve, il met en lien hypertexte celui correspondant.

Mais je me dis que ca va prendre un temps enorme sachant qu il y a 1000+ word et pareil pour le nombre d'enregistrement excel.

Des idées pour que cela soit assez rapide? et surtout pour que la macro appel les documents les uns à la suite des autres (donc en gros analyse tout ceux d'un dossier par exemple).
zenzolarticho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2009, 14h26   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 16 867
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 : 16 867
Points : 28 217
Points : 28 217
Salut,

Pour commencer, tu vas devoir utiliser le FileSystemObject pour naviguer entre tes différents fichiers.

http://warin.developpez.com/access/fichiers/

ensuite, faire une recherche pour chaque cellule Excel dans le document Ouvert et si la recherche est fructueuse, mettre une ancre dans le document sous la forme d'un signet.
Et c'est ce signet que tu vas pouvoir utiliser pour adresser le Hyperlink.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles

www.morgania.be

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 23/04/2009, 10h36   #5
Invité régulier
 
Inscription : juillet 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 35
Points : 8
Points : 8
Merci pour les infos, je vais regarder ça.
zenzolarticho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2009, 11h23   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 16 867
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 : 16 867
Points : 28 217
Points : 28 217
Reviens nous voir dès que tu rencontres un souci.

Mais le sujet est si vaste qu'il est préférable que tu prennes une direction et que nous t'aidions dans tes choix.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles

www.morgania.be

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 06/05/2009, 16h37   #7
Invité régulier
 
Inscription : juillet 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 35
Points : 8
Points : 8
Je reviens pour poster le code que j'ai réalisé si cela peut servir. J'ai finalement réalisé le code en vbs, et j'ai généré mon modéle en .htm c'est plus simple pour ajouter l'ancre url ( juste a ajouter un <A HREF> quand la recherche est fructueuse)
C'est pas forcement super opti mais ca marche!
De plus; obligé de sauter les erreurs avec un Resume, car j'avais une erreur sur la fonction Mid() bien que le code fonctionne.


Voila le code:

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
 
On Error Resume Next
'Variables declarations
V_jobName=""
V_Stream=""
V_Application=""
V_NOM_DU_TRAITEMENT=""
V_DESCRIPTION_DU_TRAITEMENT=""
V_DESCRIPTION_FONCTIONNELLE=""
V_Moment_dexecution=""
V_temps_traitement=""
V_successeurcondition=""
V_Consequence_NOK=""
V_Column1=""
V_TASKTYPE="" 
V_url="<A HREF=http://www.google.com/"
V_url_middle= ">"
V_url_End="</A>"
V_errorManage=""
 
 
 
 
'déclaration des emplacements des 2 fichiers excels
	path_file = "C:\test_vbs\test2.xls"
	path_file_ListJobname = "C:\test_vbs\ListeJob.xls"
 
'load excel
	set ex = Wscript.createobject("excel.application")
	set ex2 = Wscript.createobject("excel.application")
 
'ouvre le 1er doc excel pour récupérer les infos
	ex.Workbooks.Open path_file
	ex.visible = false
 
'ouvre le 2 eme doc excel pour récupérer la liste des job
	ex2.Workbooks.Open path_file_ListJobname
	ex2.visible = false
 
 
'supprime la première ligne
'va mettre toutes les entetes et compter le nombre de colonnes	
		nbcol = 1
 
'Récupération du nombre de colonnes "nbcol"
	While not ex.ActiveSheet.cells(1,nbcol).value = "" 
		nbcol = nbcol +1
	Wend
	nbcol = nbcol - 1
 
 
'Initialisation du n° de la 1ére ligne à traiter
	nbligne = 3
 
'on parcour sur le 1 er doc
 
While not  ex.ActiveSheet.cells(nbligne,1).value = "" 
 
			for i = 1 to nbcol
 
'on recup les données correspondant a chaque colonne
 
				Select Case i
					Case "2" V_Application = ex.ActiveSheet.cells(nbligne,i).value
					Case "3" V_Jobname = ex.ActiveSheet.cells(nbligne,i).value
					Case "6" V_Stream = ex.ActiveSheet.cells(nbligne,i).value
					Case "7" V_TASKTYPE = ex.ActiveSheet.cells(nbligne,i).value
					Case "8" V_NOM_DU_TRAITEMENT = ex.ActiveSheet.cells(nbligne,i).value
					Case "9" V_DESCRIPTION_DU_TRAITEMENT = ex.ActiveSheet.cells(nbligne,i).value
					Case "10" V_temps_traitement = ex.ActiveSheet.cells(nbligne,i).value
					Case "11" V_Moment_dexecution = ex.ActiveSheet.cells(nbligne,i).value
					Case "12" V_DESCRIPTION_FONCTIONNELLE = ex.ActiveSheet.cells(nbligne,i).value
					Case "13" V_successeurcondition = ex.ActiveSheet.cells(nbligne,i).value
					Case "14" V_Consequence_NOK = ex.ActiveSheet.cells(nbligne,i).value
					Case "15" V_Column1 = ex.ActiveSheet.cells(nbligne,i).value
				End Select
 
 
'Récupération de la valeur pour le titre du fichier à créer
				If i = 3 Then
					nomfichier = ex.ActiveSheet.cells(nbligne,i).value &"#.htm"				
				End If
 
 
 
'Création du fichier htm
				Set filesys = CreateObject("Scripting.FileSystemObject")
 				Set readfile = filesys.OpenTextFile("c:\test_vbs\Job.htm", 1, false)
						contents = readfile.ReadAll
				readfile.close
 
				If nomfichier = "" Then
					nomfichier = "Nom_Generique.htm"	
				End If
 
 
'Traitement de la création dynamique de liens URL
 
				nbligne2=1
 
'on parcour sur le 2 eme excel où les job sont stockés
 
				While not ex2.ActiveSheet.cells(nbligne2,1).value = ""  
					fichier_job = ex2.ActiveSheet.cells(nbligne2,1).value
 
					If Len(V_successeurcondition) > 0 Then
						Vx= Mid(V_successeurcondition, InStr(V_successeurcondition, fichier_Job), Len(fichier_job))
							If fichier_job = Vx Then
								V_successeurcondition = V_url & fichier_job & V_url_Middle & fichier_job & V_url_End
							End If
						Vx=""
					End If
 
					If V_Column1 <> ""	Then
						Vx=Mid(V_Column1, InStr(V_Column1, fichier_Job), Len(fichier_job))
						If fichier_job = Vx Then
							V_Column1 = V_url & fichier_job & V_url_Middle & fichier_job & V_url_End
						End If
						Vx=""
					End If
 
 
					If V_Consequence_NOK <> "" Then
						Vx=(Mid( V_Consequence_NOK, InStr( V_Consequence_NOK, fichier_Job), Len(fichier_job)))
						If fichier_job = Vx Then
								V_Consequence_NOK = V_url & fichier_job & V_url_Middle & fichier_job & V_url_End
						End If
						Vx=""
					End If
 
 
					fichier_Job=""
					nbligne2 = nbligne2 + 1 
				Wend
 
'Remplace les valeurs du fichier Htm par celle récupéré dans l'excel
 
					Set text = filesys.CreateTextFile("c:\test_vbs\"&nomfichier)
					contents = replace(contents, "«JOBNAME»", V_Jobname)
					contents = Replace(contents, "«stream»", V_Stream)
					contents = Replace(contents, "«APPLICATION»", V_Application)
					contents = Replace(contents, "«Description_du_traitement»", V_DESCRIPTION_DU_TRAITEMENT)
					contents = Replace(contents, "«description_fonctionnelle»", V_DESCRIPTION_FONCTIONNELLE)
					contents = Replace(contents, "«Nom_du_traitement»", V_NOM_DU_TRAITEMENT)
					contents = Replace(contents, "«Moment_dexecution»", V_Moment_dexecution)
					contents = Replace(contents, "«temps_traitement»", V_temps_traitement)
					contents = Replace(contents, "«successeurcondition»", V_successeurcondition)
					contents = Replace(contents, "«prédécesseur»", V_Column1)
					contents = Replace(contents, "«conséquence_sur_la_chaine_si_NOK»", V_Consequence_NOK)
					contents = Replace(contents, "«TASKTYPE»", V_TASKTYPE)
					text.Write (contents)
				text.close
 
			next
				nbligne = nbligne +1
 
 
 
	nomfichier=""
	V_Jobname=""
	V_Stream=""
	V_Application=""
	V_DESCRIPTION_DU_TRAITEMENT=""
	V_DESCRIPTION_FONCTIONNELLE=""
	V_NOM_DU_TRAITEMENT=""
	V_Moment_dexecution=""
	V_temps_traitement=""
	V_successeurcondition=""
	V_Column1=""
	V_Consequence_NOK=""
	V_TASKTYPE=""
 
	Wend
 
  MsgBox(V_errorManage) 
 
	ex.Application.DisplayAlerts = False
	ex.quit
 
	ex2.Application.DisplayAlerts = False
	ex2.quit
	msgbox ".html créé"
 
 
	set ex=Close
	Set ex2=Close
voili voilou a plus
zenzolarticho 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 +1. Il est actuellement 15h42.


 
 
 
 
Partenaires

Hébergement Web