Fenêtre immédiate Excel VBA - 5 façons impressionnantes de l'utiliser!

« Fenêtre immédiate » peut être un outil utile à utiliser lorsque vous travaillez avec VBA dans Excel.

La fenêtre Immédiat vous permet de faire rapidement des choses telles que :

  • Obtenir des informations sur les fichiers Excel (comme le nombre de feuilles dans un classeur ou le nom du classeur)
  • Obtenez rapidement les informations de Debug.Print
  • Exécuter une ligne de code en quelques secondes
  • Exécuter une macro (ou appeler une fonction)
  • Obtenir des informations sur les variables (ou définir la valeur ou les variables)

Bien que vous n'ayez pas besoin d'utiliser la fenêtre immédiate pour travailler avec VBA dans Excel, savoir comment l'utiliser correctement peut vous rendre beaucoup plus efficace.

Dans ce tutoriel, je couvrirai tout ce que vous devez savoir sur la fenêtre immédiate et comment l'utiliser au mieux (expliqué avec des exemples).

Commençons!

Qu'est-ce qu'une fenêtre immédiate dans Excel VBA ?

La fenêtre immédiate est une partie de l'éditeur VB que vous pouvez utiliser pour faire des choses rapides.

Pour vous donner un exemple, si vous avez un classeur avec des feuilles de calcul masquées et que vous souhaitez connaître rapidement le nombre total de feuilles de calcul, vous pouvez le faire en quelques secondes avec la fenêtre Exécution.

La fenêtre immédiate fait beaucoup plus (comme vous le verrez plus tard dans ce didacticiel). Mais pour commencer, considérons la fenêtre immédiate comme un outil pour vous aider à accélérer votre travail dans Excel VBA.

Où trouver la fenêtre immédiate ?

Lorsque vous ouvrez l'éditeur VB Excel, vous pouvez déjà voir la fenêtre immédiate dans le cadre de l'éditeur VB. Et si vous ne le voyez pas déjà, vous pouvez facilement le faire apparaître.

Vous trouverez ci-dessous les étapes pour ouvrir l'éditeur VB et rendre la fenêtre immédiate visible :

  1. Cliquez sur l'onglet "Développeur" dans le ruban Excel (si vous ne voyez pas l'onglet développeur, cliquez ici pour savoir comment l'obtenir)
  2. Dans le groupe de codes, cliquez sur « Visual Basic ». Cela ouvrira l'éditeur VB
  3. Dans l'éditeur VB, cliquez sur l'option « Affichage » dans le menu
  4. Cliquez sur Fenêtre immédiate. Cela fera apparaître la fenêtre immédiate dans l'éditeur VB.

Si vous êtes plus à l'aise avec les raccourcis, voici quelques-uns pour accélérer les étapes ci-dessus :

  • Pour ouvrir l'éditeur VB - ALT + F11 (cela fonctionne même si vous n'avez pas l'onglet Développeur dans le ruban)
  • Pour afficher la fenêtre immédiate - Contrôle + G (utilisez celui-ci l'éditeur VB est ouvert)

Exemples d'utilisation de la fenêtre immédiate dans Excel VBA

Maintenant que vous savez où trouver la fenêtre immédiate, voyons quelques exemples impressionnants où vous pouvez l'utiliser lorsque vous travaillez avec Excel VBA.

Obtenir des informations sur les fichiers/classeurs

La « fenêtre immédiate » est un endroit où vous pouvez poser des questions sur les classeurs et elle vous donnera immédiatement la réponse.

Par exemple, supposons que vous ayez un classeur et que vous vouliez savoir combien de feuilles s'y trouvent, vous pouvez taper le code ci-dessous dans la fenêtre immédiate et appuyer sur la touche Entrée.

?ActiveWorkbook.Sheets.Count

Cela vous indiquera instantanément le nombre total de feuilles dans le classeur actif.

Cela peut être utile lorsque vous avez un classeur qui a beaucoup de feuilles et que vous ne pouvez pas le compter manuellement (ou que vous ne voulez pas), ou lorsque vous avez un classeur où il y a des feuilles cachées et que vous voulez connaître le total compter.

Le ? (point d'interrogation) est censé être utilisé avant la requête afin que VBA puisse comprendre que vous posez une question. Si vous n'utilisez pas ce point d'interrogation, la fenêtre immédiate ne vous donnera pas le détail/la réponse.

Maintenant, il s'agit d'un exemple très simple où la fenêtre immédiate vous donne des informations et vous fait gagner du temps.

Voici quelques exemples supplémentaires :

Pour obtenir le nom du classeur actif

?ActiveWorkbook.Name

Pour obtenir le nom de la feuille active

?Activesheet.Nom

Pour obtenir le chemin du classeur (l'adresse où il est enregistré)

?ActiveWorkbook.Chemin

Donc, si vous avez besoin de quelque chose sur un objet (comme un classeur, des feuilles, des graphiques, des formes, une plage, etc.), vous pouvez utiliser la fenêtre immédiate pour obtenir rapidement ces informations.

Obtenir des informations sur Debug.Print

Dans Excel VBA, Debug.Print est utilisé pour afficher instantanément la valeur d'une variable dans la fenêtre immédiate.

Par exemple, le code ci-dessous afficherait instantanément le message « Bonjour » dans la fenêtre immédiate.

Sub DisplayMessage() Debug.Print "Bonjour" End Sub

Vous pouvez utiliser la ligne Debug.Print dans votre code pour obtenir rapidement des données dans la fenêtre immédiate ou pour déboguer votre code.

Par exemple, si vous souhaitez obtenir les noms de toutes les feuilles d'un classeur, vous pouvez utiliser le code ci-dessous :

Sub GetSheetNames() pour chaque sh dans ActiveWorkbook.Sheets Debug.Print sh.Name Next sh End Sub

Le code ci-dessus parcourt chaque feuille du classeur actif et donne le nom dans la fenêtre immédiate.

Debug.Print est une technique utile pour déboguer votre code. Par exemple, si vous exécutez une boucle et que vous souhaitez voir combien de fois la boucle a été exécutée, vous pouvez simplement placer une ligne Debug.Print qui affiche simplement les nombres incrémentiels lorsque chaque boucle s'exécute.

Si vous utilisez Déboguer.Imprimer pour déboguer le code, n'oubliez pas de le supprimer lorsque vous avez terminé.

Exécuter une macro (ou une fonction)

Bien qu'il existe différentes manières d'exécuter une macro dans Excel, l'une des méthodes les plus rapides consiste à utiliser la fenêtre immédiate.

Pour exécuter une macro, il vous suffit de saisir le nom de la macro dans la fenêtre immédiate et d'appuyer sur la touche Entrée (le curseur doit être à la fin du nom de la macro pour que cela fonctionne).

Ci-dessous un exemple, où dès que vous entrez le nom de la macro dans la fenêtre immédiate, elle exécute le code (où le code affiche le message « Good Morning » dans la fenêtre immédiate).

Cela peut être utile lorsque vous avez un code et que vous souhaitez vérifier s'il fonctionne comme prévu ou non. Vous pouvez avoir une ou plusieurs lignes Debug.Print dans le code et exécuter la macro à partir de la fenêtre immédiate.

Il vous montrera instantanément les valeurs dans la fenêtre immédiate et vous pourrez vérifier si tout fonctionne bien ou non.

Vous pouvez également utiliser la fenêtre immédiate pour exécuter des fonctions personnalisées.

Par exemple, dans l'exemple ci-dessous, une fonction est créée pour vérifier si un nombre est pair ou impair. Vous pouvez exécuter cette fonction à partir de la fenêtre immédiate en tapant la fonction avec l'argument qu'elle prend. Vous devez utiliser le point d'interrogation dans ce cas car vous lui demandez de renvoyer une valeur stockée dans la fonction.

Exécuter une ligne de code (ou plusieurs lignes de code)

Avec la fenêtre immédiate, vous pouvez également exécuter une ligne de code (ou plusieurs lignes de codes).

La meilleure partie à ce sujet est que vous pouvez simplement ouvrir la fenêtre immédiate, exécuter le code et fermer (contrairement à une macro que vous devez mettre dans une fenêtre de module puis exécuter).

Un cas d'utilisation où cela peut être utile est lorsque vous souhaitez afficher rapidement toutes les feuilles du classeur.

Vous trouverez ci-dessous le code que vous pouvez placer dans la fenêtre immédiate pour afficher toutes les feuilles du classeur. Placer le curseur à la fin de la ligne et dès que vous appuyez sur la touche Entrée, toutes les feuilles seront affichées.

Pour chaque feuille de Thisworkbook.Sheets : Sheet.Visible=True : Next Sheet

Notez que bien que cela ressemble à une seule ligne de code, il est composé de trois parties.

Chaque partie est séparée par un : (deux points), qui agit comme un saut de ligne. Cela vous permet d'utiliser la boucle For Next dans la fenêtre immédiate pour parcourir chaque feuille et modifier la propriété visible en TRUE (ce qui affiche toute feuille masquée).

Obtenir des valeurs variables

Lorsque vous commencez à créer des codes VBA complexes, vous devez vous fier à des variables pour faire le travail.

Une variable est quelque chose qui contient une valeur et cette valeur peut changer lorsque le code est en cours d'exécution. Vous pouvez utiliser une fenêtre immédiate pour vérifier ces valeurs variables.

Vous trouverez ci-dessous un code simple qui donne la somme des 10 premiers entiers positifs et affiche le résultat dans la fenêtre immédiate.

Sub AddFirstTenNumbers() Dim Var As Integer Dim i As Integer Dim k As Integer For i = 1 To 10 k = k + i Next i Debug.Print i, k End Sub

Dès que vous exécutez ce code, vous verrez le résultat ci-dessous dans la fenêtre immédiate. Cela vous indique instantanément que le code fonctionne correctement et donne le résultat attendu.

Si cela ne donne pas les résultats attendus, vous pouvez déboguer le code.

Beaucoup de gens utilisent une boîte de message lors du débogage du code. Bien que cela fonctionne bien, je trouve cela un peu intrusif car cela m'amène au classeur Excel et affiche une boîte de message. D'un autre côté, l'utilisation de la fenêtre immédiate pour déboguer est beaucoup plus fluide et me maintient dans l'éditeur Visual Basic lui-même.

Remarque : Si vous travaillez avec un code complexe et que vous devez suivre plusieurs variables, il est préférable d'utiliser une fenêtre de surveillance. Une fenêtre de surveillance vous permet d'ajouter une variable et vous pouvez ensuite voir comment cette variable change en temps réel (ou au fur et à mesure que vous parcourez le code).

Définir la valeur de la variable lors du débogage

Il s'agit d'une utilisation un peu avancée de la fenêtre Exécution, mais si vous l'utilisez, cela peut vous faire gagner un temps considérable lors du débogage du code.

Vous pouvez utiliser la fenêtre immédiate pour définir la valeur d'une variable pendant que vous exécutez le code en mode débogage (où vous définissez un point d'arrêt pour que le code ne s'exécute pas complètement - mais jusqu'à une ligne spécifique).

Par exemple, si vous avez une boucle qui s'exécute 10 fois et que vous souhaitez vérifier ce qui se passe lorsque la boucle s'exécute pour la 8e fois, vous n'avez pas besoin de parcourir la boucle sept fois pour accéder à la huitième itération. Vous pouvez simplement ajouter un point d'arrêt avant la boucle et changer la variable de boucle à 8. Maintenant, lorsque vous exécutez le code, il vous montrera ce qui se passe lorsque les boucles s'exécutent pour la 8ème fois.

Cela devient beaucoup plus utile lorsque vous écrivez des codes complexes et que vous souhaitez déboguer des boucles spécifiques.

Supposons que vous ayez un code comme indiqué ci-dessous :

Sub UnhideSheets() For i = 1 To Worksheets.Count Debug.Print Sheets(i).Name Next i End Sub

Le code ci-dessus répertorie simplement les noms de feuille de toutes les feuilles du classeur dans la fenêtre immédiate.

Si vous ne voulez pas lister les noms de toutes les feuilles, mais uniquement les feuilles après la 10e feuille, vous pouvez placer un point d'arrêt dans la deuxième ligne de la boucle (afin que rien après cette ligne ne soit exécuté) puis modifier le variable 'i' à 11.

Pour modifier le nom de la variable dans la fenêtre immédiate, saisissez la ligne suivante :

i=11

Cela garantira que les 10 premières fois de la boucle sont ignorées et que la valeur de votre variable est définie sur 11.

Ancrer/Déconnecter la fenêtre d'exécution

Vous pouvez avoir une fenêtre immédiate ancrée dans l'éditeur VB - ce qui signifie qu'elle reste à un endroit dans l'éditeur VB et se déplace et se dimensionne avec elle.

Et vous pouvez également le désancrer, ce qui signifie qu'il est indépendant de l'éditeur VB et peut être déplacé en tant que fenêtre autonome.

Voici comment vous pouvez modifier les paramètres d'ancrage pour la fenêtre immédiate :

  1. Cliquez sur l'option Outils dans le menu de l'éditeur VB
  2. Cliquez sur « Options »
  3. Dans la boîte de dialogue Options, cliquez sur le dernier onglet - Docking
  4. Cochez l'option Fenêtre immédiate pour la rendre ancrable et décochez-la pour la rendre non ancrable.
  5. Cliquez sur OK

Alternativement, si la fenêtre immédiate est visible, vous pouvez également cliquer avec le bouton droit et modifier la propriété ancrable de celle-ci.

Ancrable signifie que la fenêtre immédiate deviendrait une partie de la fenêtre existante en se plaçant à certains endroits, comme la gauche de la fenêtre ou en bas. Cela permet aux fenêtres ancrées de se déplacer et de se dimensionner ensemble.

La fenêtre immédiate ne s'affiche pas - Voici quelques façons de l'obtenir

Il peut y avoir plusieurs raisons à cela.

La raison la plus courante pour laquelle vous ne voyez pas une fenêtre immédiate est qu'elle n'a pas été rendue visible. Il peut ne pas être visible par défaut et pour le faire apparaître, vous devez accéder à l'option Afficher dans le menu et cliquer sur l'option Fenêtre immédiate. Cela garantira qu'il est visible dans l'éditeur VB.

Vous pouvez également utiliser le clavier Ctrl + G pour faire apparaître la fenêtre immédiate. Utilisez ce raccourci clavier lorsque vous êtes dans l'éditeur VB.

Une autre raison pour laquelle vous ne voyez peut-être pas la fenêtre immédiate est qu'elle a été réduite et qu'elle est maintenant si fermée que vous ne pouvez pas la voir (comme indiqué ici). Faites simplement une analyse rapide et vérifiez si vous voyez un petit carré bleu/rouge se cacher quelque part. Vous pouvez passer le curseur dessus et vous verrez une option pour le redimensionner.

Si vous ne voyez pas du tout la fenêtre immédiate, voici quelque chose qui a fonctionné pour beaucoup de gens (cela arrive souvent à cause des changements de résolution d'écran) :

  1. Ouvrez l'éditeur VB
  2. Appuyez sur Ctrl-G pour donner le focus à la fenêtre immédiate (ou cliquez sur l'option Afficher dans le menu, puis cliquez sur la fenêtre immédiate)
  3. Maintenez la touche ALT enfoncée, puis appuyez sur la touche espace. Cela affichera les options déroulantes pour la fenêtre immédiate.
  4. Appuyez sur M (pour Déplacer)
  5. Utilisez les touches fléchées pour déplacer la fenêtre
  6. Une fois que vous avez trouvé où il se trouve, agrandissez-le

J'ai obtenu cela sur un forum ici et j'ai également remarqué que la même solution était suggérée pour que la fenêtre immédiate VBA ne s'affiche pas.

Une autre chose que vous pouvez essayer est de rendre la fenêtre immédiate non ancrable (allez dans Outils -> Options -> Ancrage et décochez l'option Fenêtre immédiate). Cela a fonctionné pour certaines personnes.

Vous aimerez peut-être aussi les articles suivants :

  • Classeur de macros personnelles Excel | Enregistrer et utiliser des macros dans tous les classeurs
  • Boucles Excel VBA : pour le suivant, faire pendant, faire jusqu'à, pour chacun (avec exemples)
  • Travailler avec des feuilles de calcul à l'aide d'Excel VBA
  • Création d'une fonction définie par l'utilisateur (UDF) dans Excel VBA

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave