VBS - Script d'auto-mise à jour
Automatisez les mises à jour de vos scripts console VBS (Visual Basic Script) ! Découvrez comment créer un fichier VBS qui se met à jour lui-même, se connecte à GitHub, vérifie les nouvelles versions et s'écrase.
Traduction automatique
Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.
Cet article fait partie de la série VBA et automatisation de MS Office :
- MS Office - Comment créer un ruban dans Excel
- MS Excel - Comment appeler un web service SOAP
- Comment optimiser une base de données MS Access existante
- VBS - Récupérer la liste des champs d'une base de données MS Access
- VBS - Script d'auto-mise à jour
- Microsoft Outlook - VBA - Enregistrer des emails en PDF
- VBS - Obtenir la liste des fichiers et générer un CSV
- MS Office - Charger une liste déroulante depuis une plage Excel
- Exporter les objets MS Access
- MS Excel - Obtenir la liste des références utilisées dans vos modules

Cet article montre comment donner à un fichier VBScript (VBS) la capacité de se mettre à jour lui-même : à chaque exécution, le script télécharge son propre code source depuis une URL GitHub publique, la compare à la copie locale et s'écrase si une version plus récente est trouvée — ce qui permet aux utilitaires .vbs distribués de rester à jour sans redistribution manuelle.
Avant de passer à WSL2 et à la console Linux, j'écrivais des scripts VBS de temps en temps. Ça ressemble à du VBA, mais pour la console DOS.
Un script VBS pour DOS est un fichier texte écrit dans le langage de programmation Visual Basic Scripting Edition (VBScript), exécutable directement depuis la ligne de commande DOS. Il permet d'automatiser des tâches et d'effectuer des opérations répétitives sur votre ordinateur.
C'est exactement comme les scripts Linux Bash, mais pour DOS.
Trois de mes utilitaires VBS qui bénéficieraient précisément de ce mécanisme d'auto-mise à jour : VBS - Récupérer la liste des champs d'une base de données MS Access, Exporter les objets MS Access et VBS - Obtenir la liste des fichiers et générer un CSV.
Pensez-vous qu'il serait possible de proposer une fonction d'auto-mise à jour dans de tels scripts ? La réponse est oui.
Imaginez un script appelé get_folder_size.vbs que vous avez publié publiquement sur GitHub (source https://github.com/cavo789/vbs_utilities/blob/master/src/folders/get_folder_size/get_folder_size.vbs).
Quelqu'un le télécharge sur son ordinateur et prend plaisir à l'utiliser.
En y ajoutant une nouvelle fonction d'auto-mise à jour, à chaque démarrage du script, une connexion à GitHub est d'abord établie, le script est téléchargé depuis là, et une vérification est faite pour voir si la version téléchargée est différente ; si c'est le cas, le script s'écrase lui-même.
Voici le contenu d'une telle fonction :
' -----------------------------------------------------------------'' Connect to GitHub, get the raw version of a file and download it'' The script will check for newer version on GitHub and if' there is one, the script will overwrite himself with' that newer version.'' Based on a script of' @author Michi Lehenauer §https://github.com/michiil)' then modified by Christophe Avonture'' @src https://github.com/michiil/vbs_scrips/blob/master/WZV-Excel.vbs' -----------------------------------------------------------------
' The content to downloadurl = "https://raw.githubusercontent.com/cavo789/vbs_utilities/master/src/folders/get_folder_size/get_folder_size.vbs"
Set req = CreateObject("Msxml2.ServerXMLHttp.6.0")
req.setTimeouts 500, 500, 500, 500
' If you're behind a firewall, uncomment the following line' and mention the proxy address and port'req.setProxy 2, "your.proxy.net:8080", ""
req.open "GET", url, Falsereq.send
If Err.Number = 0 Then If req.Status = 200 Then ' Get the content, just downloaded downloadedContent = req.responseText
' Get the original content, this script
scriptName = wScript.ScriptFullName Set objFSO = CreateObject("Scripting.FileSystemObject") Set textFile = objFSO.OpenTextFile(scriptName, 1) originalContent = textFile.ReadAll textFile.Close
' Compare if the two contents are different If (originalContent <> downloadedContent) Then ' If yes, for instance, rewrite this script by ' the new content ==> auto-update Set textFile = objFSO.OpenTextFile(scriptName, 2)
textFile.Write (downloadedContent) textFile.Close
'wScript.echo scriptName & " has been updated" End If
Set textFile = Nothing Set objFSO = Nothing
End IfElse ' Ok, in case of error, don't panic, just do nothing Err.ClearEnd IfCe script télécharge une version d'un fichier depuis GitHub et la compare avec la version locale du script lui-même. Si le contenu téléchargé est différent, le script se remplace automatiquement avec la nouvelle version, réalisant ainsi une auto-mise à jour.
Cet article fait partie de la série VBA et automatisation de MS Office :
- MS Office - Comment créer un ruban dans Excel
- MS Excel - Comment appeler un web service SOAP
- Comment optimiser une base de données MS Access existante
- VBS - Récupérer la liste des champs d'une base de données MS Access
- VBS - Script d'auto-mise à jour
- Microsoft Outlook - VBA - Enregistrer des emails en PDF
- VBS - Obtenir la liste des fichiers et générer un CSV
- MS Office - Charger une liste déroulante depuis une plage Excel
- Exporter les objets MS Access
- MS Excel - Obtenir la liste des références utilisées dans vos modules




