Si vous avez besoin de réaliser des opérations récurrentes sous Excel, il se pourrait que cet article vous intéresse. Nous allons en effet voire comment utiliser et contrôler MS Excel via PowerShell.
Avant d’aller plus loin, sachez qu’il ne s’agit pas de faire du Excel sans passer par Excel mais bien de contrôler certains comportements Excel via des lignes de commande PowerShell. Ce type d’actions n’est donc pas transparent pour l’utilisateur puisque Excel se lancera et fonctionnera de la même façon que si vous l’exécutiez manuellement. Simplement tout se déroulera sans que vous pressiez les touches de votre clavier !
Pour démarrer Microsoft Excel, vous pouvez procéder comme suit :
$excel = new-object -comobject Excel.Application
$excel.Visible = $true
$excel.DisplayAlerts = $False
Si vous n’utilisez pas le paramètre visible à true, Excel s’exécutera bien mais vous ne le verrez pas à l’écran… 😉 ! Mais il ne faut pas me croire sur parole, vous pouvez effectuer le test et vous en assurer en ouvrant le gestionnaire de tâches… pour voir qu’il exécute correctement.
Si vous souhaitez pouvoir utiliser Excel sans intervention humaine mais uniquement en scripting (comme c’est le cas ici) vous devez également mettre le paramètre « DisplayAlerts » à false. Cela évitera toutes les demandes Excel du genre :
Notre Excel s’exécute mais… il ne fait pas grand-chose… et en plus il est vide.
Continuons.😀
Les 2 lignes suivantes vont vous permettre de créer un fichier Excel, et immédiatement après, de créer un nouvel espace de travail au sein d’une nouvelle feuille.
$workbook = $excel.Workbooks.Add()
$workbook = $workbook.Worksheets.Item(1)
Le numéro en paramètre dans Item() correspond à l’emplacement où vous souhaitez créer une nouvelle feuille. Mon fichier étant actuellement vide, je choisi de l’insérer en position 1.
Vous pouvez bien entendu ajouter plusieurs feuilles à votre document Excel ! A présent, nous disposons maintenant d’un fichier Excel avec une feuille Excel prête à servir.
Avec les divers traitements ou données que vous avez pu insérer dans vos document Excel, vous aimeriez certainement pouvoir le sauvegarder puis quitter Excel.
Pour effectuer une nouvelle sauvegarde de votre fichier, vous pouvez définir le nom et l’emplacement du fichier comme suit :
$workbook.SaveAs("C:\Users\your-name\Desktop\exemple.xlsx")
Pour sauvegarder à nouveau votre fichier au même endroit et quitter Excel, vous pouvez utiliser les 2 lignes de commandes ci-dessous :
$workbook.Save()
$excel.Quit()
Avant d’aller plus loin, noter que lorsque je parle de workbook il s’agit d’un fichier Excel. Un fichier Excel, un workbook, peut contenir plusieurs feuilles de calculs qui correspondent aux différents onglets que vous pouvez voir en bas de votre fichier Excel.
Supposons que vous disposez d’un fichier Excel qui porte le nom : exemple.xlsx la commande ressemblerait à celle-ci :
Pour procéder à l’ouverture de votre document, vous allez utiliser la commande suivante :
$excel_file_path = 'C:\Users\your-name-here\Desktop\exemple.xlsx'
$workbook = $excel.Workbooks.open($excel_file_path)
Cette fois-ci Excel démarre mais ouvre également votre fichier Excel avec les différenes données qu’il peut contenir.
L’intérêt consiste maintenant à rajouter du contenu pour remplir notre fichier Excel avec des données.
Pour ce faire, nous pouvons utiliser les commandes suivantes :
$workbook.Cells.Item(1,1) = 'hello'
$workbook.Cells.Item(1,2) = 'world'
Comme vous allez le voir si vous tenter d’exécuter ces lignes de commande, vous venez de remplir les cellules A1 et B1. Vous l’aurez donc compris, la première valeur dans Item(x,y) correspond au numéro de lignes tandis que la seconde valeur correspond au numéro de la colonne cible.
Je ne vais pas plus loin, je pense que vous aurez compris le fonctionnement. Il est assez facile par la suite de faire du remplissage de fichiers Excel via les boucles for/while disponibles en PowerShell.
Dans cette partie, nous allons considérer les 2 exemples suivants :
Rappel de la commande pour saisir des données dans Excel :
$sheet.Cells.Item($row,$column)= 'Status'
Le script est identique en ce qui concerne le début. Les deux points auxquels vous devez faire attention c’est :
Vous devriez maintenant pouvoir contrôler assez facilement Microsoft Excel via PowerShell… Vous vous en doutez les possibilités sont vastes aux vues des possibilités offertes par les 2 produits (PowerShell, Excel). A noter que dans mon cas, j’ai effectué les tests avec MS Excel 2013 mais il n’y a pas de raison que ça pose des difficultés sur les versions les plus récentes du pack Office.
Comme d’habitude, vous trouverez ci-dessous quelques scripts exemples sans prétention pour vous permettre de tester ce que nous avons évoqué ci-dessus :
Les scripts sont également disponibles sur GitHub.
Si vous avez des questions, n’hésitez pas 😀 !
Focus Cell : Nouvelle fonctionnalité dans Microsoft Excel pour améliorer votre productivité Nouvelle fonctionnalité «…
OpenAI envisage de lancer son propre navigateur, une menace pour Google ou Microsoft ? OpenAI,…
Microsoft annonce les mises à jour à chaud « Hotpatch » pour Windows 11 24H2 ! Microsoft…
Mise en situation du produit Windows 365 Link par microsoft Microsoft s’apprête à révolutionner le…
Google est au cœur d’une bataille juridique antitrust majeure avec le ministère américain de la…
Microsoft 365 : l'abonnement mensuel pour les entreprises va augmenter (encore) Microsoft vient d'annoncer une…