Numbers : remplissage en fonction d'une case

ludivinef

Membre enregistré
5 Juillet 2015
6
0
37
Bonjour,
je sais que les formules de Numbers occupent beaucoup de sujets, mais je ne trouve pas ce que je cherche.

J'ai un tableau avec chaque colonnes qui correspond à un mois. Je souhaiterais que, lorsque j'inscris "admission" dans une case, se remplisse automatiquement "VM" dans les cases M+1, M+6, M+12.
Par exemple, "admission" en janvier entraine "VM" en février, en juillet et en décembre.
Et que pour la ligne suivante, si je mets "admission" en mars, "VM" apparaisse automatiquement en avril, aout et février de l'année suivante.
Je vous joins un exemple de tableau que je souhaite obtenir, mais avec un remplissage automatique des "VM".

Avez vous une idée ?

Merci de votre aide précieuse !


Capture d’écran 2022-12-20 à 18.13.34.png
 
Je n'ai pas la formule toute faite mais je reformulerais ta demande ainsi :
Une cellule doit afficher "VM" si la cellule -1, -6 ou -12 mois contient "admission".​
Sinon, laisser vide.​
La fonction SIS semble une bonne candidate…

(Le problème, c'est que si tu écris quelque chose dans une cellule, ça remplace la formule et le tableau ne marche plus. Une fois créé, il faudra donc un peu de rigueur dans l'usage du tableau — un remplissage ordonné de gauche à droite. En général, je me mets un commentaire pour plus tard…)
 
  • J’aime
Réactions: Gerapp38
Bonjour,
Pour compléter la solution proposée par @baron et éviter l’inconvénient cité, je propose d’intercaler 4 colonnes de calcul qui pourraient être ensuite masquées, et de ne mettre que des fonction SIS dans la zone calendrier.
La colonne admission comporte l’entrée de date, les colonnes VM n comportent si(estvide(); "";Date((année ();mois ()+n; jour())
 

Fichiers joints

  • FA953501-F36C-4F4B-B6C2-215FF6EFD370.jpeg
    FA953501-F36C-4F4B-B6C2-215FF6EFD370.jpeg
    36,3 KB · Affichages: 29
Je n'ai pas la formule toute faite mais je reformulerais ta demande ainsi :
Une cellule doit afficher "VM" si la cellule -1, -6 ou -12 mois contient "admission".​
Sinon, laisser vide.​
La fonction SIS semble une bonne candidate…

(Le problème, c'est que si tu écris quelque chose dans une cellule, ça remplace la formule et le tableau ne marche plus. Une fois créé, il faudra donc un peu de rigueur dans l'usage du tableau — un remplissage ordonné de gauche à droite. En général, je me mets un commentaire pour plus tard…)
Bonjour,

Merci pour votre reformulation.
Je vais tenter avec la formule SIS.
Le problème est justement que la personne en charge du tableau n’est pas très rigoureuse, et je voulais limiter le risque d’erreur humaine.
Je tente, on verra bien
 
Je complète ma réponse ; pour remplir automatiquement les cellules de type calendrier à partir des données des 4 premières colonnes, la formule extensible serait (en premier jet sans gestion d’erreurs pour les dates non renseignées) :
SI(DATE(ANNÉE($Admission Aaa);MOIS($Admission Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"adm";"")&SI(DATE(ANNÉE($VM 1 Aaa);MOIS($VM 1 Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"vm1";"")&SI(DATE(ANNÉE($VM 6 Aaa);MOIS($VM 6 Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"vm6";"")&SI(DATE(ANNÉE($VM 12 Aaa);MOIS($VM 12 Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"vm12";"")
 

Fichiers joints

  • 5D939D99-0601-45B1-93B2-E12399A60D30.jpeg
    5D939D99-0601-45B1-93B2-E12399A60D30.jpeg
    32,7 KB · Affichages: 35
Dernière édition:
Je complète ma réponse ; pour remplir automatiquement les cellules de type calendrier à partir des données des 4 premières colonnes, la formule extensible serait (en premier jet sans gestion d’erreurs pour les dates non renseignées) :
SI(DATE(ANNÉE($Admission Aaa);MOIS($Admission Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"adm";"")&SI(DATE(ANNÉE($VM 1 Aaa);MOIS($VM 1 Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"vm1";"")&SI(DATE(ANNÉE($VM 6 Aaa);MOIS($VM 6 Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"vm6";"")&SI(DATE(ANNÉE($VM 12 Aaa);MOIS($VM 12 Aaa);1)=DATE(ANNÉE(F$1);MOIS(F$1);1);"vm12";"")
PS : pour simplifier ma proposition, on peut évidemment ne créer que la colonne admission, et faire les calculs (+1 mois, +6 mois et + 12 mois) dans la formule de remplissage des colonnes de calendrier.
 
PS : pour simplifier ma proposition, on peut évidemment ne créer que la colonne admission, et faire les calculs (+1 mois, +6 mois et + 12 mois) dans la formule de remplissage des colonnes de calendrier.
Et dans cette colonne, je travaillerais avec une liste déroulante présentant les 12 mois (ou plus).
 
  • J’aime
Réactions: Gerapp38
Le problème est justement que la personne en charge du tableau n’est pas très rigoureuse, et je voulais limiter le risque d’erreur humaine.
Pour simplifier ma proposition, on peut évidemment ne créer que la colonne admission, et faire les calculs (+1 mois, +6 mois et + 12 mois) dans la formule de remplissage des colonnes de calendrier.

Je te propose donc d'employer une interface simple, et surtout qu'elle pourra comprendre (sans colonne masquée etc.)

Seulement deux colonnes d'en-tête (celles en rouge) qui seront à compléter + un calendrier qui se met à jour tout seul.
Colonne A : le nom de la personne​
Colonne B : sa date d'admission​

Par facilité (pour éviter les fautes de frappe ultérieures), je suggère d'utiliser un menu local pour remplir la colonne B :​
• Dans la cellule B3 – après m'être assuré que le format des données de la cellule est bien "Automatique" –, je tape Janvier 2023.​
• Je recopie vers le bas en tirant la poignée jaune au centre en bas de l'encadrement de la cellule et j'obtiens la suite des mois.​
PNG50 - Capture d’écran 2022-12-22 à 00.22.27 (colonnes en-tête).png
• Toutes ces cellules étant encore sélectionnées, je vais dans Format > Cellule > Format des données et je choisis "Menu local".​
Ainsi, je retrouve toutes ces dates comme items à choisir.​
PNG50 - Capture d’écran 2022-12-22 à 00.39.05.png
• Ensuite, comme je n'ai plus besoin de ces dates dans la colonne B (puisqu'il faudra les renseigner lors de l'inscription), je choisis plutôt "Vierge par défaut" en dessous de la liste d'items.​
Puis en B3, je choisis le premier item "Aucun" et je tire vers le bas comme tantôt.​
Ma colonne est prête à être complétée.
(On pourrait aussi nommer "- Clic pour faire un choix -" le premier item par défaut.)

Voilà pour l'interface de saisie.

+++++++++++++

Restent à créer les formules pour le calendrier.

Quand je dois créer une formule complexe, je vais progressivement du simple vers le compliqué et je teste à chaque étape.

Voici comment je procéderais (je postule que tu connais l'usage de $ pour distinguer les adresses de cellules relatives ou absolues, et que pour la syntaxe des fonctions, tu liras l'aide fournie dans l'inspecteur de formules de Numbers) :
Je vais tenter avec la formule SIS.
Ça me semble un bon choix. Cette fonction SIS offre l'avantage d'être plus claire que des SI imbriqués quand on veut vérifier successivement plusieurs conditions.

• En premier, je vérifie si on est dans le mois de l'admission (en rouge) ; dans le cas contraire on n'affiche rien (en bleu).

En C3 (première cellule du calendrier), j'introduis la formule :​
SIS (C$2=$B3 ; "Admission" ; VRAI ; "Rien")
(N.B. Ces deux arguments VRAI ; "Rien" à la fin sont importants : quand aucune condition n'est remplie, il faut dire quoi afficher sans quoi le tableur panique.
En pratique, on peut supprimer le mot Rien mais il faut garder la paire de guillemets doubles "".)
• Ensuite, je veux ajouter une 2e vérification (la première VM, après un mois).
Pour cela, j'utilise la fonction DATEDIF.

Le morceau de formule DATEDIF($B3;C$2;"M") renvoie le nombre de mois entre les deux cellules. Je l'insère dans ma première formule et je complète (en vert sombre) pour vérifier s'il est égal à 1 ; si oui, je demande à afficher la chaîne de caractères VM (entre guillemets doubles).

SIS (C$2=$B3 ; "Admission" ; DATEDIF($B3;C$2;"M") = 1 ; "VM" ; VRAI ; "Rien")
• Tu auras bien compris qu'il suffit de faire pareil pour les deux autres cas (on affiche aussi VM s'il y a 6 mois ou 12 mois d'écart). Pour cela, on insère les morceaux adaptés (en orange) avant la dernière paire d'arguments (en bleu) :

SIS (C$2=$B3 ; "Admission" ; DATEDIF($B3;C$2;"M") = 1 ; "VM" ;
DATEDIF($B3;C$2;"M") = 6 ; "VM" ; DATEDIF($B3;C$2;"M") = 12 ; "VM" ; VRAI ; "Rien")

• Enfin, il y a encore une erreur lorsque, dans DATEDIF, la date de début (date d'admission prévue pour cette personne) est postérieure à la date de fin (celle de la colonne du mois courant) : la différence ne peut pas être négative – p.ex. il est impossible le 22 décembre de dire combien de jours se sont écoulés depuis Noël 2022.
PNG50 - Capture d’écran 2022-12-22 à 02.18.50.png
En bonus, la fenêtre flottante indique la syntaxe des différentes fonctions utilisées dans ce tableau.
Cette erreur ne nous gêne pas, tout fonctionne bien, mais ce n'est pas propre.
Donc on ajoute la fonction SI.ERREUR pour la gérer et notre formule devient finalement :

SI.ERREUR ( SIS(C$2=$B3 ; "Admission" ; DATEDIF($B3;C$2;"M") = 1 ; "VM" ; 
DATEDIF($B3;C$2;"M") = 6 ; "VM" ; DATEDIF($B3;C$2;"M") = 12 ; "VM" ; VRAI ; "Rien") ; "Attente")
Ici aussi, on peut supprimer le mot Attente mais il faut garder la paire de guillemets doubles "".
(Personnellement, je préfère afficher quelque chose et le masquer par une règle de format conditionnel : ça évite de croire que la cellule est vide et de taper quelque chose dedans par erreur. Ça rend aussi les formules plus lisibles.)

Ça pourrait donner ceci au final :
PNG50 - Capture d’écran 2022-12-22 à 03.34.58.png
 
Dans Numbers, on ne peut pas verrouiller des cellules mais on peut verrouiller un tableau.
Il est donc possible d'aller un cran plus loin dans la sécurité d'utilisation :

Nous avons déjà bien partagé les zones à remplir (les deux premières colonnes) et les zones d'affichage du résultat (qui travaillent toutes seules grâce aux formules).

Grâce à ça il est facile, une fois que le tableau fonctionne bien, de déplacer hors du tableau toutes les colonnes à droite, qui forment le calendrier (sélectionner, cliquer, glisser).
Ça crée un nouveau tableau dont le contenu est toujours relié aux deux colonnes de données.
Il n'y a plus qu'à verrouiller ce tableau dans Format > Disposition après l'avoir sélectionné et on ne pourra plus le modifier par mégarde.

(N.B. Si le tableau de départ comportait des colonnes d'en-tête (cf. menu Tableau), il faudra encore faire un peu de ménage pour supprimer les colonnes vides excédentaires résultant du déplacement des données.)

Remarque générale : Numbers travaille beaucoup mieux à la souris qu'au clavier.
P. ex., on tape le début de la formule et on clique sur la fonction suggérée : ça donne la syntaxe.
On clique sur le premier argument demandé puis on va dans la cellule visée : Numbers nomme lui-même la référence et présumera peut-être même si il faut ajouter un $ pour conserver le rang ou la colonne lors des recopies,…
 
Dernière édition: