VBA, Outlook et les espaces dans des liens hypertextes

Bonjour à tous,

Ça faisait longtemps que je n’avais pas besoin de vous déranger, trouvant déjà tout ce qu’il fallait dans le forum, mais aujourd’hui, je bloque, malgré mes recherches, je bute sur mon code.

J’ai mon code, qui récupère des informations pour les insérer dans un message Outlook. Tout fonctionne, mais devant étendre mon « projet », je dois donc intégrer dans mon mail, un lien hypertexte qui est variable en fonction de la personne qui l’utilise. Hélas, Outlook ne prend pas en charge les espaces pour les liens et donc, la finalité n’est pas correcte.

Voici le bout du code ou le problème se pose :

reseau = Ws.Range(« AI23 »)
Set OutApp = CreateObject(« Outlook.Application »)
Set OutMail = OutApp.CreateItem(0)

strbody = « Les fichiers sont disponibles sous : <br><br> »  & _
« <b><A HREF=«  & « \\ » & reseau & « >ICI</A></b> »

J’ai bien tout déclaré, tout bien mis, ma variable « reseau » récupère dans mon fichier Excel l’adresse ajoutée par le client à partir de plusieurs informations, et la met dans mon mail.

Mais dès que c’est saisi avec un espace, mon lien sur le mail pointe alors sur un dossier inconnu.

J’espère avoir été clair, et que vous puissiez m’aider à contourner ce problème sans pour autant devoir changer la trame de mon fichier.

Merci et à bientôt!

IB

Bonjour,

ne faut il pas remplacer les espaces par " "?

ou un truc du genre %120 ?

@ bientôt

LouReeD

Bonjour LouReeD, et merci d’avoir pris le temps de me répondre.

J’avais déjà vu lors de mes recherches ces astuces. Ou bien en remplaçant par %25. Mais en finalité, sur le mail conçu, ces caractères apparaissent et ne permettent pas de pointer sur le dossier voulu.

Les personnes qui devront utiliser mon outil, doivent juste renseigner le nom du réseau, le dossier et sous dossier ou le lien doit pointer, et par formule, je rassemble le tout avec les « \ » qu’il faut pour avoir une adresse correcte.

Ils ne savent déjà pas utiliser « \ » donc j’essaye de leurs mâcher le travail.

En tout cas, merci pour la réponse, mais elle ne parvient pas à résoudre mon soucis.

IB

Un fichier ?

@ bientôt

LouReeD

Je vois pour mettre mon fichier disponible lundi matin! Week-end familiale oblige...

Encore merci!

Bonjour,

Désolé pour le retard, je n’ai repris le travail que aujourd’hui.

Voilà le fichier, le code est dans le module FluxE04.

Encore merci.

IB

Bonjour à tous !

Un petit "up", ne sait-on jamais...

IB

Bonjour,

j'ai regardé votre code.... et j'avoue ne pas tout saisir...

Si j'ai bien compris, votre problème apparait dans cette partie de code du fichier :

Sub Mail_fluxE04()

'Envoi un mail pré-remplis aux différents destinataires
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

strbody = "<BODY style=font-size:11pt;font-family:Calibri>Bonjour,<br><br>" & _
          "Les Fichiers des <B>anomalies absences Géode (Flux E04) du " & DateAdd("d", Date, 0) & "</B> (un fichier par NOD) sont disponibles dans le dossier <B>ANO DU " & Format(Date, "ddmmyyyy") & "</B> sous :<br><br>" & _
          "<b><A HREF=""\\206.197.30.240\utilisat\INTERSITES\2- EXPLOITATION\1- ETATS\1- ETATS\1 - A traiter\Salariés" & Sheets("RéglT").Range("E2") & "\1 - Anomalies absences GEODE Flux E04"">Lille</A></b>" & _
          "<b>   &   </b>" & "<b><A HREF=""\\165.160.113.240\utilisat\Public\02-Exploitation\1 - ETATS\1 - A traiter\Salariés" & Sheets("RéglT").Range("E2") & "\1 - Anomalies absences GEODE Flux E04"">Paris</A></b>"

plus précissément lors de la construction du lien :

<A HREF=""\\206.197.30.240\utilisat\INTERSITES\2- EXPLOITATION\1- ETATS\1- ETATS\1 - A traiter\Salariés" & Sheets("RéglT").Range("E2") & "\1 - Anomalies absences GEODE Flux E04"">Lille</A>

