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:
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 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 |
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:
<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