Médiaforma

posts

Avec Calc, vous pouvez facilement comparer deux versions d’un même classeur ou deux classeurs dont le contenu est proche. Voici comment procéder :

Ouvrez la première version du classeur.

Lancez la commande Comparer le document dans le menu Edition. La boîte de dialogue Comparer à s’affiche. Désignez la deuxième version du classeur.

Quelques instants plus tard, les différences entre le premier et le deuxième classeur apparaissent dans le premier classeur sous la forme de marques de révision et la boîte de dialogue Gérer les modifications s’affiche. Utilisez cette boîte de dialogue pour modifier ou non la première feuille en fonction de la seconde :

Voyons maintenant comment afficher les nombres négatifs en rouge. Voici le code utilisé :

async function negatifEnRouge() {

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

    const plage = context.workbook.worksheets.getActiveWorksheet().getRange("B2:C5");

    const condFormat = plage.conditionalFormats.add(Excel.ConditionalFormatType.cellValue);

    condFormat.cellValue.rule = { formula1: "=0", operator: "LessThan" };

    condFormat.cellValue.format.font.color = "red";

  });

}

Après avoir récupéré la plage sur laquelle on désire appliquer la mise en forme conditionnelle :

const plage = context.workbook.worksheets.getActiveWorksheet().getRange("B2:C5");

On ajoute une mise en forme conditionnelle en fonction de la valeur des cellules (cellValue) sur la plage :

const condFormat = plage.conditionalFormats.add(Excel.ConditionalFormatType.cellValue);

Puis on définit la règle de mise en forme dans la propriété rule :

condFormat.cellValue.rule = { formula1: "=0", operator: "LessThan" };

Cette propriété est un objet JSON composé de deux ou trois couples clé/valeur :

{

  formula1: 'form1',

  formula2: 'form2',

  operator: 'op'

}

Les formules sont du type =0, >=15, <0, etc..

L’opérateur est un des suivants : Invalid, Between, NotBetween, EqualTo, NotEqualTo, GreaterThan, LessThan, GreaterThanOrEqual ou LessThanOrEqual.

Dans cet exemple, on comprend que la mise en forme conditionnelle concerne les cellules dont la valeur est inférieure à zéro :

{ formula1: "=0", operator: "LessThan" }

La dernière instruction définit la couleur à affecter aux cellules lorsque la condition est vérifiée :

condFormat.cellValue.format.font.color = "red";

Voici le résultat :

Si vous utilisez un compte de courrier Office 365, Microsoft Exchange ou Outlook, la boîte de réception contient deux onglets : Prioritaire et Autres :

Ce mode d’organisation des messages peut être facilement activé ou désactivé. Basculez sur l’onglet Affichage du ruban et utilisez l’icône Afficher la boîte de réception Prioritaire du groupe Boîte de réception prioritaire pour choisir les onglets à afficher dans la boîte de réception : Prioritaire et Autres ou Tous et Non lus.

L’onglet Prioritaire rassemble les courriers qui sont le plus importants à vos yeux, tandis que le reste du courrier électronique (les newsletter et les messages publicitaires par exemple) reste facilement accessible dans l’onglet Autres. Lorsqu’un courrier arrive dans la boîte de réception Autres, vous êtes prévenu dans la partie supérieure de l’onglet Prioritaire. Bien entendu, vous pouvez à tout moment accéder au courrier non prioritaire en basculant sur l’onglet Autres :

Si vous pensez qu’un message affiché dans l’onglet Autres doit s’afficher dans l’onglet Prioritaire, cliquez dessus avec le bouton droit de la souris et choisissez Déplacer vers Prioritaire dans le menu contextuel. Inversement, si vous pensez qu’un message affiché dans l’onglet Prioritaire doit s’afficher dans l’onglet Autres, cliquez dessus avec le bouton droit de la souris et choisissez Déplacer vers Autres dans le menu contextuel.

En programmation, il est souvent nécessaire d’exécuter une portion de code plusieurs fois de suite. La répétition des instructions peut se produire un certain nombre de fois connu à l’avance ou tant qu’une condition est vérifiée. Cet article passe en revue les principales instructions de bouclage du langage VBA.

La boucle For … Next

