Suivie des actions non finie

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

GuillaumA

XLDnaute Occasionnel
Bonjour,
Actuellement en train de plancher sur un suivie des actions dans une entreprise, j'ai un fichier avec des feuilles ayant pour titres du type Jour Mois Année (ex: 13 Octobre 2010)

A noter que pour chaque mois, une seul feuille est présente. On peut avoir 13 Octobre 2010 et 23 Novembre 2010 par exemple mais jamais deux feuilles avec le même mois.

Sur chacune des feuilles existe un format générique pouvant être défini par deux parties distinctes:
- Actions à suivre
- Actions du mois

Pour la partie "Actions du mois, une cellule avec une liste de validation propose trois choix différents:
- Terminé
- A voir jusqu'à fini
- Annulé

J'aimerai que si le choix "A voir jusqu'à fini" est choisi, alors l'action soit reporté dans la partie "Actions à suivre" de la feuille correspondant au mois suivant. Et si dans cette feuille, l'utilisateur n'enlève pas le "A voir jusqu'à fini", alors l'action est reporté au troisième mois de la même manière.


A noter que toutes les feuilles ne sont pas présente de base. Elles sont crées de manière générique tous les mois avec les informations des mois précédents qui nécessitent d'être reportés.

J'ai mis en pièce jointe un exemple concret de mon problème.


En effet, j'avoue ne pas avoir les compétences nécessaires à la réalisation de cette macro malgré mes maigres acquis depuis 4 mois grâce à vous tous.

Merci de votre considération.

Bonne fin de journée à vous tous,

Guillaume
 

Pièces jointes

Re : Suivie des actions non finie

Bonjour à tous

La formule pour lister les actions à finir n'est pas très compliquée 😱. Bon d'accord, elle est matricielle, donc à valider avec ctrl+maj+entrer... Par exemple en 22_Novembre_2010!C2

Code:
SI(LIGNES(C$1:C1)>NB.SI('13_Octobre_2010'!D$2:D$22;"A voir jusqu'à fini");"";INDEX('13_Octobre_2010'!C$1:C$22;MIN(SI('13_Octobre_2010'!D$2:D$22="A voir jusqu'à fini";SI(NB.SI(C$1:C1;'13_Octobre_2010'!C$2:C$22)=0;LIGNE('13_Octobre_2010'!D$2:D$22))))))

Par contre, j'ai dû la bricoler, avec des RECHERCHEV, des INDIRECT, pour qu'elle soit facilement "copier-collable" d'une feuille à la suivante, en faisant systématiquement appel à la feuille précédente (et non à '13_Octobre_2010'! comme dans l'exemple ci-dessus).

En pratique, il faut numéroter en A1 les feuilles, 1, 2, 3 etc. et remplir le tableau sur "tableaufeuille" récapitulant les noms des feuilles, en face de ces numéros. La formule, en colonne C va rechercher le nom de la feuille précédente avec A1 - 1 dans ce tableau.

Ci-joint donc, deux fichiers, l'un avec la formule détaillée, l'autre avec des noms définis pour l'occasion pour rendre la formule plus courte et un peu plus lisible.

Dans ces noms, j'ai dû là aussi rajouter des INDIRECT, pour qu'excel utilise le A1 de la feuille en cours, et non le A1 de la feuille où j'avais défini, au début, ce nom. En effet, si on est en feuille 22_Novembre_2010!, et qu'on y définit un nom, excel écrit dans cette définition, automatiquement, 22_Novembre_2010!A1. Pour que cela reste A1, j'ai triché en écrivant INDIRECT("A1").

Si tu as besoin d'explications, ne te gênes pas pour poser des questions.

Je pense que cela serait nettement plus facile avec une macro, mais comme je ne sais pas faire....

@ plus
 

Pièces jointes

Dernière édition:
Re : Suivie des actions non finie

Bonjour CISCO,

Un énorme merci à toi, je n'aurais pas pu trouver les formules par moi même.
Je vais essayer d'automatiser la démarche par Macro et reviendrai vers toi si j'ai un problème.

Dans tous les cas, j'afficherai le résultat final si j'y arrive héhé.

Encore merci!

Bonne journée,
Guillaume
 
Re : Suivie des actions non finie

Bonjour

Si tu passes par une macro, tu as peut être moyen d'afficher directement en A1 le nom de la feuille précédente. Dans ce cas, on peux faire avec une formule plus simple, en C2, du style :
Code:
SI(LIGNES(C$1:C1)>NB.SI(INDIRECT(A$1&"!D$2:D$22");"A voir jusqu'à fini");"";INDEX(INDIRECT(A$1&"!C$1:C$22");MIN(SI(INDIRECT(A$1&"!D$2:D$22")="A voir jusqu'à fini";SI(NB.SI(C$1:C1;INDIRECT(A$1&"!C$2:C$22"))=0;LIGNE(INDIRECT(A$1&"!D$2:D$22")))))))
Formule matricielle à valider avec ctrl+maj+entrer, puis à tirer vers le bas.

@ plus
 
Re : Suivie des actions non finie

Bonjour Cisco,
La cellule dans laquelle s'affiche directement le nom de la feuille est pour moi D9.
Mes actions à suivre sont en C75:C84 et mes actions à définir sont en C85:C94.

Doit je y afficher un chiffre (1 puis 2 puis 3, etc...) ou directement la date ?
De plus dans ton exemple, il y a une formule en C1. Dois-je l'utiliser ? Car cette dernière n'es tpas sur toute les feuilles de l'exemple.

Enfin, avec ta nouvelle formule, est-il nécessaire de faire un tableau récapitulatif des nom de feuille ? (je l'ai fait mais je ne sais pas si c'est toujours utile).

Merci pour ton aide !

Guillaume


PS: Actuellement, j'ai mis comme code en C75 ce dernier (en formule matricielle)
PS2: P119 correspond à "A voir jusqu'à fini" , I75:I94 est ma liste de liste déroulante

Code:
{=SI(LIGNES(C$74:C74)>NB.SI(INDIRECT(RECHERCHEV(D$9-1;KFdb!A122:B133;2;0)&"!I75:I94");P119);"";INDEX(INDIRECT(RECHERCHEV(D$9-1;KFdb!A122:B133;2;0)&"!C75:C94");MIN(SI(INDIRECT(RECHERCHEV(D$9-1;KFdb!A122:B133;2;0)&"!I75:I94")=P119;SI(NB.SI(C$74:C74;INDIRECT(RECHERCHEV(D$9-1;KFdb!A122:B133;2;0)&"!C75:C94"))=0;LIGNE(INDIRECT(RECHERCHEV(D$9-1;KFdb!A122:B133;2;0)&"!I75:I94")))))))}

Mais ca ne marche pas... Malgrés le tableau récapitulatif des feuilles en feuille KFdb et un chiffre généré automatiquement en D9 ( 1 puis 2 puis 3 , etc...)
 
Dernière édition:
Re : Suivie des actions non finie

Bonjour à tous

Dois je y afficher un chiffre (1 puis 2 puis 3, etc...) ou directement la date ?

Tu as le choix :
* soit tu affiches un chiffre (1, puis 2, puis...), et alors il faut le tableau récapitulatif, et il faut la formule donnée dans mon premier fichier avec à l'intérieur RECHERCHEV.
* soit tu affiches directement le nom de la feuille précédente, écrit exactement pareil que sur l'onglet, et tu utilises la formule donnée dans mon précédent post, en adaptant les cellules...

A mon avis, cette seconde méthode est plus simple.

La formule en C1 n'est pas indispensable. Elle est là juste pour voir si le nombre de lignes affichées en C2:C9 correspond bien au nombre de lignes à transférer de la feuille précédente à la feuille présente. De plus, elle permet de savoir si la plage d'affichage (C2:C9 dans le fichier exemple) est assez grande. Si il y a plus de 8 lignes à afficher, il faut agrandir la plage C2:C9.

