26
2014
Automatiser une saisie sur Libre Calc avec une table de correspondance
Passage en revue de deux fonctions bien pratiques pour automatiser la saisie d'informations sur Libre Calc, avec cas concret.
Hier, c'était le rush à partir de 23h pour bricoler le plus rapidement possible des cartes de Strasbourg par bureau de vote et du Bas-Rhin par commune.
J'avais déjà les tracés géographiques de toutes les zones, et le squelette des fichiers de résultats qui allaient être envoyés. La seule difficulté allait être de déterminer rapidement le vainqueur de chaque entité, pour lui rattacher ensuite une couleur hexadécimale.
Concrètement, si dans la commune X le parti Y est arrivé en tête, il faut que dans la colonne "couleur" corresponde à la teinte prévue pour lui.
Y a-t-il une fonction qui peut nous aider dans cette tâche ? Il y en a en fait deux : RECHERCHE() et RECHERCHEV().
Afficher le nom du vainqueur avec RECHERCHE()
Prenons le cas concret ci-dessous. J'ai séparé mes résultats en brut d'un côté et en pourcentage de l'autre, et décidé d'insérer entre les deux une colonne "Vainqueur" et une colonne "Code couleur" :
Pour afficher convenablement le nom du vainqueur, il faut bien décomposer les trois facteurs de la fonction RECHERCHE() :
- d'abord, le terme recherché. Cela peut être un nombre, chaîne de caractères, etc... Mais également une formule, ce qui nous intéresse franchement dans ce cas. Par exemple MAX(B2:I2) nous renverra le maximum de la ligne 2 entre les colonnes B et I. On l'applique donc sur les cellules correspondant aux résultats bruts des candidats. On pourrait aussi le faire pour des pourcentages, la logique est la même
- ensuite, la zone de recherche. Dans notre cas, on sélectionne la zone scrutée avant
- enfin, la zone de résultat. Là, il faut survoler les noms des candidats concernés sur la première ligne.
Dans notre cas,on écrirait donc dans la première cellule vide de la colonne "Vainqueur" :
=RECHERCHE(MAX(J2:AF2),J2:AF2,J1:AF1)
On peut alors vérifier que le nom renvoyé est bien celui de la ligne J1:AF1 correspondant au maximum de la ligne J2:AF2.
L'homme pressé ne manquera alors pas de saisir le coin inférieur droit de sa cellule remplir pour dupliquer la formule à la ligne suivante, sauf que s'il fait ça il se retrouvera avec un chiffre, et non un nom.
Ceci parce que Calc pensera que la colonne de référence des noms J1:AF1 est maintenant J2:AF2. Il faut donc lui expliquer que cette ligne ne bouge jamais, grâce au symbole $.
Notre formule finale sera donc :
=RECHERCHE(MAX(J2:AF2),J2:AF2,J$1:AF$1)
Elle renverra exactement le même résultat pour la première cellule, en revanche on n'aura plus un nombre mais bien un nom sur la deuxième :
Etonnant, non ?
Une table de correspondance avec RECHERCHEV()
Bien, la première étape est réglée. Nous allons maintenant tenter d'utiliser cette table de correspondance, placée juste en-dessous de nos données :
Première sécurité : transformer le résultat de la formule en vrai texte. Pour cela, le plus simple est de copier la colonne "Vainqueur" dans une nouvelle colonne, en faisant un clic droit et en sélectionnant "Collage spécial" :
De là, on va simplement décocher "Tout insérer", ne laisser que "Texte" coché, et cliquer sur OK :
On peut alors vérifier dans la nouvelle colonne qu'on a bien du texte et plus une formule, ce qui va nous permettre de supprimer l'autre :
On peut maintenant utiliser la formule RECHERCHEV(), dont la syntaxe est la suivante :
- d'abord, le terme recherché. Dans ce cas, il va correspondre au nom du vainqueur
- la matrice de référence. Dans notre cas, il va s'agir de la table de correspondance décrite avant
- troisièmement, l'indice de tri. Il correspond à la colonne de référence pour le résultat que l'on souhaite. Dans notre cas, on va choisir 2, puisque c'est dans la seconde colonne de la matrice que se trouvent les codes couleur
- enfin l'ordre de tri. On le paramètre à 0 pour bien stipuler qu'il faut que la valeur recherchée corresponde précisément à l'exact premier terme rencontré
Appliquée à notre cas, cette formule donne :
=RECHERCHEV(AG2,A$150:B$155,2,0)
On a placé des $ sur les bords de la matrice pour les mêmes raisons que les précédentes. Un cliqué-glissé après, voilà le résultat :
Emballé, c'est pesé !
Remerciements
Merci à Joël Matriche, véritable "excpert", qui m'a aiguillé vers ces formules bien pratiques !
Contact
Les auteurs
Commentaires récents
- Va te faire foutre Disqus ! dans
- Va te faire foutre Disqus ! dans
- Va te faire foutre Disqus ! dans
- La fin du tracking ... commence -aussi- sur le m0le-o-blog dans
- La fin du tracking ... commence -aussi- sur le m0le-o-blog dans
- La fin du tracking ... commence -aussi- sur le m0le-o-blog dans
- La fin du tracking ... commence -aussi- sur le m0le-o-blog dans
- La fin du tracking ... commence -aussi- sur le m0le-o-blog dans
- La fin du tracking ... commence -aussi- sur le m0le-o-blog dans
- La fin du tracking ... commence -aussi- sur le m0le-o-blog dans
- Backup avec Borg via ssh(fs) sur Synology dans
- Certificat wildcard avec letsencrypt dans
- Certificat wildcard avec letsencrypt dans
- Certificat wildcard avec letsencrypt dans
- Va te faire foutre Disqus ! dans
Étiquettes
Archives
- juin 2018 (1)
- avril 2018 (1)
- mars 2018 (1)
- décembre 2015 (1)
- avril 2015 (3)
- mars 2015 (2)
- février 2015 (3)
- janvier 2015 (1)
- décembre 2014 (5)
- novembre 2014 (4)
- octobre 2014 (4)
- septembre 2014 (5)
- août 2014 (4)
- juin 2014 (7)
- mai 2014 (14)
- avril 2014 (8)
- mars 2014 (10)
- février 2014 (9)
- janvier 2014 (3)
- décembre 2013 (2)
- novembre 2013 (5)
- octobre 2013 (6)
- septembre 2013 (8)
- août 2013 (6)
- juillet 2013 (6)
- juin 2013 (11)
- mai 2013 (7)
- avril 2013 (8)
- mars 2013 (10)
- février 2013 (9)
- janvier 2013 (9)
- décembre 2012 (7)
- novembre 2012 (16)
- octobre 2012 (11)
- septembre 2012 (9)
- août 2012 (19)
- juillet 2012 (19)
- juin 2012 (20)
- mai 2012 (24)
- avril 2012 (20)
- mars 2012 (23)
- février 2012 (27)
- janvier 2012 (28)
- décembre 2011 (28)
- novembre 2011 (28)
- octobre 2011 (1)