Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

durrr77

XLDnaute Nouveau
Bonjour,

Je ne m'y connais pas du tout en programmation sur excel mais je cherche a réaliser quelque chose de très simple .

J'ai 5 lignes dans ma feuille 2 (appelée fiche suivi 1.1) , énumérant les étapes d'une action à réaliser. Chaque fois qu'une des étape est réalisé , un 1 est manuellement inscrit dans une colonne de la ligne relative à cette étape ( il vaut mieux avoir l'oeil sur le fichier en pièce jointe pour comprendre ).

Ce que je voudrai c'est créer une boucle qui balaierai la colonne contenant des 1 et des 0, qui s'arrête dès qu'elle trouve un 0 et renvoie dans une case de la feuille 1 la dernière étape qui n'a pas encore été réalisée.

Je pense qu'il suffit d'un clic sur le fichier pour comprendre ce que je recherche. Je ne connais pas du tout le langage de programmation sur excel c'est pourquoi je demande votre aide. Je cherche à faire quelque chose du genre

for i from 11 to 15 do
if 'Fiche Suivi 1.1'!Mi = 0
do 'Suivi Global'!H8 = Ai
end if
end for


C'est très moche je ne connais pas trop la syntaxe mais l'esprit y est. En fait je ne suis même pas sur que comme ca la boucle s'arretera au premier 0, elle ne risque pas de continuer et m'afficher le dernier 0 qu'elle trouve ? ... Merci d'avoir lu et merci d'avance de votre aide
 

Pièces jointes

  • Exemple (1).xlsm
    16.6 KB · Affichages: 59
  • Exemple (1).xlsm
    16.6 KB · Affichages: 58
  • Exemple (1).xlsm
    16.6 KB · Affichages: 50
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

Bonjour durrr77,

Une formule pourrait suffire:
Mettre en H8, la formule suivante (fichier v1):
Code:
=SI(ESTNA(EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0));"Etapes toutes réalisées";INDEX('Fiche Suivi 1.1'!A11:A15;EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0)))

Edit: Si vous indiquez le suffixe de vos onglets en colonne B et si vos onglets s'appellent toujours 'Fiche Suivi suffixe' et si la structure des feuilles de suivi est toujours la même, alors vous pouvez utilier en colonne G et H les formules situées en G8 et H8 puis les recopier vers le bas au fur et à mesure des ajouts de fiche de suivi (voir fichier v2)
 

Pièces jointes

  • Exemple v1.xls
    40.5 KB · Affichages: 54
  • Exemple v1.xls
    40.5 KB · Affichages: 57
  • Exemple v1.xls
    40.5 KB · Affichages: 61
  • Exemple v2.xls
    66.5 KB · Affichages: 71
  • Exemple v2.xls
    66.5 KB · Affichages: 67
  • Exemple v2.xls
    66.5 KB · Affichages: 66
Dernière édition:

durrr77

XLDnaute Nouveau
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

Merci beaucoup c'est exactement ce que je cherchais.
Je suis arrivé à généraliser votre formule pour l'utiliser avec mes autres fiches suivi mais pourriez-vous m'expliquer grosso-modo comment cela marche ?
Merci encore !
 

durrr77

XLDnaute Nouveau
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

Bonjour,
Je viens de lire votre 2ème version, c'est vrai que cela me serait d'une très grande aide vu que sinon j'aurai 46 fiches à remplir manuellement mais malheureusement chaque fiche suivi ne contient pas 5 étapes (certaines 2 d'autres 7 etc ^^ ) . Je pense donc que la méthode que vous citez ne marche plus ...
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

(re)Bonjour,

Nous allons essayer:

le coeur de la dormule:
=INDEX('Fiche Suivi 1.1'!A11:A15;EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0))

Partie EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0)
Equiv va rechercher la première valeur égale à 0 dans la zone 'Fiche Suivi 1.1'!M11:M15.
Le 3ième paramètre de la fonction EQUIV (qui ici vaut 0) indique à EQUIV qu'il doit rechercher la valeur 0 exactement (pour les autres valeurs de ce paramètre voir l'aide d'excel)

Si EQUIV trouve la valeur 0 dans la zone 'Fiche Suivi 1.1'!M11:M15, alors il retourne le rang de cette valeur ( si 0 est la 1ière valeur valeur il retourne 1, si 0 est la 3ième valeur il retourne 3, si 0 n'est pas trouvé la valeur d'erreur NA est retournée)

Supposons que 0 est présent et que son rang retourné par EQUIV est 3 (la 3ième étape est la première étape non réalisée) alors le nom de cette étape est le 3ième élément de la zone B11:B15.

La fonction index est une fonction qui permet de retourner une valeur d'une zone à partir du rang de cette valeur.
Index('Fiche Suivi 1.1'!A11:A15;3) retournera "Etape 3" (retourne la 3ième valeur de la zone 'Fiche Suivi 1.1'!A11:A15;3).

En combinant les deux formules on trouve la formule:
Index('Fiche Suivi 1.1'!A11:A15;EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0))

Le reste de la formule est la gestion d'erreur quand le zéro n'est pas trouvé.

En excel 2007 (je n'ai que 2003 sous la main) vous pouvez simplifier en (pas vérifié!):
=sierreur(Index('Fiche Suivi 1.1'!A11:A15;EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0));"Etapes toutes réalisées")
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

(re)Bonjour et bienvenu,

Dans ce cas, si vous savez que le nombre d'étapes max est par ex. 15, faites un tableau de 15 éléments et ne remplissez que les les étapes nécessaires à chaque projet; laissez vides les lignes étapes suivantes.
 

durrr77

XLDnaute Nouveau
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

Je comprends mieux, tout cela est très intéressant merci beaucoup

(re)Bonjour,

Nous allons essayer:

le coeur de la dormule:
=INDEX('Fiche Suivi 1.1'!A11:A15;EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0))

Partie EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0)
Equiv va rechercher la première valeur égale à 0 dans la zone 'Fiche Suivi 1.1'!M11:M15.
Le 3ième paramètre de la fonction EQUIV (qui ici vaut 0) indique à EQUIV qu'il doit rechercher la valeur 0 exactement (pour les autres valeurs de ce paramètre voir l'aide d'excel)

Si EQUIV trouve la valeur 0 dans la zone 'Fiche Suivi 1.1'!M11:M15, alors il retourne le rang de cette valeur ( si 0 est la 1ière valeur valeur il retourne 1, si 0 est la 3ième valeur il retourne 3, si 0 n'est pas trouvé la valeur d'erreur NA est retournée)

Supposons que 0 est présent et que son rang retourné par EQUIV est 3 (la 3ième étape est la première étape non réalisée) alors le nom de cette étape est le 3ième élément de la zone B11:B15.

La fonction index est une fonction qui permet de retourner une valeur d'une zone à partir du rang de cette valeur.
Index('Fiche Suivi 1.1'!A11:A15;3) retournera "Etape 3" (retourne la 3ième valeur de la zone 'Fiche Suivi 1.1'!A11:A15;3).

En combinant les deux formules on trouve la formule:
Index('Fiche Suivi 1.1'!A11:A15;EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0))

Le reste de la formule est la gestion d'erreur quand le zéro n'est pas trouvé.

En excel 2007 (je n'ai que 2003 sous la main) vous pouvez simplifier en (pas vérifié!):
=sierreur(Index('Fiche Suivi 1.1'!A11:A15;EQUIV(0;'Fiche Suivi 1.1'!M11:M15;0));"Etapes toutes réalisées")
 

durrr77

XLDnaute Nouveau
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

J'y ai pensé mais les cases vide seront considérées comme des 0 par Excel et cela m'empêchera de calculer ma moyenne pour le %age d'étape réalisées .

(re)Bonjour et bienvenu,

Dans ce cas, si vous savez que le nombre d'étapes max est par ex. 15, faites un tableau de 15 éléments et ne remplissez que les les étapes nécessaires à chaque projet; laissez vides les lignes étapes suivantes.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

(re) Bonjour,

J'y avais pensé. Regardez la formule de % de réalisation dans les fiches suivis (fichier v2). Si vous mettez à vide toute la ligne des étapes inutiles, si vous mettez soit des 0 soit des 1 dans l'état d'avancement (pour les étapes utiles), la formule avancement devrait être exacte.
 

durrr77

XLDnaute Nouveau
Re : Boucle for et if - Afficher l'étape en cours d'une liste d'étape dans un projet

Rebonjour .

Je voudrais améliorer un peu ma présentation et afficher un camembert avec 3 parties, les actions réalisées, celles partiellement réalisées et les actions non initialisée. En gros les étapes à 100 , celle à 0 , et celles entre les 2.
Je pensais utiliser la fonction EQUIV dont vous m'avez parlé plus haut mais celle ci ne permet pas de compter le nombre de "100" dans la colonne mais renverra le premier "100" qu'il trouve. Y-a-t-il une fonction pour ce que je cherche ?




Pensez vous qu'il soit possible ici d'utiliser une boucle du style:

For i from 8 to 13 do
if Gi = 0
do ....
if Gi= 0
do
else
do
End if
End for


Ou alors peut-être puis-je utiliser la fonction "CHOISIR" d'excel ?
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
572

Statistiques des forums

Discussions
312 270
Messages
2 086 678
Membres
103 370
dernier inscrit
pasval