Visual Basic Editor - Comment l'ouvrir et l'utiliser dans Excel

La première étape pour travailler avec VBA dans Excel consiste à vous familiariser avec Visual Basic Editor (également appelé éditeur VBA ou éditeur VB).

Dans ce didacticiel, je couvrirai tout ce qu'il y a à savoir sur l'éditeur VBA et quelques options utiles que vous devez connaître lors du codage dans Excel VBA.

Qu'est-ce que Visual Basic Editor dans Excel ?

Visual Basic Editor est une application distincte qui fait partie d'Excel et s'ouvre chaque fois que vous ouvrez un classeur Excel. Par défaut, il est masqué et pour y accéder, vous devez l'activer.

VB Editor est l'endroit où vous conservez le code VB.

Il existe plusieurs façons d'obtenir le code dans l'éditeur VB :

  1. Lorsque vous enregistrez une macro, elle crée automatiquement un nouveau module dans l'éditeur VB et insère le code dans ce module.
  2. Vous pouvez saisir manuellement le code VB dans l'éditeur VB.
  3. Vous pouvez copier un code d'un autre classeur ou d'Internet et le coller dans l'éditeur VB.

Ouverture de l'éditeur VB

Il existe différentes manières d'ouvrir Visual Basic Editor dans Excel :

  1. Utiliser un raccourci clavier (le plus simple et le plus rapide)
  2. Utilisation de l'onglet Développeur.
  3. Utilisation des onglets de la feuille de calcul.

Examinons rapidement chacun de ces éléments.

Raccourci clavier pour ouvrir l'éditeur Visual Basic

Le moyen le plus simple d'ouvrir l'éditeur Visual Basic est d'utiliser le raccourci clavier - ALT + F11 (maintenez la touche ALT enfoncée et appuyez sur la touche F11).

Dès que vous faites cela, il ouvrira une fenêtre distincte pour l'éditeur Visual Basic.