Avec ce que tu me dis, j'ai l'impression que la "bonne" formule, avec la seconde méthode (nom du fichier précédent écrit en D9), est :
Code:
{=SI(LIGNES(C$74:C74)>NB.SI(INDIRECT(D$9&"!I75:I94");P$119);"";INDEX(INDIRECT(D$9&"!C1:C94");MIN(SI(INDIRECT(D$9&"!I75:I94")=P$119;SI(NB.SI(C$74:C74;INDIRECT(D$9&"!C75:C94"))=0;LIGNE(INDIRECT(D$9&"!I75:I94")))))))}

A tester davantage, car, sans le fichier, ce n'est pas évident : J'ai peut être oublié un $, pas mis la bonne référence de cellule...

@ plus

P.S : Dommage, les balises pour mettre en gras ou en couleur dans le bandeau affichant la formule ne fonctionnent pas. Je les ai supprimés. En espérant que ce n'est qu'un problème provisoire, lié à la dernière version du forum.
 
Dernière édition:
Re : Suivie des actions non finie

Re bonjour CISCO,

Rien a faire... Je ne comprend pas. Je comprend ta formule, je vois la méthode de calculation, j'ai envoyé automatiquement le nom de la feuille en D9 et ça devrai marcher!
Après, mes noms sont du type: 12 octobre 2010 et non 12_octobre_2010. Quand j'ai fait la modification pour afficher des _ la formule reconnaissait la feuille dans laquelle aller chercher les informations. Cependant, cela ne marche toujours pas.

J'ai vu dans ta formule que tu a mis
Code:
NDEX(INDIRECT(D$9&"![COLOR="red"]C1[/COLOR]:C94");MIN(SI(INDIRECT(D$9&"!I75:I94")=P$119

Je suppose que c'est une erreur et j'ai modifier pour C75. Et cela ne marche toujours pas.
Je ne peux me permettre de mettre a C1 car ma feuille est rempli de texte avant la ligne 74. Donc... je rame...
 
Re : Suivie des actions non finie

Bonjour

En C75, tu as deux possibilités :
Soit tu utilises la formule
Code:
SI(LIGNES(C$74:C74)>NB.SI(INDIRECT(B$118&"!I75:I94");P$119);"";INDEX(INDIRECT(B$118&"!C$75:C$94");MIN(SI(INDIRECT(B$118&"!I$75:I$94")=P$119;SI(NB.SI(C$74:C74;INDIRECT(B$118&"!C$75:C$94"))=0;LIGNE(INDIRECT(B$118&"!I$75:I$94"))-74)))))
à savoir ce que tu as écri avec -74 à la fin

soit tu utilises :
Code:
SI(LIGNES(C$74:C74)>NB.SI(INDIRECT(B$118&"!I75:I94");P$119);"";INDEX(INDIRECT(B$118&"!C$1:C$94");MIN(SI(INDIRECT(B$118&"!I$75:I$94")=P$119;SI(NB.SI(C$74:C74;INDIRECT(B$118&"!C$75:C$94"))=0;LIGNE(INDIRECT(B$118&"!I$75:I$94")))))))
avec la plage juste après INDEX commençant en C1.

En effet, la formule MIN(SI(....=0;LIGNE(...B$118&"!I$75:I$94"))))))) renvoie avec MIN le numéro réel de la ligne où se trouve le texte à renvoyer. On obtient par exemple INDEX(......;84). Si on a écrit INDEX(C$75:C$94;84), excel ne peut pas te renvoyer de valeur puisqu'il ni a que 19 lignes dans la plage C$75:C$94.
Deux possibilités pour contourner ce "problème" :
* Ecrire -74 après LIGNE() pour que 75 devienne 75 - 74 = 1, et le 84 précédent devient 84 - 74 = 10, et excel renvoie le contenue de la 10ème ligne de la plage C$75:C$94
* Ecrire C$1:C$94 et excel renvoie sans problème le contenu de la ligne 84 de la plage C$1:C$94.

