Re : Copier une valeur si valeur trouvée
Bonjour Justine,
Je ne suis pas tres fana des mp et mail perso qui s'éloignent de l'objectif du Forum.
La solution que je propose est sans macro et relativement simple dans le principe.
Seules quelques fomules peuvent paraitre un peu complexes mais sensiblement identiques. Il suffit de s'en approprier le principe.
Je vais donc tenter d'en expliquer la portabilité (par rapport au fichier précédement posté) :
Le principe, une base (feuille "Base") recense les informations pour l'année du planning souhaité et un tableau (feuille "mise a jour planning") affiche les informations en fontion de la semaine choisie.
Dans la feuille "mise a jour planning" la cellule H1 integre simplement une liste de 1 à 52 située dans l'onglet "liste du personel".
L'astuce, la zone N1:N52 est nommée "Semaines" afin de pouvoir etre définie dans la cellule H1 par Données/Validation. (on ne peut pas faire une liste de validation sur une autre feuille sans faire cette manipulation).
!Information : il y a un onglet "base" et un nom défini "base" à ne pas confondre !
Dans la feuille "Base" 3 noms dynamiques ont été définis pour une utilisation plus facile et dynamque dans les formules.
Les noms sont :
base => DECALER(base!$A$1;0;0;NBVAL(base!$A:$A);NBVAL(base!$1:$1))
MaCol => DECALER(base!$A$1;0;0;NBVAL(base!$A:$A))
MaLig => DECALER(base!$A$1;0;0;;NBVAL(base!$1:$1))
DECALER(REF;nbligdécalage;nbcoldécalage;hauteur;largeur)
Par exemple pour "base" avec la fontion DECALER, on définit une zone qui se decale par rapport à la cellule base!$A$1 de 0 ligne, 0 colonne et qui prend NBVAL(base!$A:$A) de hauteur et NBVAL(base!$1:$1) de largeur.
Dans l'exemple joint base correspond à A1:I9. Pour le verifier appuyer sur F5 puis taper "base" puis OK.
Le principe est le meme pour MaCol et MaLig sauf qu'on ne prend qu'une ligne et une colonne.
MaCol => A1:A9
MaLig => A1:I1
La formule :
=SI(ESTNA(EQUIV($H$7;MaCol;0));"Planning non renseigné";INDEX(base;EQUIV($H$7;MaCol;0);EQUIV(B20;MaLigne;0)))
EQUIV($H$7;MaCol;0) cherche le N° de semaine dans A1:A9 de la base (le 0 cherche la valeur exacte. cf. aide Excel)
Par exemple si H1=48 => la fonction renvoie 5. La semaine 48 est à la 5eme ligne de la base.
ESTNA(EQUIV($H$7;MaCol;0)) si EQUIV ne trouve pas la semaine (par ex : semaine 2 dans le fichier exemple). EQUIV renvoie #NA. on teste l'erreur si il y a erreur, on affiche "Planning non renseigné"
INDEX(base;EQUIV($H$7;MaCol;0);EQUIV(B20;MaLigne;0))
INDEX(base;Lig;Col) => renvoi un element dans un tableau à 2 dimensions. On renseigne les coordonnées Lig et Col de la zone (ici base)
On a vu que EQUIV($H$7;MaCol;0) renvoyait le N° de ligne.
De meme EQUIV(B20;MaLigne;0) cherche Personnel dans la ligne 1 de la base.
!Information : $H$7 est une reference absolue. On fait en permanence référence à la cellule H7. En recopiant la formule vers le bas, $H$7 ne change pas.
!Information : B20 est une référence relative. On fait référence aux cellules situées à 8 cellules à gauche de la cellule contenant la formule. B20 va changer en recopiant vers le bas et va devenir B21, B22 etc ...
Finalement, on créé un formulaire unique formaté, on renseigne une base simplifiée sur laquelle on peut facilement faire des recherches et modifications et on affiche le planning en choisissant une semaine.
Si on rajoute des données dans l'onglet base, elles sont automatiquement prises en compte.