VBA: Assainir Lien URL Des Caractères Spéciaux | Excel

Avec l'utilisation de plus en plus répandue des "applications web", des API et du SharePoint, vous avez probablement déjà rencontré le problème d'un chemin de fichier (URL) qui ne fonctionnait pas à cause des espaces ou caractères spéciaux qu'il contenait. La fonction qui suit permet d'assainir lien URL en remplaçant tous les caractères spéciaux par les "codes URL" (le "percent-encoding").

VBA: supprimer les caractères spéciaux d'une adresse URL

Je ne vais pas lister tous les caractères spéciaux ici dans le texte, vous les trouverez directement dans le code VBA de la fonction. Mais à titre d'exemple, on parle des: , ," " (espace), ~, ç, ' etc.

L'exemple de la situation où ce code pourra bien vous servir: télécharger un fichier sur Internet avec VBA . Cette fonction-là ne va pas fonctionner si le URL contient des caractères spéciaux… Par contre vous pouvez résoudre ce problème grâce à la fonction VBA qui suit…

Fonction VBA pour assainir lien URL (percent-encoding en VBA)

La fonction qui suit est prête à l'emploi. Il vous suffit de la copier/coller dans votre projet VBA.

Elle utilise un argument: le lien URL à nettoyer (une valeur de type String). Le résultat retourné est l'adresse URL où tous les caractères spéciaux ont été remplacés par les codes URL. Elle fonctionnera donc à tous les coups…

Voici donc le code de la fonction:

Function AssainirURL(MonURL As String) 'par Excel-Malin.com ( https://excel-malin.com ) On Error GoTo FonctionErreur Dim URLtemporaire As String URLtemporaire = MonURL URLtemporaire = Replace(URLtemporaire, "%", "%25") URLtemporaire = Replace(URLtemporaire, " ", "%20") URLtemporaire = Replace(URLtemporaire, """", "%22") URLtemporaire = Replace(URLtemporaire, "#", "%23") URLtemporaire = Replace(URLtemporaire, "$", "%24") URLtemporaire = Replace(URLtemporaire, "&", "%26") URLtemporaire = Replace(URLtemporaire, "'", "%27") URLtemporaire = Replace(URLtemporaire, "(", "%28") URLtemporaire = Replace(URLtemporaire, ")", "%29") URLtemporaire = Replace(URLtemporaire, "*", "%2A") URLtemporaire = Replace(URLtemporaire, "+", "%2B") URLtemporaire = Replace(URLtemporaire, ",", "%2C") URLtemporaire = Replace(URLtemporaire, ";", "%3B") URLtemporaire = Replace(URLtemporaire, "<", "%3C") URLtemporaire = Replace(URLtemporaire, "=", "%3D") URLtemporaire = Replace(URLtemporaire, ">", "%3E") URLtemporaire = Replace(URLtemporaire, "?", "%3F") URLtemporaire = Replace(URLtemporaire, "@", "%40") URLtemporaire = Replace(URLtemporaire, "[", "%5B") URLtemporaire = Replace(URLtemporaire, "]", "%5D") URLtemporaire = Replace(URLtemporaire, "^", "%5E") URLtemporaire = Replace(URLtemporaire, "`", "%60") URLtemporaire = Replace(URLtemporaire, "{", "%7B") URLtemporaire = Replace(URLtemporaire, "|", "%7C") URLtemporaire = Replace(URLtemporaire, "}", "%7D") URLtemporaire = Replace(URLtemporaire, "~", "%7E") URLtemporaire = Replace(URLtemporaire, "¢", "%A2") URLtemporaire = Replace(URLtemporaire, "£", "%A3") URLtemporaire = Replace(URLtemporaire, "¥", "%A5") URLtemporaire = Replace(URLtemporaire, "|", "%A6") URLtemporaire = Replace(URLtemporaire, "§", "%A7") URLtemporaire = Replace(URLtemporaire, "«", "%AB") URLtemporaire = Replace(URLtemporaire, "¬", "%AC") URLtemporaire = Replace(URLtemporaire, "¯", "%AD") URLtemporaire = Replace(URLtemporaire, "º", "%B0") URLtemporaire = Replace(URLtemporaire, "±", "%B1") URLtemporaire = Replace(URLtemporaire, "ª", "%B2") URLtemporaire = Replace(URLtemporaire, ",", "%B4") URLtemporaire = Replace(URLtemporaire, "µ", "%B5") URLtemporaire = Replace(URLtemporaire, "»", "%BB") URLtemporaire = Replace(URLtemporaire, "¼", "%BC") URLtemporaire = Replace(URLtemporaire, "½", "%BD") URLtemporaire = Replace(URLtemporaire, "¿", "%BF") URLtemporaire = Replace(URLtemporaire, "À", "%C0") URLtemporaire = Replace(URLtemporaire, "Á", "%C1") URLtemporaire = Replace(URLtemporaire, "Â", "%C2") URLtemporaire = Replace(URLtemporaire, "Ã", "%C3") URLtemporaire = Replace(URLtemporaire, "Ä", "%C4") URLtemporaire = Replace(URLtemporaire, "Å", "%C5") URLtemporaire = Replace(URLtemporaire, "Æ", "%C6") URLtemporaire = Replace(URLtemporaire, "Ç", "%C7") URLtemporaire = Replace(URLtemporaire, "È", "%C8") URLtemporaire = Replace(URLtemporaire, "É", "%C9") URLtemporaire = Replace(URLtemporaire, "Ê", "%CA") URLtemporaire = Replace(URLtemporaire, "Ë", "%CB") URLtemporaire = Replace(URLtemporaire, "Ì", "%CC") URLtemporaire = Replace(URLtemporaire, "Í", "%CD") URLtemporaire = Replace(URLtemporaire, "Î", "%CE") URLtemporaire = Replace(URLtemporaire, "Ï", "%CF") URLtemporaire = Replace(URLtemporaire, "Ð", "%D0") URLtemporaire = Replace(URLtemporaire, "Ñ", "%D1") URLtemporaire = Replace(URLtemporaire, "Ò", "%D2") URLtemporaire = Replace(URLtemporaire, "Ó", "%D3") URLtemporaire = Replace(URLtemporaire, "Ô", "%D4") URLtemporaire = Replace(URLtemporaire, "Õ", "%D5") URLtemporaire = Replace(URLtemporaire, "Ö", "%D6") URLtemporaire = Replace(URLtemporaire, "Ø", "%D8") URLtemporaire = Replace(URLtemporaire, "Ù", "%D9") URLtemporaire = Replace(URLtemporaire, "Ú", "%DA") URLtemporaire = Replace(URLtemporaire, "Û", "%DB") URLtemporaire = Replace(URLtemporaire, "Ü", "%DC") URLtemporaire = Replace(URLtemporaire, "Ý", "%DD") URLtemporaire = Replace(URLtemporaire, "Þ", "%DE") URLtemporaire = Replace(URLtemporaire, "ß", "%DF") URLtemporaire = Replace(URLtemporaire, "à", "%E0") URLtemporaire = Replace(URLtemporaire, "á", "%E1") URLtemporaire = Replace(URLtemporaire, "â", "%E2") URLtemporaire = Replace(URLtemporaire, "ã", "%E3") URLtemporaire = Replace(URLtemporaire, "ä", "%E4") URLtemporaire = Replace(URLtemporaire, "å", "%E5") URLtemporaire = Replace(URLtemporaire, "æ", "%E6") URLtemporaire = Replace(URLtemporaire, "ç", "%E7") URLtemporaire = Replace(URLtemporaire, "è", "%E8") URLtemporaire = Replace(URLtemporaire, "é", "%E9") URLtemporaire = Replace(URLtemporaire, "ê", "%EA") URLtemporaire = Replace(URLtemporaire, "ë", "%EB") URLtemporaire = Replace(URLtemporaire, "ì", "%EC") URLtemporaire = Replace(URLtemporaire, "í", "%ED") URLtemporaire = Replace(URLtemporaire, "î", "%EE") URLtemporaire = Replace(URLtemporaire, "ï", "%EF") URLtemporaire = Replace(URLtemporaire, "ð", "%F0") URLtemporaire = Replace(URLtemporaire, "ñ", "%F1") URLtemporaire = Replace(URLtemporaire, "ò", "%F2") URLtemporaire = Replace(URLtemporaire, "ó", "%F3") URLtemporaire = Replace(URLtemporaire, "ô", "%F4") URLtemporaire = Replace(URLtemporaire, "õ", "%F5") URLtemporaire = Replace(URLtemporaire, "ö", "%F6") URLtemporaire = Replace(URLtemporaire, "÷", "%F7") URLtemporaire = Replace(URLtemporaire, "ø", "%F8") URLtemporaire = Replace(URLtemporaire, "ù", "%F9") URLtemporaire = Replace(URLtemporaire, "ú", "%FA") URLtemporaire = Replace(URLtemporaire, "û", "%FB") URLtemporaire = Replace(URLtemporaire, "ü", "%FC") URLtemporaire = Replace(URLtemporaire, "ý", "%FD") URLtemporaire = Replace(URLtemporaire, "þ", "%FE") URLtemporaire = Replace(URLtemporaire, "ÿ", "%FF") AssainirURL = URLtemporaire Exit Function FonctionErreur: AssainirURL = CVErr(xlErrValue) End Function
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 FunctionAssainirURL(MonURL AsString)'par Excel-Malin.com ( https://excel-malin.com ) On ErrorGoToFonctionErreur DimURLtemporaire AsString URLtemporaire=MonURLURLtemporaire=Replace(URLtemporaire,"%","%25")URLtemporaire=Replace(URLtemporaire," ","%20")URLtemporaire=Replace(URLtemporaire,"""","%22")URLtemporaire=Replace(URLtemporaire,"#","%23")URLtemporaire=Replace(URLtemporaire,"$","%24")URLtemporaire=Replace(URLtemporaire,"&","%26")URLtemporaire=Replace(URLtemporaire,"'","%27")URLtemporaire=Replace(URLtemporaire,"(","%28")URLtemporaire=Replace(URLtemporaire,")","%29")URLtemporaire=Replace(URLtemporaire,"*","%2A")URLtemporaire=Replace(URLtemporaire,"+","%2B")URLtemporaire=Replace(URLtemporaire,",","%2C")URLtemporaire=Replace(URLtemporaire,";","%3B")URLtemporaire=Replace(URLtemporaire,"<","%3C")URLtemporaire=Replace(URLtemporaire,"=","%3D")URLtemporaire=Replace(URLtemporaire,">","%3E")URLtemporaire=Replace(URLtemporaire,"?","%3F")URLtemporaire=Replace(URLtemporaire,"@","%40")URLtemporaire=Replace(URLtemporaire,"[","%5B")URLtemporaire=Replace(URLtemporaire,"]","%5D")URLtemporaire=Replace(URLtemporaire,"^","%5E")URLtemporaire=Replace(URLtemporaire,"`","%60")URLtemporaire=Replace(URLtemporaire,"{","%7B")URLtemporaire=Replace(URLtemporaire,"|","%7C")URLtemporaire=Replace(URLtemporaire,"}","%7D")URLtemporaire=Replace(URLtemporaire,"~","%7E")URLtemporaire=Replace(URLtemporaire,"¢","%A2")URLtemporaire=Replace(URLtemporaire,"£","%A3")URLtemporaire=Replace(URLtemporaire,"¥","%A5")URLtemporaire=Replace(URLtemporaire,"|","%A6")URLtemporaire=Replace(URLtemporaire,"§","%A7")URLtemporaire=Replace(URLtemporaire,"«","%AB")URLtemporaire=Replace(URLtemporaire,"¬","%AC")URLtemporaire=Replace(URLtemporaire,"¯","%AD")URLtemporaire=Replace(URLtemporaire,"º","%B0")URLtemporaire=Replace(URLtemporaire,"±","%B1")URLtemporaire=Replace(URLtemporaire,"ª","%B2")URLtemporaire=Replace(URLtemporaire,",","%B4")URLtemporaire=Replace(URLtemporaire,"µ","%B5")URLtemporaire=Replace(URLtemporaire,"»","%BB")URLtemporaire=Replace(URLtemporaire,"¼","%BC")URLtemporaire=Replace(URLtemporaire,"½","%BD")URLtemporaire=Replace(URLtemporaire,"¿","%BF")URLtemporaire=Replace(URLtemporaire,"À","%C0")URLtemporaire=Replace(URLtemporaire,"Á","%C1")URLtemporaire=Replace(URLtemporaire,"Â","%C2")URLtemporaire=Replace(URLtemporaire,"Ã","%C3")URLtemporaire=Replace(URLtemporaire,"Ä","%C4")URLtemporaire=Replace(URLtemporaire,"Å","%C5")URLtemporaire=Replace(URLtemporaire,"Æ","%C6")URLtemporaire=Replace(URLtemporaire,"Ç","%C7")URLtemporaire=Replace(URLtemporaire,"È","%C8")URLtemporaire=Replace(URLtemporaire,"É","%C9")URLtemporaire=Replace(URLtemporaire,"Ê","%CA")URLtemporaire=Replace(URLtemporaire,"Ë","%CB")URLtemporaire=Replace(URLtemporaire,"Ì","%CC")URLtemporaire=Replace(URLtemporaire,"Í","%CD")URLtemporaire=Replace(URLtemporaire,"Î","%CE")URLtemporaire=Replace(URLtemporaire,"Ï","%CF")URLtemporaire=Replace(URLtemporaire,"Ð","%D0")URLtemporaire=Replace(URLtemporaire,"Ñ","%D1")URLtemporaire=Replace(URLtemporaire,"Ò","%D2")URLtemporaire=Replace(URLtemporaire,"Ó","%D3")URLtemporaire=Replace(URLtemporaire,"Ô","%D4")URLtemporaire=Replace(URLtemporaire,"Õ","%D5")URLtemporaire=Replace(URLtemporaire,"Ö","%D6")URLtemporaire=Replace(URLtemporaire,"Ø","%D8")URLtemporaire=Replace(URLtemporaire,"Ù","%D9")URLtemporaire=Replace(URLtemporaire,"Ú","%DA")URLtemporaire=Replace(URLtemporaire,"Û","%DB")URLtemporaire=Replace(URLtemporaire,"Ü","%DC")URLtemporaire=Replace(URLtemporaire,"Ý","%DD")URLtemporaire=Replace(URLtemporaire,"Þ","%DE")URLtemporaire=Replace(URLtemporaire,"ß","%DF")URLtemporaire=Replace(URLtemporaire,"à","%E0")URLtemporaire=Replace(URLtemporaire,"á","%E1")URLtemporaire=Replace(URLtemporaire,"â","%E2")URLtemporaire=Replace(URLtemporaire,"ã","%E3")URLtemporaire=Replace(URLtemporaire,"ä","%E4")URLtemporaire=Replace(URLtemporaire,"å","%E5")URLtemporaire=Replace(URLtemporaire,"æ","%E6")URLtemporaire=Replace(URLtemporaire,"ç","%E7")URLtemporaire=Replace(URLtemporaire,"è","%E8")URLtemporaire=Replace(URLtemporaire,"é","%E9")URLtemporaire=Replace(URLtemporaire,"ê","%EA")URLtemporaire=Replace(URLtemporaire,"ë","%EB")URLtemporaire=Replace(URLtemporaire,"ì","%EC")URLtemporaire=Replace(URLtemporaire,"í","%ED")URLtemporaire=Replace(URLtemporaire,"î","%EE")URLtemporaire=Replace(URLtemporaire,"ï","%EF")URLtemporaire=Replace(URLtemporaire,"ð","%F0")URLtemporaire=Replace(URLtemporaire,"ñ","%F1")URLtemporaire=Replace(URLtemporaire,"ò","%F2")URLtemporaire=Replace(URLtemporaire,"ó","%F3")URLtemporaire=Replace(URLtemporaire,"ô","%F4")URLtemporaire=Replace(URLtemporaire,"õ","%F5")URLtemporaire=Replace(URLtemporaire,"ö","%F6")URLtemporaire=Replace(URLtemporaire,"÷","%F7")URLtemporaire=Replace(URLtemporaire,"ø","%F8")URLtemporaire=Replace(URLtemporaire,"ù","%F9")URLtemporaire=Replace(URLtemporaire,"ú","%FA")URLtemporaire=Replace(URLtemporaire,"û","%FB")URLtemporaire=Replace(URLtemporaire,"ü","%FC")URLtemporaire=Replace(URLtemporaire,"ý","%FD")URLtemporaire=Replace(URLtemporaire,"þ","%FE")URLtemporaire=Replace(URLtemporaire,"ÿ","%FF") AssainirURL=URLtemporaireExitFunction FonctionErreur:AssainirURL=CVErr(xlErrValue) EndFunction

Et voici un exemple d'utilisation dans une procédure VBA:

Sub Test_URL() 'par Excel-Malin.com ( https://excel-malin.com ) Dim ExempleDeURL As String ExempleDeURL = "https://www.monsite.fr/fichiers/L'aperçu de consommation des oranges à Orléans.pdf" MonURLcorrigee = AssainirURL(ExempleDeURL) MsgBox "URL correcte: " & MonURLcorrigee End Sub
123456789101112 SubTest_URL()'par Excel-Malin.com ( https://excel-malin.com ) DimExempleDeURL AsString ExempleDeURL="https://www.monsite.fr/fichiers/L'aperçu de consommation des oranges à Orléans.pdf"MonURLcorrigee=AssainirURL(ExempleDeURL)MsgBox"URL correcte: "&MonURLcorrigee EndSub

Dans cette exemple, on veut rendre utilisable l'adresse URL: https://www.monsite.fr/fichiers/L'aperçu de consommation des oranges à Orléans.pdf

Le résultat que la fonction va retourner sera: <span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>https://www.monsite.fr/fichiers/L%27aper%E7u%20de%20consommation%20des%20oranges%20%E0%20Orl%E9ans.pdf<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end"></span>

Pour rappel: attention aux guillemets! Si votre URL contient des guillemets, vous devez d'abord ajuster ce URL car VBA ne peut pas travailler avec de simple guillemets.  Exemple: l'adresse https://www.monsite.fr/fichiers/"Mémoires".docx devra être transformée en https://www.monsite.fr/fichiers/""Mémoires"".docx pour que la fonction de nettoyage puisse reconnaître les guillemets dans le URL.

Conclusion

Grâce à cette fonction VBA, vous pourrez travailler plus facilement et de manière plus sûre avec les fichiers se trouvant dans le cloud, sur le SharePoint ou vous connecter à une API.

D'autres Codes sources VBA qui pourraient vous intéresser!

Pour aller plus loin en VBA…

Et voici encore quelques autres articles pratiques pour vous faciliter la vie:

  • Liste de toutes les fonctions VBA
  • Télécharger un fichier à partir d'internet avec VBA
  • VBA: vérifier si une adresse internet (URL) existe
  • RECHERCHEV en VBA – oui, oui, c'est possible!
  • Calculer une SOMME en VBA
  • Protéger le code VBA par un mot de passe

Tag » Code Caractère Spéciaux Vba