Obtenir le contenu - première cellule non vide avec condition

romain001

XLDnaute Nouveau
Bonjour

J'ai un problème que je n'arrive pas à résoudre

1 - Il s'agit d'un fichier Exel (2011 Mac) qui doit suivre l'évolution du poids d'une personne sur l'année.

2 - Dans la colonne "B" on note le poids.

3 - dans la colonne "C" je désire obtenir le calcul du poids perdu chaque jour, ainsi que des récapitulatifs en "C36,38,40".

Dans la colonne C, quand toutes les cellules de la plage B2;32 sont remplies, la formule {=SI(B2="";"";SI(B3="";"";(B3-B2)*1000))} fonctionne parfaitement. Mais mon problème apparait quand certaines cellules de la colonne B sont vides.

Avec la formule {=SI(B18="";"";(B18-RECHERCHE(9^9;B:B))*1000) Exel remonte jusqu'à la cellule non vide pour faire le calcul et cela semble fonctionner pour B18. Mais cette formule ne fonctionne plus lorsque Exel arrive en C10 (voir le fichier d'exemple, onglet "mai")

Je n'arrive pas à trouver une formule qui fonctionne avec toutes les cellules non vide ET avec certaines cellules vides dans la colonne B. D'autant plus qu'il faut faire la liaison entre le dernier jour d'un mois quelconque et le premier jour du mois suivant.

Et pour conclure, je pense que C40 sera juste quand C36 le sera aussi. Mais auriez une idée plus simple que la mienne pour les calculs ?

Merci pour votre aide.

Je vous joint le fichier - L'exemple ce trouve sur la feuille du mois de mai.

J'ai cherché sur le net, j'ai essayé de nombreuses formules, mais je n'y arrive pas.

RECHERCHE(9^9;B:B)
Range("B32").End(xlUp).Select
ActiveCell.End(xlUp).Select
MsgBox ActiveCell.End(xlUp).Value

=(RECHERCHE(9^9;Z$2:Z6)+Z$2)
=INDIRECT("B"&MAX(SI(ESTVIDE(plage_voulue);0;LIGNE(plage_voulue))))}
=DECALER(B$1;MAX((B$1:A$201<>"")*LIGNE($1:$32))-1;)

Exemple de formule qui renvoie la dernière valeur numérique de la ligne 1
=RECHERCHE(9^9;1:1)
Pour le dernier texte, ça sera :
=RECHERCHE("zz";1:1)
Exemple de formule qui renvoie la dernière valeur numérique de la Colonne A
=RECHERCHE(9^9;A:A)
Pour le dernier texte, ça sera :
=RECHERCHE("zz";A:A)

J'ai essayé de transposer, sans succès, la fomule : =INDIRECT("L"&LIGNE(zone_ligne)&"C"&MIN(SI(ESTVIDE(zone_ligne);257;
COLONNE(zone_ligne)));FAUX)
 

Pièces jointes

  • Courbes de poids 2015.xlsx
    142.5 KB · Affichages: 49
Dernière édition:

romain001

XLDnaute Nouveau
Re : Obtenir le contenu - première cellule non vide avec condition

Bonjour ERIC S
Quand je rentre ta formule {=SI(B3="";"";B3-INDEX(B:B;EQUIV(9^9;$B$2:B2;1)+1;1))} la plage B1:C32 est parfaite, sauf C36 et C40 qui ne donnent pas le bon résultat.

Mais comme je désire obtenir C2:C32 en grammes, j'écris {=SI(B3="";"";B3-INDEX(B:B;EQUIV(9^9;$B$2:B2;1)+1;1))*1000, et là, C11:C17 me donnent #VALEUR! comme résultat.

Et puis, comment faire pour obtenir un bon résultat en C2, si B2 est vide ou si B32 du mois précédent l'est aussi. Si j'ai créé la même plage pour tous les mois c'est pour pouvoir tenir compte des années bissextiles… Mais ça c'est une autre histoire.
 

ERIC S

XLDnaute Barbatruc
Re : Obtenir le contenu - première cellule non vide avec condition

Re

1/ remplace )*1000 par *1000) sinon, tu essaies de mulitiplier aussi les cellules vides = erreur

2/ tu peux reporter le dernier poids du mois précédent en ligne 1 (et le masquer si tu veux) (ou dans ta zonz 36 à 40 comme cela même un mois sans mesure te donnera l'information

3/ C36 : tu additionnes à partir de C3 or tes données démarrent en C2
 

romain001

XLDnaute Nouveau
Re : Obtenir le contenu - première cellule non vide avec condition

Je n'ai pas du bien comprendre, parce que quand je remplace =SI(B3="";"";B3-INDEX(B:B;EQUIV(9^9;$B$2:B2;1)+1;1))*1000 par =SI(B3="";"";B3-INDEX(B:B;EQUIV(9^9;$B$2:B2;1)+1;1)*1000), la valeur de C3 est de 126873 g. Mais ce n'est pas très grave. je peux supprimer complètement le *1000 et mettre les unités en kg.
De toutes façons MERCI beaucoup, le fichier est utilisable comme cela. J'essaie d'apprendre sur le tas, mais je ferai peut-être mieux d'aller faire du tricot.
romain001
 

romain001

XLDnaute Nouveau
Re : Obtenir le contenu - première cellule non vide avec condition

Bonjour
Encore une petite chose.
Pour obtenir le résultat en C2, il faut que la formule utilise la colonne B de l'onglet précédent. On pourrait utiliser la dernière cellule du mois, mais pour les années bissextiles on est obligé de retrouver la première cellule nonvide de l'onglet précédent.
Je me bat avec la fonction INDIRECT, mais sans résultat.
Comment dois-je faire
Merci
 

ERIC S

XLDnaute Barbatruc
Re : Obtenir le contenu - première cellule non vide avec condition

Re

il doit surement y avoir moins tordu mais bon
regarde en B1 pour maj auto du mois
insertion ligne 2 pour report
en B2 récup feuille précédente

A tester
 

Pièces jointes

  • courbes-de-poids-2015.xlsx
    106.5 KB · Affichages: 51

romain001

XLDnaute Nouveau
Re : Obtenir le contenu - première cellule non vide avec condition

Bonjour
C'est vrai, je n'aurais pas pensé à utiliser B1.

Mais dans ton exemple, quand je copie Mai!C3 en Mai!C2, j'obtiens +100 comme résultat alors que je devrais obtenir 0. (Mai!C2 - Avril!B31 = 0)
Il y a encore quelque chose que je n'ai pas comprise.
 

ERIC S

XLDnaute Barbatruc
Re : Obtenir le contenu - première cellule non vide avec condition

Re

il ne faut pas tirer la formule sur la ligne de report (ligne2)
la ligne de report te sert à récupérer en B2 la dernière valeur du mois précédent, c'est tout
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista