Microsoft 365 formule le nombre de cellules avec critères sur une ligne

xxexcel

XLDnaute Junior
bonjour a toutes et a tous, ptit problème......

j'ai un tableau d'environ 50 lignes et 100 colonnes dans lequel j'attribue des postes de travaillent. "par menu déroulants"
je cherche une formule qui me donne le nombre de cellules a partir d'une valeur jusqu'à ma dernier colonne.
ex: ligne 10 Mr. "x" je lui attribue un poste de travail qui sera "T1" en colonne C = "T1" en C10
a nouveau Mr "x" je lui attribue un poste de travail "T1" en colonne Z="T1" en Z10
j'aimerai connaitre comment savoir combien de cellules se trouvent entre la dernière attribution de poste "T1" et la fin de mon tableau. en sachant qu'il y a d'autres postes de travaille
merci pour la recherche
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Xxexcel,
Un petit fichier test eût évité ce grand baratin, et éviter aussi qu'on se retape la mise en forme, et on serait plus proche de la réalité. ;)

En PJ un essai avec ce que j'ai compris:
Nombre de poste attribués :
VB:
=SI(NB.SI(10:10;C$25)=0;"";NB.SI(10:10;C$25))
Calcul de la dernière occurrence par rapport à la fin du planning :
Code:
=SI(MAX((SI(10:10=C$35;COLONNE(10:10))))=0;"";Fin-MAX((SI(10:10=C$35;COLONNE(10:10)))))
A valider par Maj+Ctrl+Entrée car formule matricielle.
A noter qu'il faut un "flag" de fin pour faire le calcul.
J'ai mis "Fin" à la dernière semaine du planning.
 

Pièces jointes

  • xxexcel.xlsx
    9.6 KB · Affichages: 5

xxexcel

XLDnaute Junior
Bonsoir Xxexcel,
Un petit fichier test eût évité ce grand baratin, et éviter aussi qu'on se retape la mise en forme, et on serait plus proche de la réalité. ;)

En PJ un essai avec ce que j'ai compris:
Nombre de poste attribués :
VB:
=SI(NB.SI(10:10;C$25)=0;"";NB.SI(10:10;C$25))
Calcul de la dernière occurrence par rapport à la fin du planning :
Code:
=SI(MAX((SI(10:10=C$35;COLONNE(10:10))))=0;"";Fin-MAX((SI(10:10=C$35;COLONNE(10:10)))))
A valider par Maj+Ctrl+Entrée car formule matricielle.
A noter qu'il faut un "flag" de fin pour faire le calcul.
J'ai mis "Fin" à la dernière semaine du planning.
merci sylvanu....
La dernière occurrence par rapport à la fin du planning est exactement ce que je recherche d'après ton fichier, je teste cela des que je peux ce soir.... top
juste qu'appelles tu un "flag"

merci beaucoup
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour xxexcel,
Votre fichier comporte des références circulaires. Pouvez vous les supprimer, je ne sais pas où elles sont.

D'autre part, je ne comprend rien. Dans votre post #1, la colonne A comporte des noms ( Wr. X, Y, Z ) et dans la matrice des postes ( T1, T2, T3 ... )
Où trouve t-on les noms dans votre fichier ?

Est ce CHEF DE GARDE, LEADER NORD ? ou alors CHEF BAT, CHEF BAL ?
On a l'impression qu'il y a des postes en colonne A et dans la matrice.
D'autre part, est ce que la Fin est toujours la première colonne vide en ligne 2 ( en l'occurrence mercedi 30 mars pour votre fichier ) ? Si oui, le calcul de fin est automatique.
 

xxexcel

XLDnaute Junior
bonjour sylvanu,
difficile d'être novice ;)
je ne voulais pas abuser ou faire perdre du temps, c'est pour cela que j'ai essaye de faire simple et ensuite me débrouiller avec votre formule. Pour l'adapter a mon tableau.

Effectivement le début se situe colonne C , la colonne B est pour les noms, et la colonne A sont de menus déroulants de chaque poste m'indiquant un classement des agents pour savoir a quel poste je leurs attribuent.

Pour ce qui concerne la fin du tableau oui le tableau fin bien le 30 mars colonne DE seul les dates changent chaque années
je vous ai fais une nouvelle copie plus réel enfin j'espère:)
Mon but est bien de connaitre la distance entre la dernier fois que Mr a,b,c,d,e,f.... ete a un poste : exemple que j'ai donne T1 T2 ou d'autres postes,,,,et la dernière garde de l'année. Ce résultat me permettra d'affiner encore plus le choix d'un poste a distribuer.


j'espère que cela vous parlera plus...encore désolé
 

Pièces jointes

  • test 2.xlsx
    91.1 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Xxexcel,
Votre fichier ne peut pas marcher car dans le second tableau les formules font référence à la ligne où elles se trouvent, et ça crée des références circulaires.
Comme votre fichier est énorme, j'ai transféré le second tableau dans une autre feuille, ce qui résout le problème.
J'ai été obligé de supprimer la liste qui était à gauche, car si un poste était absent ... alors il comptait celui de la colonne A.
La seconde feuille est automatique pour les postes et les noms. Il suffit de modifier la feuil1 pour mettre à jour la feuille 2.
Toutes les formules de la feuil2 sont identiques et de type :
VB:
=SI(C$3="";"";SI(MAX((SI(Feuil1!4:4=C$3;COLONNE(Feuil1!4:4))))=0;"";Fin-MAX((SI(Feuil1!4:4=C$3;COLONNE(Feuil1!4:4))))))
J'ai protéger la feuille 2 sans mot de passe pour éviter toute fausse manip avec les formules matricielles.
J'espère que ça va vous aider à avancer.
 