Lorsque le nombre de répétitions est connu à l’avance, le plus simple est d’utiliser une boucle For … Next. Voici sa syntaxe :

For compteur = début To Fin Step pas

  ' Une ou plusieurs instructions

Next compteur

Compteur est une variable qui commence à début et finit à fin en progressant de pas à chaque itération de la boucle.

Remarque

Si la partie Step pas n’est pas précisée, la variable compteur va de début à fin par pas de 1.

Quelques exemples pour mieux comprendre.

Supposons que vous vouliez remplir les cellules A1 à H1 avec les valeurs 1 à 8. Voici le code à utiliser :

Dim i As Integer

For i = 1 to 8

  Cells(1, i) = i

Next i

Ici, nous utilisons la méthode Cells() en précisant le numéro de ligne et le numéro de colonne. Voici le résultat :

Supposons maintenant que vous vouliez remplir les cellules C3 à C12 avec les valeurs “a” à “j“. Voici le code à utiliser :

Dim i As Integer

For i = 3 To 12

  Cells(i, 3) = Chr(97 + i - 3)

Next i

Ici, nous utilisons la méthode Cells() en précisant le numéro de ligne (i, qui va de 3 à 12) et le numéro de colonne (fixe et égal à 3). La méthode Chr() convertit le code ASCII passé en argument en un caractère. Pour arriver au résultat souhaité, le code ASCII de la lettre “a” a été cherché dans un tableau de codes ASCII. Par exemple sur la page http://www.table-ascii.com/ :

Etant donné que i varie de 3 à 12, la formule à utiliser est 97 + i – 3. L’argument de la fonction Chr() va donc de 97 (pour i = 3) à 106 (pour i = 12).

Voici le résultat :

Supposons maintenant que vous vouliez remplir le bloc de cellules A3-C9 comme ceci :

Comment feriez-vous ?

Observez la progression numérique dans les cellules. Les valeurs vont de 1 à 21, et on change de ligne toutes les trois cellules.

Pour faire simple, nous allons imbriquer deux boucles : une pour les lignes et une pour les colonnes. Voici le code :

Dim i, j As Integer

For i = 0 To 6

  For j = 1 To 3

    Cells(i + 3, j) = j + i * 3

  Next j

Next i

La boucle la plus extérieure s’intéresse aux lignes et la boucle la plus intérieure aux colonnes. Les index des boucles ont été choisis pour simplifier au maximum la formule.

Lors de la première exécution de la boucle extérieure, i vaut 0 et j va de 1 à 3. La formule :

Cells(i + 3, j) = j + i * 3

Cible donc les cellules A3, B3 puis C3. Et la valeur affectée à ces cellules est 1, 2 et 3. Si vous ne voyez pas ce que je veux dire, simulez le fonctionnement de la boucle interne en remplaçant j par 1, 2 puis 3 et voyez le résultat. Vous obtenez :

  • Pour i=0 et j=1 : Cells(3,1) = 1, soit A3 = 1
  • Pour i=0 et j=2 : Cells(3,2) = 2, soit B3 = 2
  • Pour i=0 et j=3 : Cells(3,3) = 3, soit C3 = 3

Lorsque la boucle interne a fini de s’exécuter, la boucle externe incrémente la valeur de i, qui passe de 0 à 1. La formule :

Cells(i + 3, j) = j + i * 3

Cible alors les cellules A4, B4 et C4 et leur affecte (respectivement) les valeurs 4, 5 et 6.

La progression de i et de j se poursuit jusqu’à ce que ces index dépassent les valeurs maximales fixées à 6 et 3. Les deux boucles prennent alors fin et la plage A3-C9 est entièrement remplie.

Un dernier exemple pour illustrer l’utilisation d’un pas de progression. Supposons que vous vouliez obtenir le résultat suivant :

Plusieurs approches sont possibles, mais une des plus simples consiste certainement à utiliser un pas de progression négatif dans la boucle :

Dim i As Integer

For i = 12 To 2 Step -2

  Cells(1, i / 2) = i

Next i

Ici, la variable i passe de 12 à 2 par pas de -2. Elle vaut donc successivement 12, 10, 8, 6, 4, puis 2.

La formule :

Cells(1, i / 2) = i

Cible les cellules situées en ligne 1 et en colonne 6 (12/2), 5 (10/2), 4 (8/2), 3 (6/2), 2 (4/2) puis 1 (2/2). La valeur de i est affectée à ces cellules, ce qui donne bien le résultat attendu.

Dans certaines boucles, on ne sait pas à l’avance combien de fois les instructions seront exécutées. Dans ce cas, la boucle For … Next n’est pas appropriée. Vous utiliserez plutôt une boucle While … Wend, Do While … Loop, Do … Loop While ou Do Until … Loop.

La boucle While … Wend

La boucle While … Wend est exécutée tant qu’une condition est vérifiée. Voici sa syntaxe :

While condition

  ' Une ou plusieurs instructions

Wend

Par exemple, pour remplir les cellules A1 à H1 avec les chiffres 1 à 8 avec une boucle While … Wend, comme dans la copie d’écran suivante :

Vous pourriez utiliser ces instructions :

Dim i As Integer

i = 1

While i < 9

  Cells(1, i) = i

  i = i + 1

Wend

Ces instructions peuvent sembler plus complexes que celles utilisées dans la boucle For … Next équivalente. Examinons-les pas à pas.

  • La variable i est déclarée en tant qu’Integer et initialisée à 1.
  • La boucle se poursuit tant que i est inférieur à 9.
  • Les cellules de la ligne 1 et de la colonne 1 à 8 sont alors ciblées avec la méthode Cells() et on leur affecte la valeur de la variable i, c’est-à-dire 1 à 8.
  • La variable i est incrémentée d’un à chaque passage dans la boucle avec l’instruction i = i + 1.

Vous voyez, il n’y a rien de bien compliqué.

La boucle Do While … Loop

Nous allons maintenant utiliser une boucle Do While … Loop pour obtenir le même résultat que dans la boucle While … Wend précédente. Voici le code utilisé :

Dim i As Integer

i = 1

Do While i < 9

  Cells(1, i) = i

  i = i + 1

Loop

Le code est strictement équivalent. Il n’y a que l’écriture qui change.

La boucle Do … Loop While

Voyons maintenant comment utiliser une boucle Do … Loop While pour obtenir le même résultat. Voici le code utilisé :

Dim i As Integer

i = 1

Do

  Cells(1, i) = i

  i = i + 1

Loop While i < 9

Ici, la condition de fin de boucle est testée en fin de boucle. Quelle que soit la valeur de i, la boucle s’exécute donc au moins une fois. Mis à part cette légère différence, le code est très semblable à celui utilisé dans les boucles précédentes.

La boucle Do Until … Loop

Voyons enfin comment utiliser une boucle Do Until … Loop pour arrive au même résultat. Voici le code utilisé :

Dim i As Integer

i = 1

Do Until i > 8

  Cells(1, i) = i

  i = i + 1

Loop

Ici, le test de fin de boucle est effectué en début de boucle. La boucle prend fin quand i est supérieur à 8 (et non tant que i est inférieur à 9 comme dans les autres boucles). Mis à part ce détail, le code est similaire à celui utilisé dans les autres boucles.

Maintenant que vous connaissez les différentes boucles utilisables en VBA, vous devrez trouver celle qui est la plus appropriée à chaque cas que vous devrez traiter…

Quitter une boucle prématurément

Cet article ne serait pas complet si nous ne parlions pas des sorties prématurées des boucles. Rien de bien sorcier rassurez-vous.

Supposons que lorsqu’une condition est vérifiée, vous vouliez terminer la boucle. Dans ce cas, vous utiliserez une des instructions suivantes :

Boucle Instruction pour sortir de la boucle
For … Next Exit For
While … Wend Exit While
Do While … Loop Exit Do
Do … Loop While Exit Do
Do Until … Loop Exit Do

 

Comme leur nom l’indique, les zones de texte contiennent des éléments textuels. Essentiellement des paragraphes, des listes à puces ou des listes numérotées.

Si vous choisissez une mise en page contenant un ou plusieurs emplacements textuels, il vous suffit de cliquer dessus et de taper le texte que vous souhaitez insérer. Ici par exemple, la diapositive comporte un titre et trois zones qui peuvent contenir du texte, un tableau, un graphique, une image ou une vidéo :

