Vous utilisez Excel pour suivre des fichiers, nettoyer des données ou automatiser des tâches répétitives ? Alors PowerShell pourrait rapidement devenir un allié précieux. Cet outil permet de manipuler des fichiers, renommer des centaines de documents, interroger Windows, traiter des données et même automatiser certaines opérations liées à Excel.
Pas besoin d’être développeur pour débuter. PowerShell fonctionne avec des commandes lisibles, que l’on peut tester une par une. L’objectif de ce guide est de vous donner une méthode simple et concrète pour apprendre PowerShell sans vous perdre dans la théorie.
PowerShell, c’est quoi exactement ?
PowerShell est un environnement de commande et un langage de script créé par Microsoft. Il est installé par défaut sur Windows et permet d’exécuter des actions qui seraient longues ou fastidieuses à réaliser manuellement.
Imaginez que vous deviez :
- Renommer 300 fichiers selon une règle précise ;
- Déplacer automatiquement des documents dans différents dossiers ;
- Rechercher tous les fichiers Excel modifiés depuis moins de sept jours ;
- Extraire une liste de fichiers dans un tableau CSV ;
- Récupérer des informations sur votre ordinateur ou votre réseau.
Avec l’Explorateur Windows, ces opérations peuvent devenir laborieuses. Avec PowerShell, quelques lignes suffisent souvent. C’est un peu comme passer d’une saisie manuelle dans Excel à une macro bien pensée : au début, il faut apprendre les outils, puis le gain de temps devient très intéressant.
Ouvrir PowerShell pour la première fois
Sur Windows, plusieurs méthodes permettent de lancer PowerShell. Vous pouvez utiliser la recherche du menu Démarrer et saisir PowerShell. Deux versions sont courantes :
- Windows PowerShell, généralement installé sur les anciennes et récentes versions de Windows ;
- PowerShell 7, une version plus moderne, disponible sur Windows, macOS et Linux.
Pour débuter, Windows PowerShell suffit largement. Si vous souhaitez utiliser les fonctionnalités les plus récentes, vous pouvez installer PowerShell 7 depuis le site officiel de Microsoft.
Une fois la fenêtre ouverte, vous verrez une ligne ressemblant à ceci :
PS C:\Users\Nathan>
Cette ligne indique le dossier dans lequel vous vous trouvez. PowerShell attend maintenant une commande.
Les premières commandes à connaître
Commençons par des commandes simples. La commande Get-Location affiche le dossier actuel :
Get-Location
Pour afficher les fichiers et les sous-dossiers présents dans ce répertoire, utilisez Get-ChildItem :
Get-ChildItem
Vous pouvez également utiliser son alias, plus court :
ls
Les alias rendent PowerShell pratique au quotidien, mais il est préférable d’apprendre les noms complets des commandes. Ils sont plus clairs dans un script et plus faciles à comprendre pour une autre personne.
Pour changer de dossier, utilisez Set-Location :
Set-Location C:\Users\Nathan\Documents
Son alias le plus connu est cd :
cd C:\Users\Nathan\Documents
Enfin, la commande Clear-Host nettoie l’écran :
Clear-Host
Et si vous oubliez une commande ? Pas de panique. La commande Get-Help est là pour vous guider :
Get-Help Get-ChildItem
Pour obtenir un exemple concret :
Get-Help Get-ChildItem -Examples
Comprendre la logique des commandes PowerShell
Les commandes PowerShell suivent généralement une structure très lisible : un verbe, puis un nom. Par exemple :
Get-Process: obtenir la liste des processus ;Stop-Process: arrêter un processus ;Get-Service: afficher les services Windows ;Start-Service: démarrer un service ;Remove-Item: supprimer un fichier ou un dossier.
Cette logique est utile pour deviner une commande. Vous cherchez des informations ? Pensez à Get-. Vous souhaitez créer quelque chose ? Regardez du côté de New-. Pour modifier, les commandes commencent souvent par Set-.
Pour obtenir la liste des commandes disponibles, utilisez :
Get-Command
Vous pouvez filtrer la recherche. Par exemple, pour trouver les commandes liées aux fichiers :
Get-Command *-Item
Cette méthode est particulièrement pratique lorsque vous ne connaissez pas encore le nom exact d’une commande.
Manipuler des fichiers et des dossiers
PowerShell devient vraiment intéressant lorsqu’il s’agit de manipuler des fichiers. Pour créer un dossier :
New-Item -Path C:\Temp\Rapports -ItemType Directory
Pour créer un fichier texte :
New-Item -Path C:\Temp\Rapports\test.txt -ItemType File
Pour copier ce fichier :
Copy-Item C:\Temp\Rapports\test.txt C:\Temp\Sauvegarde\
Pour le déplacer :
Move-Item C:\Temp\Rapports\test.txt C:\Temp\Archives\
Et pour le renommer :
Rename-Item C:\Temp\Archives\test.txt rapport_final.txt
La suppression mérite un peu de prudence :
Remove-Item C:\Temp\Archives\rapport_final.txt
PowerShell ne place pas forcément les fichiers supprimés dans la Corbeille. Testez donc toujours vos commandes sur un dossier d’essai. Une commande trop enthousiaste peut faire disparaître beaucoup de fichiers en quelques secondes. PowerShell est efficace, parfois un peu trop.
Filtrer les fichiers avec Where-Object
Supposons que vous souhaitiez afficher uniquement les fichiers Excel d’un dossier. Vous pouvez utiliser le filtre Where-Object :
Get-ChildItem C:\Users\Nathan\Documents |Where-Object { $_.Extension -eq ".xlsx" }
Le symbole $_ représente l’élément actuellement traité. Ici, PowerShell examine chaque fichier et ne conserve que ceux dont l’extension est .xlsx.
Vous pouvez également rechercher les fichiers modifiés récemment :
Get-ChildItem C:\Users\Nathan\Documents |Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }
Cette commande affiche les fichiers modifiés au cours des sept derniers jours. Pour les fichiers Excel et CSV, c’est une façon rapide de contrôler les documents récemment mis à jour.
Trier et sélectionner les informations utiles
La commande Sort-Object permet de trier les résultats. Par exemple, pour classer les fichiers par date de modification :
Get-ChildItem C:\Users\Nathan\Documents |Sort-Object LastWriteTime -Descending
Pour afficher uniquement le nom, la taille et la date de modification, utilisez Select-Object :
Get-ChildItem C:\Users\Nathan\Documents |Select-Object Name, Length, LastWriteTime
Cette approche rappelle la préparation d’un tableau dans Excel : on sélectionne les colonnes intéressantes, on filtre les lignes, puis on trie les résultats.
Exporter des données vers un fichier CSV
Le format CSV est très pratique pour échanger des données avec Excel. Pour exporter la liste des fichiers d’un dossier :
Get-ChildItem C:\Users\Nathan\Documents |Select-Object Name, Extension, Length, LastWriteTime |Export-Csv C:\Temp\liste_fichiers.csv -NoTypeInformation -Encoding UTF8
Vous pouvez ensuite ouvrir le fichier CSV dans Excel et l’analyser comme n’importe quel tableau.
Pour lire un fichier CSV dans PowerShell, utilisez Import-Csv :
$donnees = Import-Csv C:\Temp\ventes.csv
La variable $donnees contient maintenant les lignes du fichier. Pour afficher chaque client, par exemple :
foreach ($ligne in $donnees) { Write-Output $ligne.Client}
Une variable PowerShell commence toujours par le symbole $. Elle peut contenir du texte, un nombre, un fichier ou une collection complète de données.
Créer votre premier script PowerShell
Lorsque plusieurs commandes doivent être exécutées régulièrement, mieux vaut les enregistrer dans un fichier. Un script PowerShell porte généralement l’extension .ps1.
Ouvrez le Bloc-notes ou Visual Studio Code et saisissez :
$dossier = "C:\Users\Nathan\Documents"$destination = "C:\Temp\Rapports"New-Item -Path $destination -ItemType Directory -ForceGet-ChildItem $dossier -Filter *.xlsx |Copy-Item -Destination $destinationWrite-Output "Les fichiers Excel ont été copiés."
Enregistrez le fichier sous le nom copier-rapports.ps1. Pour l’exécuter, placez-vous dans son dossier puis lancez :
.\copier-rapports.ps1
L’option -Force permet de ne pas provoquer d’erreur si le dossier existe déjà. C’est une bonne habitude dans les scripts destinés à être exécutés plusieurs fois.
Utiliser les conditions et les boucles
PowerShell permet de prendre des décisions grâce à if. Voici un exemple qui vérifie l’existence d’un fichier :
$fichier = "C:\Temp\ventes.xlsx"if (Test-Path $fichier) { Write-Output "Le fichier existe."}else { Write-Output "Le fichier est introuvable."}
Les boucles servent à répéter une action. Pour parcourir les fichiers Excel d’un dossier :
$fichiers = Get-ChildItem C:\Temp -Filter *.xlsxforeach ($fichier in $fichiers) { Write-Output "Fichier trouvé : $($fichier.Name)"}
Cette structure constitue la base de nombreuses automatisations : parcourir une liste, vérifier une condition, puis effectuer une action.
Automatiser Excel avec PowerShell
PowerShell peut piloter Excel grâce à l’objet COM installé avec Microsoft Office. Cette technique permet d’ouvrir un classeur, lire une cellule et enregistrer le fichier.
$excel = New-Object -ComObject Excel.Application$excel.Visible = $false$classeur = $excel.Workbooks.Open("C:\Temp\ventes.xlsx")$feuille = $classeur.Worksheets.Item(1)$valeur = $feuille.Cells.Item(1, 1).Value2Write-Output "Valeur de la cellule A1 : $valeur"$classeur.Close($false)$excel.Quit()[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Dans cet exemple, Excel est lancé en arrière-plan, le premier classeur est ouvert et la cellule A1 est lue. Le fichier est ensuite fermé sans être enregistré.
Cette méthode est puissante, mais elle demande de la prudence. Si une erreur survient avant la fermeture d’Excel, un processus peut rester actif en arrière-plan. Pour des traitements importants, prévoyez toujours une gestion des erreurs avec try et finally.
La solution ImportExcel pour travailler sans Excel
Une autre possibilité consiste à utiliser le module PowerShell ImportExcel. Il permet de lire et de créer des fichiers Excel sans ouvrir l’application Excel elle-même.
Pour installer le module :
Install-Module ImportExcel -Scope CurrentUser
Pour importer un classeur :
$donnees = Import-Excel C:\Temp\ventes.xlsx$donnees
Pour exporter des données vers un nouveau fichier Excel :
$donnees | Export-Excel C:\Temp\rapport.xlsx -AutoSize -AutoFilter
Cette solution est très intéressante pour générer automatiquement des rapports, appliquer des filtres ou créer plusieurs feuilles. Elle complète parfaitement les usages habituels d’Excel, notamment lorsque les données proviennent de plusieurs dossiers ou fichiers.
Les erreurs fréquentes des débutants
Quelques difficultés reviennent souvent lorsque l’on apprend PowerShell :
- Le chemin contient des espaces : entourez-le de guillemets, comme dans
"C:\Mes Documents\Rapports"; - Le script ne s’exécute pas : vérifiez le dossier actuel et utilisez le préfixe
.\; - Une commande est inconnue : utilisez
Get-CommandouGet-Help; - Un fichier est verrouillé : fermez Excel ou toute application qui l’utilise ;
- Une suppression est risquée : testez d’abord la commande sans
Remove-Itemet vérifiez les résultats.
Pour diagnostiquer un problème, lisez attentivement le message d’erreur. PowerShell indique généralement la commande concernée, la ligne en cause et la raison du blocage.
Une méthode simple pour progresser
Le meilleur moyen d’apprendre PowerShell est de partir d’un besoin concret. Choisissez une tâche répétitive que vous réalisez déjà à la main : trier des fichiers, créer un dossier mensuel, exporter une liste ou archiver des rapports.
Commencez par une seule commande. Observez son résultat. Ajoutez ensuite un filtre, puis un tri, puis une exportation. Cette progression évite de recopier un script complexe sans comprendre son fonctionnement.
Voici un parcours efficace :
- Apprendre à naviguer entre les dossiers ;
- Manipuler des fichiers avec
Get-ChildItem,Copy-ItemetMove-Item; - Utiliser les variables et les filtres ;
- Exporter les résultats en CSV ;
- Créer des scripts
.ps1; - Automatiser progressivement Excel et les rapports.
Gardez vos scripts dans un dossier dédié et ajoutez des commentaires avec le symbole # :
# Recherche les fichiers Excel du dossierGet-ChildItem C:\Temp -Filter *.xlsx
Un script bien commenté est plus facile à reprendre quelques semaines plus tard. Et entre nous, quelques semaines suffisent parfois pour oublier pourquoi on avait écrit cette ligne étrange.
Passer à l’action avec un premier mini-projet
Pour terminer votre première mise en pratique, créez un script qui génère un inventaire des fichiers Excel présents dans un dossier :
$dossier = "C:\Users\Nathan\Documents"$sortie = "C:\Temp\inventaire_excel.csv"Get-ChildItem $dossier -Filter *.xlsx -Recurse |Select-Object FullName, Name, Length, LastWriteTime |Sort-Object LastWriteTime -Descending |Export-Csv $sortie -NoTypeInformation -Encoding UTF8Write-Output "Inventaire créé : $sortie"
L’option -Recurse analyse également les sous-dossiers. Vous obtenez ainsi un fichier CSV contenant le chemin, le nom, la taille et la date de modification de chaque classeur.
À partir de là, vous pouvez enrichir le script : ignorer certains dossiers, ne conserver que les fichiers récents, calculer la taille totale ou générer directement un rapport Excel avec Export-Excel.
PowerShell devient réellement utile lorsque vous le reliez à vos habitudes de travail. Pour un utilisateur d’Excel, il représente une passerelle naturelle vers l’automatisation : les fichiers sont collectés automatiquement, les données sont préparées, puis Excel intervient uniquement pour l’analyse et la présentation.