Pièces jointes

  • test 2.xlsx
    113.7 KB · Affichages: 5

xxexcel

XLDnaute Junior
merci SYLVANU deja
;)
je mis colle ce soir.....
Votre fichier ne peut pas marcher car dans le second tableau les formules font référence à la ligne où elles se trouvent, et ça crée des références circulaires.
"Erreur de débutant car dans mon esprit j'ai voulu faire court alors que j'avais l'intention de faire ce tableau sur une autre page ,comme vous l'avez fais....."
waouh ca a l'air tellement simple quand je regarde votre fichier.....
allez je vous tiens informe de mon avancer
 

xxexcel

XLDnaute Junior
je ne peux supprimer la colonne A, elle est une aide a la décision pour attribuer les poste de travail..
du coup cela ne fonction pas si je la conserve pourtant votre fichier et jute ce que je cherche.

J'ai été obligé de supprimer la liste qui était à gauche, car si un poste était absent ... alors il comptait celui de la colonne A.

si je comprend je ne peux mettre le fameux flag :) aussi a cause de la ligne A
y a t'il une solution pour ce problème ;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Si, il y a une solution simple, mais elle est "moche".
Par MFC si la valeur est égale à Fin-1 c'est que c'est la cellule en A qui est comptée.
Donc .... je met police blanche sur fond blanc.
Par contre le contenu est toujours présent ( donc 108 dans votre fichier ). Si vous êtes amené à faire d'autre calculs à partir de ces valeurs le résultat sera erroné.
Il faudra donc changer la formule qui devient complexe :
VB:
=SI(SI(C$10="";"";SI(MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10))))=0;"";Fin-MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10))))))=Fin-1;"";
SI(C$10="";"";SI(MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10))))=0;"";Fin-MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10)))))))
Je l'ai laissé dans une seule cellule ( C11 )
Donc si pas de calculs ultérieurs, le plus léger c'est la MFC, si calculs ultérieur alors copier la formule C11 sur l'ensemble du tableau.
 

Pièces jointes

  • test 3.xlsx
    113.8 KB · Affichages: 3

xxexcel

XLDnaute Junior
Bonsoir,
Si, il y a une solution simple, mais elle est "moche".
Par MFC si la valeur est égale à Fin-1 c'est que c'est la cellule en A qui est comptée.
Donc .... je met police blanche sur fond blanc.
Par contre le contenu est toujours présent ( donc 108 dans votre fichier ). Si vous êtes amené à faire d'autre calculs à partir de ces valeurs le résultat sera erroné.
Il faudra donc changer la formule qui devient complexe :
VB:
=SI(SI(C$10="";"";SI(MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10))))=0;"";Fin-MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10))))))=Fin-1;"";
SI(C$10="";"";SI(MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10))))=0;"";Fin-MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!10:10)))))))
Je l'ai laissé dans une seule cellule ( C11 )
Donc si pas de calculs ultérieurs, le plus léger c'est la MFC, si calculs ultérieur alors copier la formule C11 sur l'ensemble du tableau.
la je décroche un peu....jusqu'au test 2 j'arrive a suivre plus ou moins comprendre, sauf la parti B1 page 2 le flag.. j'avais penser qu'il été possible de décaler a la colonne B au lieu de A j"avais essaye sur le test 1 cela avait marcher.
MFC = ?
le novice passe a très novice :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Il n'y a pas de notion de colonnes quand on fait Feuil1!10:10, on prend toutes les colonnes.
Sinon vous pouvez remplacer Feuil1!10:10 par par ex Feuil1!C10:IZ10, mais alors vous devez être certain que votre planning ne dépassera jamais 260 colonnes.
Ou pousser à l'extrême avec Feuil1!C10:XLD10 qui qui fait toutes les colonnes sauf A et B.
La formule devient alors :
VB:
=SI(C$10="";"";SI(MAX((SI(Feuil1!10:10=C$10;COLONNE(Feuil1!$C10:$XFD10))))=0;"";Fin-MAX((SI(Feuil1!$C10:$XFD10=C$10;COLONNE(Feuil1!$C10:$XFD10))))))

MFC signifie Mise en forme conditionnelle. Cela permet de mettre en forme des cellules en fonction de leur contenu.
En Feuil2 c'est comme ça que les cellules non vides deviennent bleu.
Vous cliquez sur C11 et faites Accueil/Mise en forme conditionnelle/Gérer les règles.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Je pense qu'hier nous étions deux à être fatigués. :)
En PJ une V5.
L'analyse ne se fait que sur les colonnes C à BBB, ce qui laisse A libre, et BBB laisse 4 ans de planning tout en limitant la zone de recherche.
VB:
=SI(C$10="";"";SI(MAX((SI(Feuil1!$C10:$BBB10=C$10;COLONNE(Feuil1!$C10:$BBB10))))=0;"";Fin-MAX((SI(Feuil1!$C10:$BBB10=C$10;COLONNE(Feuil1!$C10:$BBB10))))))

Addon : Une V7 avec les titres en vertical, ce qui donne un tableau plus lisible sur un seul écran. Juste unei dée.
 

Pièces jointes

  • test 5.xlsx
    114.7 KB · Affichages: 1
  • test 7.xlsx
    113.4 KB · Affichages: 2
Dernière édition:

Discussions similaires

Réponses
16
Affichages
379

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505