Si vous ajoutez du texte dans une zone prédéfinie qui contient une puce, chaque passage à la ligne (en appuyant sur la touche Entrée du clavier) provoque la création d’une nouvelle puce :

Si vous voulez supprimer les puces, sélectionnez le texte concerné, basculez sur l’onglet Propriétés de la barre latérale et cliquez sur l’icône (Dés)activer les puces :

Cliquez à nouveau sur cette icône pour restituer les puces.

D’une façon similaire, vous pouvez transformer la liste à puces ou un simple texte en une liste numérotée en cliquant sur l’icône (Dés)activer la numérotation.

Si vous choisissez une mise en page vide, vous devez insérer manuellement une ou plusieurs zones de texte. Pour cela, vous pouvez :

  • Lancer la commande Zone de texte dans le menu Insertion.
  • Appuyer sur la touche de fonction F2.
  • Cliquer sur l’icône Insérer une zone de texte dans la barre d’outils Standard.

Cliquez dans la diapositive et saisissez le texte désiré.

Si nécessaire, vous pouvez modifier les caractéristiques du texte qui se trouve dans une zone de texte. Pour cela, vous utiliserez l’onglet Propriétés de la barre latérale. Cet onglet s’affiche automatiquement lorsque le point d’insertion se trouve dans une zone de texte. Sélectionnez le texte dont vous voulez modifier les caractéristiques et utilisez la barre latérale pour obtenir l’effet désiré :

Vous utiliserez en particulier :

  • La liste déroulante Nom de police pour choisir la police du texte.
  • La liste déroulante Taille de police pour choisir la taille des caractères en points.
  • Les icônes sous ces deux listes déroulantes pour choisir les attributs, la couleur du texte, la couleur de l’arrière-plan, l’espacement entre les caractères et la mise en exposant ou en indice.
  • Les icônes sous Paragraphe pour définir l’alignement, l’espacement, le retrait, les puces et la numérotation du texte.

Toutes ces icônes devraient vous être familières si vous avez déjà utilisé un traitement de texte.

Les graphiques Sparkline permettent de visualiser sous une forme graphique l’évolution d’une plage de données. De taille réduite, ils sont affichés dans une cellule de la feuille de calcul.

Pour insérer un graphique Sparkline :

  1. Sélectionnez la plage de données source (ici, B3:B5).
  2. Basculez sur l’onglet Insertion dans le ruban.
  3. Choisissez un type de graphique dans le groupe Graphiques Sparkline.
  4. Indiquez la ou les cellules destination, puis cliquez sur OK.

Le graphique est immédiatement inséré dans la cellule. Ici, en B6.

Pour améliorer la visibilité d’un graphique Sparkline, vous pouvez augmenter la taille de la ligne. Cerise sur le gâteau, il est également possible d’étendre la sélection d’une cellule qui contient un graphique Sparkline afin de le répliquer en se basant sur les données des cellules voisines.

Ici par exemple, le graphique de la cellule B6 représente l’évolution des données des cellules B3 à B5. En étendant la cellule B6 aux cellules C6 et D6, c’est l’évolution de la plage B3:D5 qui est représentée.

Pour obtenir ce résultat, le pointeur a été placé sur le carré de recopie de la cellule B6 et la souris a été déplacée jusqu’à la cellule D6, bouton gauche enfoncé.

L’onglet Outils sparkline/Création du ruban permet de personnaliser (dans une moindre mesure) les graphiques Sparkline. Vous l’utiliserez, entre autres, pour choisir un autre style de graphique et pour repérer certains points particuliers sur le graphique.

Pour numéroter les pages d’un document, sélectionnez l’onglet Insertion dans le ruban, cliquez sur l’icône Numéro de page dans le groupe En-tête et pied de page et choisissez la position et le modèle des numéros de page.

Vous pouvez également insérer manuellement une numérotation de page dans un en-tête ou un pied de page. Double-cliquez sur l’en-tête/le pied de page concerné et utilisez le groupe En-tête et pied de page de l’onglet Outils En-têtes et pied de page/Création du ruban.