Médiaforma

posts

Lorsque vous utilisez Excel, vous sélectionnez fréquemment des cellules et des plages de cellules. Eh bien, VBA est en mesure d’effectuer les mêmes sélections.

Sélection d’une cellule

Deux fonctions peuvent être utilisées : Cells() et Range(). Leur syntaxe est très différente. A vous de décider quelle est celle qui vous convient le mieux.

Par exemple, cette instruction sélectionne la cellule à l’intersection de la ligne 4 et de la colonne 1 :

Cells(4,1).Select

Ou encore, cette instruction sélectionne la cellule A4, qui se trouve à l’intersection de la ligne 4 et de la colonne 1 :

Range("A4").Select

Sélection d’une plage de cellules

La fonction Range peut également être utilisée pour sélectionner une plage de cellules. Par exemple, cette instruction sélectionne les cellules A4 à G12 :

Range("A4:G12").Select

Sélection de plusieurs plages de cellules

La fonction Range() permet également de sélectionner plusieurs plages de cellules. Par exemple, pour sélectionner les cellules A4 à B5 et les cellules B9 à D11, vous utiliserez cette instruction :

Range("A4:B5,B9:D11").Select

Sélection d’une plage de cellules nommées

Lorsqu’une plage de cellules est nommée, vous pouvez la sélectionner en précisant son nom dans la fonction Range(). Supposons que la plage de cellules A8:E8 ait pour nom resultats. Pour la sélectionner en VBA, vous utiliserez cette instruction :

Range("resultats").Select

Pour que cette instruction fonctionne, la plage resultats doit avoir été définie, sans quoi, une erreur se produira à l’exécution :

Le nom de la plage n’est pas sensible à la casse des caractères. Les instructions suivantes sont dont tout aussi valables pour sélectionner la plage A8:E8 :

Range("Resultats").Select

Range("RESULTATS").Select

Sélection de lignes et de colonnes

Les fonctions Rows() et Colums() permettent de sélectionner une ou plusieurs lignes et colonnes. Par exemple, pour sélectionner la colonne C, vous écrirez :

Columns("C").Select

Pour sélectionner les colonnes C à G, vous écrirez :

Columns("C:G").Select

D’une façon similaire, pour sélectionner la ligne 3, vous écrirez :

Rows("3").Select

Ou encore, pour sélectionner les lignes 3 à 7, vous écrirez :

Rows("3:7").Select

Sélection de lignes et de colonnes disjointes

Supposons que vous vouliez sélectionner les lignes 4, 9 et 10. Vous pouvez tenter quelque chose comme ceci :

Rows("4,9,10").Select

Pas de chance, cette instruction produit une erreur à l’exécution :

Vous utiliserez plutôt la fonction Range() :

Range("4:4,9:10").Select

De même, supposons que vous vouliez sélectionner les colonnes B, D et F à H, vous utiliserez cette instruction :

Range("B:B,D:D,F:H").Select

Sélection de toute la feuille de calcul

Pour sélectionner toutes les cellules de la feuille de calcul, vous utiliserez cette instruction :

Cells.Select

L’ordre des diapositives n’est pas figé. Pour déplacer une diapositive, il vous suffit de la glisser déposer à son nouvel emplacement dans le volet Diapos. Si ce volet n’est pas affiché, lancez la commande Volet Diapo dans le menu Affichage pour le faire apparaître.

Plusieurs techniques permettent de dupliquer une diapositive. Vous pouvez :

  • Cliquer sur une diapositive dans le volet Diapos, puis lancer la commande Dupliquer la diapo dans le menu Diapo.
  • Cliquer du bouton droit sur la diapositive à dupliquer dans le volet Diapos et choisir Dupliquer la diapo dans le menu contextuel.
  • Cliquer sur la diapositive à dupliquer dans le volet Diapos, appuyer sur Contrôle + C pour la copier dans le presse-papiers, puis appuyer sur Contrôle + V pour dupliquer la diapositive.

Pour supprimer une diapositive, quatre techniques sont utilisables. Vous pouvez :

  • Lancer la commande Supprimer la diapo dans le menu Diapo.
  • Cliquer sur l’icône Supprimer la diapo dans la barre d’outils Présentation.
  • Cliquer sur sa vignette dans le volet Diapos, puis appuyer sur la touche Suppr du clavier.
  • Cliquer du bouton droit sur la diapositive et choisir Supprimer la diapo dans le menu contextuel.

Pour renommer une diapositive, deux techniques sont utilisables. Vous pouvez :

  • Lancer la commande Renommer la diapo dans le menu Diapo.
  • Cliquer du bouton droit sur la diapositive à renommer dans le volet Diapos et choisir la commande Renommer la diapo dans le menu contextuel.

Si vous utilisez Windows 10 sur un ordinateur tactile dont le clavier est extractible (un Surface Pro 6 par exemple), la fonctionnalité Continuum de Windows détecte automatiquement la présence d’un clavier et d’une souris. A chaque changement, l’affichage bascule en conséquence sur le mode classique ou sur le mode tablette. Les applications de la suite Office 2019 adaptent alors leur interface pour améliorer l’expérience des utilisateurs. En mode tablette, les icônes du ruban et de la barre de navigation ont une taille plus importante qu’en mode classique, afin de faciliter leur manipulation.

Si vous le souhaitez, vous pouvez forcer le mode d’affichage classique ou tactile d’Outlook. Le plus simple consiste à utiliser la barre d’outils Accès rapide. Cliquez sur l’icône Personnaliser la barre d’outils Accès rapide, puis sélectionnez Mode tactile/souris dans le menu :

L’icône Mode tactile/souris est ajoutée à la barre d’outils Accès rapide. Pour choisir un mode d’affichage, cliquez dessus et choisissez une entrée dans la liste :

Il est parfois nécessaire de construire une sous-liste à partir d’une liste existante. Pour illustrer ce principe, nous allons raisonner sur un exemple. Ici, la liste de droite va être complétée en parcourant les données de la liste de gauche :

Pour remplir les cellules de la deuxième liste, vous utiliserez la fonction RECHERCHEV() :

RECHERCHEV(valeur recherchée; zone de recherche; numéro de colonne à insérer)

Où :

  • valeur recherchée représente la cellule recherchée (ici une cellule de la colonne I).
  • zone de recherche représente la plage dans laquelle la valeur sera recherchée.
  • numéro de colonne à insérer représente le numéro de la colonne dans la zone de recherche de la valeur à retourner.

Voici la formule utilisée pour calculer la cellule J4 :

=RECHERCHEV(I4;E4:G12;3)

Le contenu de la cellule I4 est recherché dans la plage E4:G12, et lorsque cette valeur est trouvée, la troisième colonne de cette plage est retournée.

Il ne reste plus qu’à dupliquer cette formule sur les cellules J5 et J6 en utilisant le carré de recopie pour obtenir le résultat recherché :

Deux remarques pour terminer :

Si vous modifiez les valeurs de la plage de recherche, les cellules calculées par la fonction RECHERCHEV() sont automatiquement mises à jour.

Si les données de la plage de recherche sont disposées horizontalement et non verticalement, vous utiliserez la fonction RECHERCHEH() à la place de la fonction RECHERCHEV().

La barre d’outils Accès rapide contient des commandes qui sont indépendantes de l’onglet sélectionné dans le ruban.

Elle peut être affichée dans le coin supérieur gauche de la fenêtre ou en-dessous du ruban. Pour modifier l’emplacement de la barre d’outils Accès rapide, cliquez sur Personnaliser la barre d’outils Accès rapide, puis sélectionnez Afficher en dessous du ruban ou Afficher au-dessus du ruban dans le menu.

Par défaut, la barre d’outils Accès rapide contient deux icônes: Envoyer / recevoir tous les dossiers et Annuler. Ces icônes sont respectivement équivalentes aux raccourcis clavier F9 et Contrôle + Z.

Il est facile d’ajouter de nouvelles icônes de la barre d’outils Accès rapide : cliquez sur l’icône Personnaliser la barre d’outils Accès rapide, puis sélectionnez l’une des commandes affichées dans le menu.

Si la commande que vous souhaitez insérer n’est pas disponible dans le menu, cliquez sur Autres commandes.

Choisissez une catégorie dans la liste déroulante (1), une commande dans la première zone de liste (2), cliquez sur Ajouter (3), puis sur OK (4). L’icône correspondante est immédiatement ajoutée à la barre d’outils Accès rapide.

Vous pouvez agir sur l’apparence d’une plage de cellules en modifiant les propriétés de l’objet format.font : police, couleur, attributs. Pour en savoir plus sur les propriétés utilisables, consultez la page https://bit.ly/2MvXSQz.

Ce code est disponible en cliquant ici

A titre d’exemple, nous allons affecter la police Arial corps 16 gras italique rouge à ligne 1 de la feuille de calcul courante. Voici le code utilisé :

async function ligne1() {

  await Excel.run(async (context) => {

    const feuille1 = context.workbook.worksheets.getActiveWorksheet();

    feuille1.getRange("1:1").format.font.name = "Arial";

    feuille1.getRange("1:1").format.font.size = 16;

    feuille1.getRange("1:1").format.font.italic = true;

    feuille1.getRange("1:1").format.font.bold = true;

    feuille1.getRange("1:1").format.font.color = "red";

    feuille1.getRange("1:1").format.font.color = "#ff0000";

  });

}

Ce code est très simple. Après avoir récupéré la feuille en cours :

const feuille1 = context.workbook.worksheets.getActiveWorksheet();

Plusieurs propriétés de la ligne 1 (getRange(« 1 :1 »)) sont modifiées. Par exemple, la police :

feuille1.getRange("1:1").format.font.name = "Arial";

Supposons qu’un classeur liste un certain nombre de tâches à faire. Une des colonnes (dans cet exemple, ce sera la colonne D) contient la date d’échéance de chaque tâche. Le but du jeu est de colorer les cellules de la colonne D dont la date du jour est proche de la date d’échéance.

A titre d’exemple :

  • La cellule sera colorée en orange si la différence entre la date du jour et la date d’échéance est inférieure ou égale à 5 jours ouvrés.
  • La cellule sera colorée en rouge si la date du jour est la même que la date d’échéance.

La capture d’écran ci-après a été réalisée le 15/08/2018 :

La cellule D1 n’est pas colorée car la date d’échéance est supérieure à 5 jours ouvrés. La cellule D2 est colorée en orange car la date d’échéance est inférieure à 5 jours ouvrés. Enfin, la cellule D3 est colorée en rouge car la date d’échéance est la date du jour.

Pour arriver à ce résultat, commencez par sélectionner la colonne D. Basculez sur l’onglet Accueil du ruban. Dans le groupe Styles, cliquez sur l’icône Mise en forme conditionnelle puis cliquez sur Nouvelle règle. La boîte de dialogue Nouvelle règle de mise en forme s’affiche. Dans la zone Sélectionnez un type de règle, cliquez sur Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué.

Nous allons commencer par la formule qui colore la cellule en rouge, car c’est la plus simple. Dans la zone de texte Appliquer une mise en forme aux valeurs pour lesquelles cette formule est vraie, tapez :

=$D1=AUJOURDHUI()

La mise en forme sera appliquée si la cellule $D1 contient la date du jour. Remarquez le signe $ devant la lettre D. L’adressage de la colonne est donc absolu. Pour chaque ligne analysée, la colonne D sera invariablement testée. Etant donné que le numéro de ligne n’est pas précédé du signe $, il s’agit d’un adressage relatif, il s’adaptera donc à chaque ligne analysée.

Cliquez sur l’icône Format. La boîte de dialogue Format de cellule s’affiche. Sous l’onglet Remplissage, sélectionnez la couleur rouge et validez en cliquant sur OK. La boîte de dialogue Format de cellule doit maintenant ressembler à ceci :

Validez en cliquant sur OK.

Vous allez maintenant définir la règle qui colore les cellules de la colonne D en orange si la différence entre la date du jour et la date de la cellule est inférieure ou égale à 5 jours ouvrés.

Assurez-vous que la colonne D est toujours sélectionnée. Sous l’onglet Accueil du ruban, cliquez sur l’icône Mise en forme conditionnelle puis cliquez sur Nouvelle règle. La boîte de dialogue Nouvelle règle de mise en forme s’affiche. Dans la zone Sélectionnez un type de règle, cliquez sur Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué.

Dans la zone de texte Appliquer une mise en forme aux valeurs pour lesquelles cette formule est vraie, tapez :

=ET(NB.JOURS.OUVRES(AUJOURDHUI();D1)<=5;$D1<>AUJOURDHUI();$D1<>"")

Cette formule appliquera la mise en forme si les trois conditions définies dans la fonction ET() sont vérifiées.

La première condition teste si le nombre de jours ouvrés compris entre la date du jour et la date de la cellule $D1 est inférieur à 5 :

NB.JOURS.OUVRES(AUJOURDHUI();D1)<=5

La deuxième condition teste si la date de la cellule $D1 n’est pas égale à la date du jour. Ceci afin d’éviter d’écraser la règle qui colore les cellules en rouge :

$D1<>AUJOURDHUI()

Enfin, la troisième condition vérifie que la cellule $D1 est renseignée. Ceci pour éviter de colorer les cellules non renseignées :

$D1<>""

Cliquez sur l’icône Format. La boîte de dialogue Format de cellule s’affiche. Sous l’onglet Remplissage, sélectionnez la couleur orange et validez en cliquant sur OK. La boîte de dialogue Format de cellule doit maintenant ressembler à ceci :

Validez en cliquant sur OK. La mise en forme conditionnelle est entièrement opérationnelle.