christianwtd a écrit :
Henri Boyet a écrit :
Bonjour,
Dans la cellule E101, j'ai la formule "=E48+SOMME(C50:C100)"
Dans la cellule E145, j'ai la formule "=E101+SOMME(C103:C144)"
Dans la cellule E202, j'ai la formule "=E145+SOMME(C147:C201)"
etc
Toutes les cellules de la colonne E sont vides, sauf celles contenant les formules comme ci-dessus. Le problème est que ces cellules non vides n'ont pas un écart constant et que je ne peux pas allonger ma feuille avec un simple copier-coller ; je suis obligé de modifier à la main les références des cellules dans la formule. Il faudrait donc que je puisse trouver l'adresse de la première cellule non vide rencontrée en remontant la colonne. Je suppose qu'il faudrait utiliser une subtile combinaison de ESTVIDE, ESTNA et RECHERCHEV( ) mais malgré mes recherches dans les how-to et le site de Christian, je ne m'en sors pas.

Merci pour toute aide,
Henri


Bonjour Henri, et tout le monde,


Ma réponse est peut-être approximative.
D'abord, je te conseille de placer cette formule dans une colonne proche
=LIGNE()*ESTNUM(C50)
si tu est dans la ligne 50, et ensuite tu recopies la formule

Ensuite, pour connaître la ligne qui contient la première valeur :
=MIN(cellule début:cellule fin)
et
=MAX(cellule début:cellule fin)
pour lire la plage des =LIGNE()*ESTNUM(xxxx)


Suite...
Je décompose ta première formule, il te suffira d'adapter pour les autres

SOMME(C50:C100)
Il faut jouer avec le couple INDIRECT et ADRESSE
Pour C50
=ADRESSE(50; 3)
retourne $C$50
A noter (pour info) le dernier paramètre optionnel de 1 à 4. Si tu écris :
=ADRESSE(50; 3; 4)
retourne C50 (adressage relatif)

Pour C100
=ADRESSE(100; 3)
retourne $C$100

Pour assembler :
=ADRESSE(50; 3) & ":" & ADRESSE(100; 3)
retourne $C$50:$C$100
Pour info, la fonction CONCATENER est totalement inutile...

Ensuite il faut appliquer INDIRECT.
=INDIRECT(ADRESSE(50; 3) & ":" & ADRESSE(100; 3))
En l'état, c'est une erreur qui est retournée

Donc, au final :
=SOMME(INDIRECT(ADRESSE(50; 3) & ":" & ADRESSE(100; 3)))
Te fournira le bon résultat, puisqu'on arrive (ouf) à l'équivalent de :
=SOMME(C50:C100)

J'espère que tu as pigé, c'est pas très évident. J'espère surtout pouvoir t'aider un peu.

Bon surf,
Christian

Bonsoir Christian et grand merci pour ta réponse rapide et très développée !
Cela n'a pas été simple. Je n'ai pas fait exactement comme tu l'indiquais, peut-être parce que je n'avais pas assez bien décrit ma feuille. Mais pour l'essentiel, je t'ai suivi :

Dans les lignes de données, 2 cellules supplémentaires :
En F100 : =LIGNE()*ESTNUM(E100)
En G100 : =MAX($F$1:F99)

Dans la ligne de calculs, 3 cellules supplémentaires :
En F101 : =LIGNE()*ESTNUM(E101)
En G101 : =MAX($F$1:F100)
En H101 : =ADRESSE(2+G101;3;1)
et miracle, en E101, à la place de mon ancienne formule : =INDIRECT("E"&G101)+SOMME(INDIRECT(H101):C100)

Je suppose que je pourrais condenser pour avoir une formule plus longue et moins de colonnes, mais pour l'instant, ça me convient très bien, il va suffire de cacher les colonnes supplémentaires.

Je pense que ça aurait été plus simple avec la notation RC mais apparemment, elle n'est toujours pas présente.

Henri





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org

Répondre à