Mais vous parlez d'espace, ces espaces sont compris dans la variable Sheets("RéglT").Range("E2") ?

Et pour info, dans le fichier joint il n'y a pas de feuille ayant pour nom : "RéglT"

Merci pour les précisions éventuelles.

@ bientôt

LouReeD

Bonjour LouuReeD, et encore merci pour le temps pris.

Tout d'abord, je vais devoir m'excuser pour vous avoir fait perdre du temps, car faisant toujours plusieurs copies lors de mes "créations" j'ai bien peur d'avoir inséré le mauvais. Je mets le bon de suite...

Je me doute que mon code peut sembler mal construit ou encombrant, ne connaissant pas le VBA il y a peu, je m'y mets pas à pas.

Sinon, le problème est bien dans la partie

Sub Mail_fluxE04()

Au moment de la construction du lien

strbody = "<BODY style=font-size:11pt;font-family:Calibri>Bonjour,<br><br>" & _
          "Les Fichiers des <B>anomalies absences Géode (Flux E04) du " & DateAdd("d", Date, 0) & "</B> (un fichier par NOD) sont disponibles dans le dossier <B>ANO DU " & Format(Date, "ddmmyyyy") & "</B> sous :<br><br>" & _
          "<b><A HREF=" & "\\" & reseau & ">Lille</A></b>"

Où la variable "reseau" est définit comme suit

reseau = Ws.Range("AI23")

Le problème, c'est que dans la feuille "Réglages" (J'ai vérifié, elle est bien dans ce fichier ) les paramètres sont saisies par d'autres personnes, mais qu'il est possible qu'il y est des espaces dans une adresse réseau, ce qui pose le problème lorsque je récupère ma variable, le lien se coupe au premier espace.

En passant, comme dans mon ancien fichier, par la construction direct du lien dans

strbody

, ça fonctionne, mais devant partager mon outil dans différents services de France, je ne peux pas écrire le lien directement car l'adresse réseau change selon les services, c'est pourquoi je voulais passer par une variable.

J'espère avoir été un peu plus clair.

Merci,

IB

N'y a t il pas un oublis de " dans votre (nouveau) code ?

"<b><A HREF=" & "\\" & reseau & ">Lille</A></b>"

strbody = ouvrez le guillemets de la variable STRING"<B><A HREF= mettre un guillemet dans la variable STRING donc il en faut un double pour qu'il soit considéré comme un caractère et non comme une fin de variable STRING ""\\fermez le guillemets de la variable STRING pour intégrer la valeur d'une variable VBA"& reseau &ouvrez le guillemets de la variable STRING"mettre un guillemet dans la variable STRING donc il en faut un double pour qu'il soit considéré comme un caractère et non comme une fin de variable STRING"">Lille</A></B>fermez le guillemets de la variable STRING"

Ce qui donne :

strbody="<b><A HREF=""\\" & reseau & """>Lille</A></b>"

Il est bien évident que là je n'ai corrigé que la fin de la variable strbody, il faut vérifier les guillemets de toute la variable.

En résumé :

un guillemet pour "ouvrir" la variable texte ou la fermer

ajout d'un "&" pour intégrer une valeur grâce à une variable VBA

deux guillemets pour signifier qu'il faut le considérer comme un caractère alphanumérique et non pas comme indicateur de découpe de la variable

du coup il peut y avoir 3 guillemets consécutifs s'il faut un guillemet dans la valeur alphanumérique à la suite d'une ouverture de cette même variable.

Il peut même y en avoir 4 si c'est pour afficher dans le texte de la variable un double guillemet "", et du coup on peut aller à 5 si c'est à la suite d'une ouverture de variable.... etc etc

A tester...

@ bientôt

LouReeD

Bon..... Et bien, en 1 minute, tu as résolu ce que je cherche depuis 4-5 jours...

J'avais vu sur un site l'importance des "" mais je n’arrivais pas à les placer correctement. Et tes explications me paraissent plus accessible pour le novice que je suis.

En tout cas, un grand merci pour ton aide, et ton temps, je vais pouvoir continuer mon projet.

IB

Je traduis par "Ça fonctionne !!!!!! "

et tout ceci entre de simple guillemets...

merci de vos remerciements

@ bientôt

LouReeD

Rechercher des sujets similaires à "vba outlook espaces liens hypertextes"