Ce raccourci fonctionne comme une bascule, donc lorsque vous l'utiliserez à nouveau, il vous ramènera à l'application Excel (sans fermer l'éditeur VB).

Le raccourci pour la version Mac est Opt + F11 ou alors Fn + Opt + F11

Utilisation de l'onglet Développeur

Pour ouvrir Visual Basic Editor à partir du ruban :

  1. Cliquez sur l'onglet Développeur (si vous ne voyez pas d'onglet développeur, lisez ceci pour savoir comment l'obtenir).
  2. Dans le groupe Code, cliquez sur Visual Basic.

Utilisation de l'onglet Feuille de calcul

C'est une méthode moins utilisée pour ouvrir l'éditeur Vb.

Accédez à l'un des onglets de la feuille de calcul, cliquez avec le bouton droit de la souris et sélectionnez "Afficher le code".

Cette méthode n'ouvrira pas seulement l'éditeur VB, elle vous amènera également à la fenêtre de code pour cet objet de feuille de calcul.

Ceci est utile lorsque vous souhaitez écrire du code qui ne fonctionne que pour une feuille de calcul spécifique. C'est généralement le cas avec les événements de feuille de calcul.

Anatomie de l'éditeur Visual Basic dans Excel

Lorsque vous ouvrez l'éditeur VB pour la première fois, cela peut sembler un peu écrasant.

Il existe différentes options et sections qui peuvent sembler complètement nouvelles au premier abord.

En outre, il a toujours un ancien look Excel 97 jours. Bien qu'Excel se soit considérablement amélioré en termes de conception et de convivialité au fil des ans, l'éditeur VB n'a vu aucun changement dans son apparence.

Dans cette section, je vais vous présenter les différentes parties de l'application Visual Basic Editor.

Remarque : lorsque j'ai commencé à utiliser VBA il y a des années, j'étais assez submergé par toutes ces nouvelles options et fenêtres. Mais au fur et à mesure que vous vous habituerez à travailler avec VBA, vous vous familiariserez avec la plupart d'entre eux. Et la plupart du temps, vous ne serez pas obligé d'utiliser toutes les options, seulement une main pleine.

Vous trouverez ci-dessous une image des différents composants de l'éditeur VB. Ceux-ci sont ensuite décrits en détail dans les sections ci-dessous de ce didacticiel.

Examinons maintenant rapidement chacun de ces composants et comprenons ce qu'il fait :

Barre de menu

C'est là que vous avez toutes les options que vous pouvez utiliser dans l'éditeur VB. Il est similaire au ruban Excel où vous avez des onglets et des options avec chaque onglet.

Vous pouvez explorer les options disponibles en cliquant sur chacun des éléments de menu.

Vous remarquerez que la plupart des options de VB Editor ont des raccourcis clavier mentionnés à côté. Une fois que vous vous êtes habitué à quelques raccourcis clavier, travailler avec l'éditeur VB devient vraiment facile.

Barre d'outils

Par défaut, il existe une barre d'outils dans l'éditeur VB qui contient des options utiles dont vous aurez probablement besoin le plus souvent. C'est exactement comme la barre d'outils d'accès rapide dans Excel. Il vous donne un accès rapide à certaines des options utiles.

Vous pouvez le personnaliser un peu en lui supprimant ou en y ajoutant des options (en cliquant sur la petite flèche pointant vers le bas à la fin de la barre d'outils).

Dans la plupart des cas, la barre d'outils par défaut est tout ce dont vous avez besoin lorsque vous travaillez avec l'éditeur VB.

Vous pouvez déplacer la barre d'outils au-dessus de la barre de menu en cliquant sur les trois points gris (au début de la barre d'outils) et en la faisant glisser au-dessus de la barre de menu.

Remarque : il y a quatre barres d'outils dans l'éditeur VB - Standard, Debug, Edit et User form. Ce que vous voyez dans l'image ci-dessus (qui est également la valeur par défaut) est la barre d'outils standard. Vous pouvez accéder à d'autres barres d'outils en allant à l'option Affichage et en passant le curseur sur l'option Barres d'outils. Vous pouvez ajouter une ou plusieurs barres d'outils à l'éditeur VB si vous le souhaitez.

Explorateur de projets

L'explorateur de projets est une fenêtre sur la gauche qui affiche tous les objets actuellement ouverts dans Excel.

Lorsque vous travaillez avec Excel, chaque classeur ou complément ouvert est un projet. Et chacun de ces projets peut contenir une collection d'objets.

Par exemple, dans l'image ci-dessous, l'explorateur de projets affiche les deux classeurs ouverts (Book1 et Book2) et les objets de chaque classeur (feuilles de calcul, ThisWorkbook et Module in Book1).

Il y a une icône plus à gauche des objets que vous pouvez utiliser pour réduire la liste des objets ou développer et voir la liste complète des objets.

Les objets suivants peuvent faire partie de l'explorateur de projet :

  1. Tous les classeurs ouverts - dans chaque classeur (également appelé projet), vous pouvez avoir les objets suivants :
    • Objet feuille de calcul pour chaque feuille de calcul du classeur
    • Objet ThisWorkbook qui représente le classeur lui-même
    • Feuille de graphique objet pour chaque feuille de graphique (ce ne sont pas aussi courants que les feuilles de calcul)
    • Modules - C'est ici que va le code généré avec un enregistreur de macros. Vous pouvez également écrire ou copier-coller le code VBA ici.
  2. Tous les compléments ouverts

Considérez l'explorateur de projet comme un endroit qui décrit tous les objets ouverts dans Excel à un moment donné.

Le raccourci clavier pour ouvrir l'explorateur de projet est Contrôle + R (maintenez la touche Ctrl enfoncée puis appuyez sur R). Pour le fermer, cliquez simplement sur l'icône de fermeture en haut à droite de la fenêtre de l'Explorateur de projets.

Remarque : Pour chaque objet de l'Explorateur de projets, il existe une fenêtre de code dans laquelle vous pouvez écrire le code (ou le copier et le coller depuis quelque part). La fenêtre de code apparaît lorsque vous double-cliquez sur l'objet.

Fenêtre Propriétés

La fenêtre Propriétés est l'endroit où vous pouvez voir les propriétés de l'objet sélectionné. Si vous n'avez pas encore la fenêtre Propriétés, vous pouvez l'obtenir en utilisant le raccourci clavier F4 (ou allez dans l'onglet Affichage et cliquez sur la fenêtre Propriétés).

La fenêtre Propriétés est une fenêtre flottante que vous pouvez ancrer dans l'éditeur VB. Dans l'exemple ci-dessous, je l'ai ancré juste en dessous de l'explorateur de projet.

La fenêtre Propriétés nous permet de modifier les propriétés d'un objet sélectionné. Par exemple, si je souhaite masquer (ou très masquer) une feuille de calcul, je peux le faire en modifiant la propriété Visible de l'objet de feuille de calcul sélectionné.

En rapport: Cacher une feuille de calcul dans Excel (qui ne peut pas être masquée facilement)

Fenêtre de code

Il existe une fenêtre de code pour chaque objet répertorié dans l'Explorateur de projets. Vous pouvez ouvrir la fenêtre de code d'un objet en double-cliquant dessus dans la zone Explorateur de projets.

La fenêtre de code est l'endroit où vous allez écrire votre code ou copier-coller un code d'ailleurs.

Lorsque vous enregistrez une macro, le code de celle-ci va dans la fenêtre de code d'un module. Excel insère automatiquement un module pour y placer le code lors de l'enregistrement d'une macro.

En rapport: Comment exécuter une macro (code VBA) dans Excel.

Fenêtre immédiate

La fenêtre Exécution est principalement utilisée lors du débogage du code. Une façon d'utiliser la fenêtre Immédiat consiste à utiliser une instruction Print.Debug dans le code, puis à exécuter le code.

Cela m'aide à déboguer le code et à déterminer où mon code reste bloqué. Si j'obtiens le résultat de Print.Debug dans la fenêtre immédiate, je sais que le code a fonctionné au moins jusqu'à cette ligne.

Si vous débutez dans le codage VBA, cela peut vous prendre un certain temps pour pouvoir utiliser la fenêtre immédiate pour le débogage.

Par défaut, la fenêtre immédiate n'est pas visible dans l'éditeur VB. Vous pouvez l'obtenir en utilisant le raccourci clavier Ctrl + G (ou pouvez aller dans l'onglet Affichage et cliquer sur « Fenêtre immédiate »).

Où ajouter du code dans l'éditeur VB

J'espère que vous avez maintenant une compréhension de base de ce qu'est VB Editor et de toutes ses parties.

Dans cette section de ce tutoriel, je vais vous montrer où ajouter un code VBA dans Visual Basic Editor.

Il y a deux endroits où vous pouvez ajouter le code VBA dans Excel :

  1. La fenêtre de code d'un objet. Ces objets peuvent être un classeur, une feuille de calcul, un formulaire utilisateur, etc.
  2. La fenêtre de code d'un module.

Fenêtre de code de module vs fenêtre de code d'objet

Permettez-moi d'abord d'effacer rapidement la différence entre l'ajout d'un code dans un module et l'ajout d'un code dans une fenêtre de code objet.

Lorsque vous ajoutez un code à l'un des objets, cela dépend d'une action de cet objet qui déclenchera ce code. Par exemple, si vous souhaitez afficher toutes les feuilles de calcul d'un classeur dès que vous ouvrez ce classeur, le code ira dans l'objet ThisWorkbook (qui représente le classeur).

Le déclencheur, dans ce cas, ouvre le classeur.

De même, si vous souhaitez protéger une feuille de calcul dès qu'une autre feuille de calcul est activée, le code correspondant ira dans la fenêtre de code de la feuille de calcul.

Ces déclencheurs sont appelés événements et vous pouvez associer un code à exécuter lorsqu'un événement se produit.

En rapport: En savoir plus sur les événements en VBA.

Au contraire, le code du module doit être exécuté manuellement (ou il peut également être appelé à partir d'autres sous-routines).

Lorsque vous enregistrez une macro, Excel crée automatiquement un module et y insère le code de macro enregistré. Maintenant, si vous devez exécuter ce code, vous devez exécuter manuellement la macro.

Ajout de code VBA dans le module

Alors que l'enregistrement d'une macro crée automatiquement un module et y insère le code, il existe certaines limitations lors de l'utilisation d'un enregistreur de macros. Par exemple, il ne peut pas utiliser de boucles ou de conditions If Then Else.

Dans de tels cas, il est préférable de copier et coller le code manuellement ou d'écrire le code vous-même.

Un module peut être utilisé pour contenir les types de codes VBA suivants :

  1. Déclarations: Vous pouvez déclarer des variables dans un module. La déclaration de variables vous permet de spécifier le type de données qu'une variable peut contenir. Vous pouvez déclarer une variable pour un sous-programme uniquement ou pour tous les sous-programmes du module (ou tous les modules)
  2. Sous-programmes (Procédures): Il s'agit du code qui contient les étapes que vous souhaitez que VBA exécute.
  3. Procédures de fonction: il s'agit d'un code qui renvoie une valeur unique et vous pouvez l'utiliser pour créer des fonctions personnalisées (également appelées fonctions définies par l'utilisateur ou UDF en VBA)

Par défaut, un module ne fait pas partie du classeur. Vous devez d'abord l'insérer avant de l'utiliser.

Ajout d'un module dans l'éditeur VB

Voici les étapes pour ajouter un module :

  1. Cliquez avec le bouton droit sur n'importe quel objet du classeur (dans lequel vous voulez le module).
  2. Passez le curseur sur l'option Insérer.
  3. Cliquez sur Module.

Cela créerait instantanément un dossier appelé Module et insèrerait un objet appelé Module 1. Si vous avez déjà inséré un module, les étapes ci-dessus inséreraient un autre module.

Une fois le module inséré, vous pouvez double-cliquer sur l'objet module dans l'explorateur de projet et cela ouvrira la fenêtre de code correspondant.

Vous pouvez maintenant copier-coller le code ou l'écrire vous-même.

Retrait du module

Voici les étapes pour supprimer un module dans Excel VBA :

  1. Cliquez avec le bouton droit sur le module que vous souhaitez supprimer.
  2. Cliquez sur l'option Supprimer le module.
  3. Dans la boîte de dialogue qui s'ouvre, cliquez sur Non.

Remarque : vous pouvez exporter un module avant de le supprimer. Il est enregistré en tant que fichier .bas et vous pouvez l'importer dans un autre projet. Pour exporter un module, faites un clic droit sur le module et cliquez sur « Exporter le fichier ».

Ajout de code à la fenêtre de code objet

Pour ouvrir la fenêtre de code d'un objet, il suffit de double-cliquer dessus.

Lorsqu'il s'ouvre, vous pouvez saisir le code manuellement ou copier-coller le code depuis d'autres modules ou depuis Internet.

Notez que certains des objets vous permettent de choisir l'événement pour lequel vous souhaitez écrire le code.

Par exemple, si vous souhaitez écrire un code pour que quelque chose se produise lorsque la sélection est modifiée dans la feuille de calcul, vous devez d'abord sélectionner des feuilles de calcul dans la liste déroulante en haut à gauche de la fenêtre de code, puis sélectionner l'événement de modification dans la liste déroulante. -en bas à droite.

Remarque : Ces événements sont spécifiques à l'objet. Lorsque vous ouvrez la fenêtre de code d'un classeur, vous verrez les événements liés à l'objet classeur. Lorsque vous ouvrez la fenêtre de code d'une feuille de calcul, vous verrez les événements liés à l'objet de la feuille de calcul.

Personnalisation de l'éditeur VB

Bien que les paramètres par défaut de Visual Basic Editor soient suffisants pour la plupart des utilisateurs, ils vous permettent de personnaliser davantage l'interface et quelques fonctionnalités.

Dans cette section du didacticiel, je vais vous montrer toutes les options dont vous disposez lors de la personnalisation de l'éditeur VB.

Pour personnaliser l'environnement de l'éditeur VB, cliquez sur Outils dans la barre de menus, puis sur Options.

Cela ouvrirait la boîte de dialogue Options qui vous donnera toutes les options de personnalisation dans l'éditeur VB. La boîte de dialogue « Options » comporte quatre onglets (comme indiqué ci-dessous) qui proposent diverses options de personnalisation pour Visual Basic Editor.

Examinons rapidement chacun de ces onglets et les options importantes de chacun.

Onglet Éditeur

Bien que les paramètres intégrés fonctionnent correctement dans la plupart des cas, permettez-moi de parcourir les options de cet onglet.

Au fur et à mesure que vous maîtriserez mieux VBA dans Excel, vous souhaiterez peut-être personnaliser l'éditeur VB à l'aide de certaines de ces options.

Vérification automatique de la syntaxe

Lorsque vous travaillez avec VBA dans Excel, dès que vous faites une erreur de syntaxe, vous serez accueilli par une boîte de dialogue contextuelle (avec une description de l'erreur). Quelque chose comme indiqué ci-dessous :

Si vous désactivez cette option, cette boîte contextuelle n'apparaîtra pas même si vous faites une erreur de syntaxe. Cependant, il y aurait un changement de couleur dans le texte du code pour indiquer qu'il y a une erreur.

Si vous êtes débutant, je vous recommande de laisser cette option activée. Au fur et à mesure que vous vous familiariserez avec le codage, vous commencerez peut-être à trouver ces fenêtres contextuelles irritantes, puis vous pourrez désactiver cette option.

Exiger une déclaration de variable

C'est une option que je recommande d'activer.

Lorsque vous travaillez avec VBA, vous utilisez des variables pour contenir différents types de données et objets.

Lorsque vous activez cette option, elle insère automatiquement l'instruction 'Option Explicit' en haut de la fenêtre de code. Cela vous oblige à déclarer toutes les variables que vous utilisez dans votre code. Si vous ne déclarez pas de variable et essayez d'exécuter le code, une erreur s'affichera (comme indiqué ci-dessous).

Dans le cas ci-dessus, j'ai utilisé la variable Var, mais je ne l'ai pas déclarée. Donc, quand j'essaie d'exécuter le code, il affiche une erreur.

Cette option est très utile lorsque vous avez beaucoup de variables. Cela m'aide souvent à trouver des noms de variables mal orthographiés car ils sont considérés comme non déclarés et une erreur s'affiche.

Remarque : Lorsque vous activez cette option, cela n'affecte pas les modules existants.

Membre de la liste automatique

Cette option est très utile car elle vous aide à obtenir une liste des propriétés des méthodes d'un objet.

Par exemple, si je veux supprimer une feuille de calcul (Sheet1), je dois utiliser la ligne Sheet1.Delete.

Pendant que je tape le code, dès que je tape le point, il me montrera toutes les méthodes et propriétés associées à l'objet Worksheet (comme indiqué ci-dessous).

La fonction de liste automatique est excellente car elle vous permet de :

  • Sélectionnez rapidement la propriété et la méthode dans la liste et gagnez du temps
  • Vous montre toutes les propriétés et méthodes que vous ne connaissez peut-être pas
  • Éviter de faire des fautes d'orthographe

Cette option est activée par défaut et je recommande de la conserver ainsi.

Options d'informations rapides automatiques

Lorsque vous tapez une fonction dans une feuille de calcul Excel, elle vous montre des informations sur la fonction, telles que les arguments qu'elle prend.

De même, lorsque vous tapez une fonction dans VBA, il vous affiche des informations (comme indiqué ci-dessous). Mais pour que cela se produise, vous devez vous assurer que l'option Auto Quick Info est activée (ce qui est le cas par défaut).

Options de conseils de données automatiques

Lorsque vous parcourez votre code ligne par ligne et placez votre curseur au-dessus d'un nom de variable, il vous montrera la valeur de la variable.

Je le trouve très utile pour déboguer le code ou parcourir le code ligne par ligne qui contient des boucles.

Dans l'exemple ci-dessus, dès que je place le curseur sur la variable (var), il affiche la valeur qu'il contient.

Cette option est activée par défaut et je vous recommande de la conserver ainsi.

Retrait automatique

Étant donné que les codes VBA peuvent devenir longs et désordonnés, l'utilisation de l'indentation augmente la lisibilité du code.

Lors de l'écriture du code, vous pouvez indenter à l'aide de la touche de tabulation.

Cette option garantit que lorsque vous avez terminé avec la ligne en retrait et appuyez sur Entrée, la ligne suivante ne commence pas depuis le tout début, mais a le même retrait que la ligne précédente.

Dans l'exemple ci-dessus, après avoir écrit la ligne Debug.Print et appuyé sur Entrée, elle commencera juste en dessous (avec le même niveau d'indentation).

Je trouve cette option utile et la désactiver signifierait indenter manuellement chaque ligne d'un bloc de code que je veux indenter.

Vous pouvez modifier la valeur d'indentation si vous le souhaitez. Je le garde à la valeur par défaut.

Édition de texte par glisser-déposer

Lorsque cette option est activée, elle vous permet de sélectionner un bloc de code et de le glisser-déposer.

Cela vous fait gagner du temps car vous n'avez pas besoin de le couper puis de le coller. Vous pouvez simplement le sélectionner et le faire glisser.

Cette option est activée par défaut et je vous recommande de la conserver ainsi.

Affichage par défaut du module complet

Lorsque cette option est activée, vous pourrez voir toutes les procédures d'un module dans une seule liste déroulante.

Si vous désactivez cette option, vous ne pourrez voir qu'un module à la fois. Vous devrez faire une sélection du module que vous souhaitez voir dans la liste déroulante en haut à droite de la fenêtre de code.

Cette option est activée par défaut et je recommande de la garder ainsi.

L'une des raisons pour lesquelles vous souhaiterez peut-être le désactiver lorsque vous avez plusieurs procédures énormes et que les faire défiler prend du temps, ou lorsque vous avez beaucoup de procédures et que vous souhaitez les trouver rapidement au lieu de perdre du temps à faire défiler.

Séparateur de procédure

Lorsque cette option est activée, vous verrez une ligne (une sorte de séparateur) entre deux procédures.

Je trouve cela utile car cela montre visuellement quand une procédure se termine et l'autre commence.

Il est activé par défaut et je recommande de le garder ainsi.

Onglet Format de l'éditeur

Avec les options de l'onglet Format de l'éditeur, vous pouvez personnaliser l'apparence de votre code dans la fenêtre de code.

Personnellement, je garde toutes les options par défaut car cela me convient. Si vous le souhaitez, vous pouvez le modifier en fonction de vos préférences.

Pour apporter une modification, vous devez d'abord sélectionner une option dans la zone Couleurs du code. Une fois qu'une option est sélectionnée, vous pouvez en modifier la couleur de premier plan, d'arrière-plan et d'indicateur.

Le type et la taille de la police peuvent également être définis dans cet onglet. Il est recommandé d'utiliser une police à largeur fixe telle que Courier New, car elle rend le code plus lisible.

Notez que le paramètre de type et de taille de police restera le même pour tous les types de code (c'est-à-dire tous les types de code affichés dans la zone de couleur du code).

Ci-dessous se trouve une image où j'ai sélectionné le point d'arrêt, et je peux en changer la mise en forme.

Remarque : L'option Marge Indicator Bar, lorsqu'elle est activée, affiche une petite barre de marge à gauche du code. C'est utile car il montre des indicateurs utiles lors de l'exécution du code. Dans l'exemple ci-dessus, lorsque vous définissez un point d'arrêt, il affichera automatiquement un point rouge à gauche de la ligne dans la barre de marge. Alternativement, pour définir un point d'arrêt, vous pouvez simplement cliquer sur la barre de marge à gauche de la ligne de code que vous souhaitez utiliser comme point d'arrêt.

Par défaut, la barre d'indicateur de marge est activée et je recommande de la conserver ainsi.

L'une de mes étudiantes du cours VBA a trouvé ces options de personnalisation utiles et elle était daltonienne. En utilisant les options ici, elle a pu définir la couleur et les formats qui lui ont permis de travailler facilement avec VBA.

Onglet Général

L'onglet Général propose de nombreuses options, mais vous n'avez pas besoin de les modifier.

Je vous recommande de garder toutes les options telles quelles.

Une option importante à connaître dans cet onglet est la gestion des erreurs.

Par défaut, « Break on Unhandled Errors » est sélectionné et je vous recommande de le garder ainsi.

Cette option signifie que si votre code rencontre une erreur et que vous n'avez pas encore géré cette erreur dans votre code, il s'arrêtera et s'arrêtera. Mais si vous avez corrigé l'erreur (par exemple en utilisant les options On Error Resume Next ou On Error Goto), elle ne se brisera pas (car les erreurs ne sont pas non gérées).

Onglet d'accueil

Dans cet onglet, vous pouvez spécifier les fenêtres que vous souhaitez ancrer.

L'ancrage signifie que vous pouvez fixer la position d'une fenêtre (comme l'explorateur de projet ou la fenêtre Propriétés) afin qu'elle ne flotte pas et que vous puissiez afficher toutes les différentes fenêtres en même temps.

Si vous ne vous connectez pas, vous pourrez afficher une fenêtre à la fois en mode plein écran et devrez passer à l'autre.

Je recommande de conserver les paramètres par défaut.

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

wave wave wave wave wave