Adressage cellule en dynamique
Bonjour,
[préambule]
Cela fait longtemps que je n'ai pas posé de question au forum
Alors merci d'avance à ceux qui me liront !
Je fais appel au formuliste qui sommeille en vous. Car oui, une macro pourrait faire le job, mais là je bosse dans un environnement 365 et c'est le drame... plus de macro sur un fichier partage en SharePoint. Il faut bien quelques contrariétés à ce format collaboratif.
Bref, je suis revenu à mes premiers émois sur Excel, les formules pour faire de la gestion de dates et de temps
[contexte]
Pour les besoins de la gestion des présences, des absences, des repas et de la préparation des paies, nous utilisions 5 fichiers différents. L'idée et de faire tout çà sur un seul fichier partagé. Cela fonctionne plutôt bien depuis deux mois.
Les infos horaires sont issues de l'onglet semaine type travailleur et sont renseignées dans chaque onglet mensuel en demi journée, donc pour les besoins des calcul, il faut que chacune des plages horaires aient un début et une fin, ce qui nous donne 4 colonnes par journée. Là encore, je m'en suis sorti.
[Problème]
Pour faire les calculs, il faut soustraire le début de la période de la valeur de la fin de période et à chacune des cellules, j'ai un décalage qui se fait. En dur cela donne çà :
=SIERREUR(SI(NB.SI(absences;D19)>0;"";SI(D19="PERM";Parametres!$N$25;GA19-FZ19));)J'ai tenté de faire avec la fonction décaler, pas trouvé, puis avec adresse et là je me suis approché de quelque chose mais là encore, je passe à coté de la logique d'incrémentation du nombre de colonne à décaler à chaque pas. Je me suis arrêté à :
=SIERREUR(SI(NB.SI(absences;D19)>0;"";SI(D19="PERM";Parametres!$N$25;ADRESSE(LIGNE();COLONNE()+76;4;1)-ADRESSE(LIGNE();COLONNE()+77;4;1)));)Je vous joins le fichier.
Merci d'avance
Bonjour,
Il eût été souhaitable de fournir un fichier avec quelques exemples de résultats attendus.
Dans un premier temps et au vu de la formule initiale comparée avec la seconde formule, il semblerait qu'il y ait une inversion des colonnes entre 76 et 77, pour coller à la première formule (si elle fonctionnait), ce devrait être ceci:
=SIERREUR(SI(NB.SI(absences;D19)>0;"";SI(D19="PERM";Parametres!$N$25;ADRESSE(LIGNE();COLONNE()+77;4;1)-ADRESSE(LIGNE();COLONNE()+76;4;1)));)Cdlt
Bonjour,
Merci de l'interet que tu porte à mon sujet.
Les resultat attendu sont dans les lignes 20:50 qui sont écrites en dur.
J'avais en db19 =SIERREUR(SI(NB.SI(absences;D19)>0;"";GA19-FZ19);"") puis en DC19 =SIERREUR(SI(NB.SI(absences;E19)>0;"";GC19-GB19);""), en DD19 =SIERREUR(SI(NB.SI(absences;F19)>0;"";GE19-GD19);""), en De19 =SIERREUR(SI(NB.SI(absences;G19)>0;"";GG19-GF19);"")...
Merci encore
Ok, je vois qu'il y a un décalage supplémentaire, essayez ceci, en DB9 à tirer vers la droite et vers le bas:
=SIERREUR(SI(NB.SI(absences;D19)>0;"";SI(D19="PERM";Parametres!$N$25;ADRESSE(LIGNE();COLONNE()+77+COLONNE()-106;4;1)-ADRESSE(LIGNE();COLONNE()+76+COLONNE()-106;4;1)));)Salut,
Merci pour ta proposition qui m'a mis sur la piste.
La formule fonctionne avec l'adjonction de la fonction INDIRECT() ce qui donne
=SIERREUR(SI(NB.SI(absences;D19)>0;"";SI(D19="PERM";Parametres!$N$25;INDIRECT(ADRESSE(LIGNE();COLONNE()+77+COLONNE()-106;4;1))-INDIRECT(ADRESSE(LIGNE();COLONNE()+76+COLONNE()-106;4;1))));)Résolu