VBA: assainir lien URL des caractères spéciaux



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").

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

 

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

 

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:
https://www.monsite.fr/fichiers/L%27aper%E7u%20de%20consommation%20des%20oranges%20%E0%20Orl%E9ans.pdf

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, 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 à un API.

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

 

4 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.