formateur informatique

Extraire une ligne sur deux avec une seule formule Excel

Accueil  >  Bureautique  >  Excel  >  Excel Astuces  >  Extraire une ligne sur deux avec une seule formule Excel
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Extraire une ligne sur deux

Grâce à une nouvelle formule matricielle audacieuse, nous allons voir comment il est possible de réaliser des extractions alternées de données à partir d'un tableau source.

Extractions alternées 1 ligne sur 2 par formule Excel

Sur l'exemple illustré par la capture, un premier tableau présente les résultats enregistrés pour chaque semaine des douze mois de l'année. Dans un second tableau sur la droite, c'est l'extraction alternée de ces scores qui est réalisée. En effet, la restitution débute à partir du mois de Février. Elle se poursuit sur le mois d'Avril et ainsi de suite.

Classeur Excel à télécharger
Pour la mise en place de la solution, nous suggérons d'appuyer les travaux sur un classeur Excel offrant ce tableau des résultats à extraire. Nous retrouvons bien le tableau des résultats avec sur sa droite, le tableau devant accueillir les extractions alternées. Le tableau d'extraction est nommé tab. Vous pouvez le constater en déployant la zone Nom en haut à gauche de la feuille Excel. Cet intitulé représente toutes les cellules de la source.

Tableau Excel pour réaliser des extractions alternées

Nous exploiterons ce nom dans l'élaboration de la formule matricielle pour alléger sa syntaxe.

Débuter l'extraction alternée
Nous allons engager un raisonnement matriciel consistant à passer en revue tour à tour chaque ligne et chaque colonne du tableau d'origine. Comme dans le volet précédent, nous allons exploiter la fonction Index pour initialiser l'extraction alternée des données.
  • Sélectionner toutes les cellules du tableau de destination, soit la plage H5:L11,
  • Taper le symbole égal (=) pour initier la syntaxe de la formule matricielle,
  • Inscrire la fonction d'extraction suivie d'une parenthèse, soit : Index(,
  • Désigner le tableau d'extraction par son nom, soit : tab,
  • Puis, taper un point-virgule (;) pour passer dans l'argument de l'indice de ligne,
Analyser chaque ligne du tableau
Comme nous l'avons fait dans le volet précédent pour réunir les colonnes séparées, en guise d'indice de ligne, nous allons désigner toutes les lignes du tableau grâce à une matrice virtuelle de chiffres. Cette matrice devra être interprétée par une fonction Excel dédiée. En effet et vous le savez, les calculs matriciels engagent des raisonnements récursifs capables d'analyser les éléments tour à tour. Et c'est que nous allons entreprendre ici.
  • Inscrire la fonction donnant l'indice de ligne suivie d'une parenthèse, soit : Ligne(,
Nous l'avons dit. Ce n'est pas une seule ligne qui nous intéresse, mais toutes. C'est ici donc que débute la construction de la matrice virtuelle à interpréter.
  • Inscrire la fonction d'interprétation suivie d'une parenthèse, soit : Indirect(,
  • Entre guillemets, taper le chiffre 1 suivi du symbole deux points, soit : "1:",
Nous annonçons ainsi la borne supérieure de la matrice. Elle désigne la première ligne du tableau d'extraction. Le symbole deux points annonce quant à lui la borne inférieure à suivre. Nous devons la calculer en fonction de la hauteur du tableau. Donc, nous devons concaténer cette information. Et pour la trouver, nous allons exploiter l'homologue de la fonction Ligne au pluriel, soit la fonction Lignes.
  • Ajouter un espace suivi du symbole de concaténation (&) suivi d'un nouvel espace,
  • Inscrire la fonction comptant les lignes d'un tableau, suivie d'une parenthèse, soit : Lignes(,
  • Désigner le tableau d'extraction par son nom, soit : tab,
  • Fermer la parenthèse de la fonction Lignes,
  • Fermer la parenthèse de la fonction Indirect,
  • Puis, fermer la parenthèse de la fonction Ligne,
Nous sommes ainsi de retour dans l'argument de l'indice de ligne de la fonction Index.

Considérer une ligne sur deux
Nous venons de désigner toutes les lignes à analyser certes. Mais rappelons-le, nous souhaitons réaliser une extraction alternée. Sur cette hauteur totale, nous ne devons donc considérer qu'une ligne sur deux.
  • Multiplier le précédent résultat par 2, soit : *2,
  • Puis, retrancher une unité à ce score, soit : -1,
En effet et rappelons-le, ce raisonnement matriciel va considérer les indices de lignes de la matrice tour à tour. Pour le premier, le résultat va conduire à la ligne 1*2-1, soit toujours à la première ligne. Pour le deuxième, le résultat va conduire à la ligne 2*2-1, soit à la ligne 3, pour le troisième à 3*2-1, soit à la ligne 5 et ainsi de suite. Cette petite astuce indique donc bien à la formule d'extraction de focaliser son attention une ligne sur deux en partant de la première.
  • Taper un point-virgule (;) pour passer dans l'indice de colonne de la fonction Index,


Désigner toutes les colonnes pour l'extraction
Là encore, il n'est pas question de désigner seulement l'une des colonnes du tableau d'extraction. Comme précédemment avant le calcul pour l'alternance, elles doivent toutes être considérées. Et pour cela, la technique est la même. Il suffit simplement de remplacer les fonctions Ligne et Lignes, respectivement par les fonctions Colonne et Colonnes.
  • Construire la matrice virtuelle suivante : Colonne(Indirect("1:" & Colonnes(tab))),
  • Fermer la parenthèse de la fonction Index,
  • Puis, valider la formule matricielle par le raccourci clavier CTRL + MAJ + Entrée,
Rappelons-le, ce raccourci clavier est nécessaire jusqu'à la version 2016 incluse pour qu'Excel comprenne qu'il s'agit d'un raisonnement matriciel.

Et comme vous pouvez l'apprécier, ce sont bien tous les résultats alternés un mois sur deux qui sont extraits dans le tableau final.

Extractions alternées une ligne sur deux par formule Excel

La syntaxe complète de la formule matricielle que nous avons construite est la suivante :

=INDEX(tab;LIGNE(INDIRECT("1:" & LIGNES(tab)))*2-1; COLONNE(INDIRECT("1:" & COLONNES(tab))))

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn