Pour certaines macros, vous devrez peut-être déterminer s’il existe un moyen de déterminer la machine particulière sur laquelle la macro fonctionne. Par exemple, vous pouvez avoir un ordinateur de bureau qui a un répertoire particulier dans D: \ OraNT \ Plus33, tandis que votre ordinateur portable a le répertoire dans C: \ OraNT \ Plus33. La macro, bien sûr, a besoin de détecter quelle machine est en cours d’utilisation afin de savoir quel répertoire utiliser pour son traitement.

Il existe différentes manières d’aborder cette tâche. Il est possible de créer une macro Excel qui accède réellement à l’API Windows et détermine le nom de l’ordinateur sur lequel elle s’exécute. Une telle approche peut cependant être assez complexe.

Un moyen plus simple consiste simplement à utiliser la commande DIR de VBA pour déterminer où se trouve le répertoire souhaité. Ce qui suit fera l’affaire:

Sub OracleQueries()

Dim sTemp As String     Dim sGoodPath As String

sGoodPath = "D:\OraNT\Plus33\"

sTemp = Dir("D:\OraNT\Plus33\nul")

If sTemp = "" Then         sGoodPath = "C:\OraNT\Plus33\"

sTemp = Dir("C:\OraNT\Plus33\nul")

End If

'Now have directory information     If sTemp <> "" Then         'Process queries using sGoodPath     Else         MsgBox "Directories not found!"

End If End Sub

Notez comment la fonction DIR est utilisée dans cet exemple. Normalement, DIR renvoie le nom du premier fichier qu’il trouve dans le répertoire demandé.

Si le répertoire est vide, cependant, DIR renvoie une chaîne vide, même si le répertoire existe réellement. Puisque tout ce que nous voulons faire est de savoir si le répertoire existe (pas s’il contient des fichiers), il est nécessaire d’ajouter les lettres « nul » à la fin du chemin du répertoire utilisé par DIR.

Cela amène DIR à renvoyer une chaîne vide si le répertoire n’est pas localisé, ou bien les caractères «nul» s’il l’est (même si le répertoire est vide).

Vers la fin de la macro, sTemp sera vide si aucun des répertoires n’a pu être localisé. Si l’un d’entre eux a été localisé, sTemp ne sera pas vide et sGoodPath sera défini sur le nom du répertoire qui peut être utilisé dans un traitement ultérieur.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (11576) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.

Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici: link: / excel-Self-Aware_Macros [Self-Aware Macros].