Dans les deux cas, il faut modifier le nom des feuilles, dans l'onglet et dans la cellule B$118, à savoir les écrire sans espace, 15_décembre_2010 ou 15décembre2010 au lieu de 15 décembre 2010.

@ plus
 
Re : Suivie des actions non finie

Ok bien noté!
Etant donné que je ne peux changer les noms pour qu'ils soient sans espace, je vais utiliser ta formule, adapté à une macro de copier coller.
Je vais donc passer par un tableau (masqué) sur chaque feuille, dans lequel ta formule sera utilisé. Ensuite, la macro copiera les données du tableau pour les "imprimer" sur la feuille du nouveau mois.
De cette manière, je pourrai garder mes noms de feuille.

Merci pour ton explication claire et précise de l'utilisation de la formule. N'étant pas très bon en formule pur j'ai pas mal de mal avec héhé.

Dans tous les cas,
Merci CISCO !

Bonne journée à toi.

Amicalement,
Guillaume
 
Re : Suivie des actions non finie

Bonjour

Ok bien noté!
Etant donné que je ne peux changer les noms pour qu'ils soient sans espace, je vais utiliser ta formule, adapté à une macro de copier coller.
Je vais donc passer par un tableau (masqué) sur chaque feuille, dans lequel ta formule sera utilisé. Ensuite, la macro copiera les données du tableau pour les "imprimer" sur la feuille du nouveau mois.
De cette manière, je pourrai garder mes noms de feuille.

Guillaume

Pas bête comme astuce...

@ plus
 
Re : Suivie des actions non finie

Ah petite question. j'ai:
Code:
=SI(LIGNES(V$118:V118)>NB.SI(INDIRECT(I75:I94);P$119);"";INDEX(INDIRECT(C$75:C$94);MIN(SI(INDIRECT(I$75:I$94)=P$119;SI(NB.SI(V$118:V118;INDIRECT(C$75:C$94))=0;LIGNE(INDIRECT(I$75:I$94))-118)))))

Avec mon tableau allant de V119 à V128 et cela ne marche pas malgré toute tes indications. Je pense que je ne comprend toujours pas le système des fonctions INDEX et INDIRECT alors qu'on m'a dit que c'était comme des formules magiques.

Est-ce que mon erreur vient du fait que comme le tableau dans lequel vont être reporté les actions "A suivre" n'est pas à la même hauteur que le tableau dans lequel les informations vont être cherché ? Est-ce toujours cette logique de calcul de cellule qui me fait défaut ?

Guillaume
 
Re : Suivie des actions non finie

Je deviens fou...
J'utilise en matricielle:
Code:
=SI(LIGNES(C$74:C74)>NB.SI(INDIRECT(I75:I94);P$119);"";INDEX(INDIRECT(C$75:C$94);MIN(SI(INDIRECT(I$75:I$94)=P$119;SI(NB.SI(C$74:C74;INDIRECT(C$75:C$94))=0;LIGNE(INDIRECT(I$75:I$94))-74)))))

J'ai même essayé:
Code:
=SI(LIGNES(V$118:V118)>NB.SI(INDIRECT(I75:I94);P$119);"";INDEX(INDIRECT(C$75:C$94);MIN(SI(INDIRECT(I$75:I$94)=P$119;SI(NB.SI(V$118:V118;INDIRECT(C$75:C$94))=0;LIGNE(INDIRECT(I$75:I$94))-74)))))

et j'ai même essayé en le mettant aux même ligne:
Code:
=SI(LIGNES(M$74:M74)>NB.SI(INDIRECT(I75:I94);P$119);"";INDEX(INDIRECT(C$75:C$94);MIN(SI(INDIRECT(I$75:I$94)=P$119;SI(NB.SI(M$74:M74;INDIRECT(C$75:C$94))=0;LIGNE(INDIRECT(I$75:I$94))-74)))))

Enfin j'ai testé l'autre formule (avec C$1:C$94) sous toutes les coutures et... j'ai toujours le même résultat: #REF!

A force je suis poussé à croire que je suis maudit...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour