Excel : chercher dernière cellule nonvide dans même colonne

ccciolll

Membre expert
Club iGen
Bonjour,

je suis à la recherche d'une formule (pas une macro si possible) qui permettrait de dire à ma cellule, par exemple G6, de chercher dans toutes les cellules avant elle dans la même colonne (soit de G1 à G5), la dernière qui ne soit pas vide (pour ensuite lui demander une action en fonction du contenu de cette cellule, mais là c'est une autre histoire).

Je souhaite trouver une formule « dynamique » (je ne sais pas si la formule convient) et non pas figée.

Par exemple, là j'ai fait comme ça dans la cellule Z7 :
=SI(ESTVIDE(Z6);Z5+Z$2;Z$2

ce qui signifie que si Z6 (la cellule précédente dans la colonne) est vide, il va prendre le contenu de Z5 et l'ajouter à Z$2 (avec le $ pour que ça reste à 2 quand je vais dupliquer ma formule, car en ligne 2, j'indique l'unité) et sinon, il reprend uniquement le contenu de z$2.

Vous me direz peut-être : pourquoi tu veux faire ça ?

Eh ben voilà, dans une colonne, j'indique un article.
en dessous, une unité, c'est le nbre d'unité de cet article qui doit s'ajouter à chaque période.
Les périodes sont classées en lignes, une période durant toujours au moins 2 lignes (mais parfois plus, c'est ça qui me pose problème, sinon je ferai un copier coller avec +2 en n° de ligne et ça irait)
Au début de chaque période (la première ligne d'une période, donc), je compte mettre la formule afin qu'il ajoute une unité au total d'article disponibles.
En dessous de la formule, les cellules restent vierges SAUF si qqun a pris le stock d'articles existant (il prend à chaque fois TOUT le stock, ça simplifie déjà un peu). Et dans ce cas, je mettrai dans n'importe laquelle des cellules sous celle de début de période, un code choisi "0" ou "x" ou juste n'importe quel texte, selon ce qui sera le plus simple ensuite pour la formule.

Je sais pas si je suis clair…

Donc exemple

A1 = nom de l'article = BOIS
A2 = qté ajoutée à chaque période = 3
A3 = début de la période 1 = formule spécifique à la première période qui va chercher la qté FIXE A$2 = 3
A4 = il ne se passe rien = rien
A5 = début de la période 2 = la fameuse formule que je ne sais pas faire, qui cherche la dernière cellule remplie au dessus d'elle, qui trouve "3" dans la cellule A3, et choisit alors l'action "ajouter le résultat trouvé à A$2", soit 3+3 = 6
A6 = il ne se passe rien = rien
A7 = il ne se passe rien = rien
A8 = il ne se passe rien = rien
A9 = début de la période 3 = la fameuse formule que je ne sais pas faire, qui cherche la dernière cellule remplie au dessus d'elle, qui trouve "6" dans la cellule A5, et choisit alors l'action "ajouter le résultat trouvé à A$2", soit 6+3 = 9
A10 = qqun prend le stock de cet article = je tape un code quelconque, voire juste du texte = X
A11 = il ne se passe rien = rien
A12 = début de la période 4 = la fameuse formule que je ne sais pas faire, qui cherche la dernière cellule remplie au dessus d'elle, qui trouve "x" (ou autre chose…) dans la cellule A10, et choisit alors l'action "indiquer le contenu de A$2" = 3

en plus lisible, ça donne (en rouge, les choses remplies à la main, en vert celles issues d'une formule)
BOIS
3

3
-
6
-
-
-
9
X
-
3


(j'ai mis un - pour les cellules vides)

Euh, voilà, j'ai du mal à l'expliquer mieux pour le moment.
 
Pas trop le temps ? Tu exagères !
Ah ma p'tite dame, les services de nos jours, c'est plus ce que c'était.

Bon sérieusement.
Je suis donc allé voir le lien, mais celui-ci part du principe « on cherche la dernière valeur dans UNE PLAGE PRÉCISE (A1:H30 en l'occurrence) »
Or ce n'est pas mon postulat de départ, car chercher dans une plage précise, à priori, je savais faire (enfin, disons plutôt j'avais RÉUSSI à faire, ce qui est un peu différent de SAVOIR).
Mais ma difficulté était de demander à ma formule, en gros : « remonte dans la colonne où tu te trouves, à partir de la cellule au-dessus de toi-même, et trouve moi la dernière valeur saisie ». Et ceci sans qu'une plage précise ne soit indiquée pour pouvoir la copier-coller « dynamiquement ».
Par contre il y a aussi d'autres articles similaires sur son site qui correspondraient un peu plus. Seul reproche à ce site : il explique peu à quoi servent les codes, il les livre brut de décoffrage, du coup je ne comprends pas forcément quelles variables je pourrais toucher pour que ça corresponde à mon problème.

Cela dit, en en discutant, je me demande si je pourrais pas partir de la formule A1:H30 vers laquelle tu m'as dirigé, et la modifier. Dans un genre, pour la cellule Z7, par exemple, lui indiquer la plage Z$2:Z6 ce qui signifierait « de celle du début de ma colonne et pas une autre (Z$2) à celle au-dessus-de toi (Z6) ». À la copie, il transformerait Z6 mais pas Z$2…
Mmh mmh, ça pourrait marcher. Faudrait que je trouve le moyen de le faire chercher de bas en haut (ou de haut en bas en cherchant la dernière cellule non-vide).

Bon, j'y retourne alors (désolé de réfléchir à voix haute, mais je crois que ça m'aide).

---------- Nouveau message ajouté à 12h06 ---------- Le message précédent a été envoyé à 11h50 ----------

Bob, bon, je vous fais part des avancées de mes réflexions.

Incapable de comprendre les explications du site proposé (ni de trouver où trouver les fichiers à télécharger dont il est question dans le rédactionnel), j'ai refait une recherche sur Google, et j'ai finalement trouvé une petite formule que j'ai adaptée à mon cas (toujours sur le postulat que ma colonne démarre à Z2 et que le premier résultat attendu est à Z7) :
=RECHERCHE(9^9;Z$2:Z6)
Et quand je copie cette formule, il étend bien la plage du début de la colonne à la dernière cellule avant celle concernée.

Bon.

2 ennuis.
1 ) La formule 9^9 ne recherche que des nombres (je crois que ça me conviendra, mais au cas où un jour je dois chercher du texte, j'aimerais savoir quoi mettre à la place de 9^9)
2 ) maintenant faut que j'arrive à combiner la recherche de la bonne cellule et sa valeur qui m'est donnée avec la formule ci-dessus, avec une formule SI / ELSE qui détermine le comportement à adopter et quoi faire de cette valeur.

Au travail (enfin peut-être «*à table » avant)

---------- Nouveau message ajouté à 12h13 ---------- Le message précédent a été envoyé à 12h06 ----------

Je crois qu'en gros ça fera un truc du genre (attention, ce qaui est ci dessus c'est du langage de moi, pas du excel…

SI (=RECHERCHE(9^9;Z$2:Z6)) est égal à 0 : tu affiche la valeur Z$2 ; sinon : tu additionnes la valeur trouvée à la valeur de Z$2

En terme de « logique » ça vous parait correct ? Reste à trouver alors la syntaxe. Mais pas l'estomac vide, n'exagérons rien. à tout à l'heure pour de sémillantes aventures.
 
Bon, éh ben en fait, si je mets que des nombres, le truc est tout con en fait.
J'ai juste à mettre
=(RECHERCHE(9^9;Z$2:Z6)+Z$2)
et saisir un zéro quand je veux remettre dire que le stock a été pris.

Et ça marche, la formule se copie bien. (enfin je vais quand même aller la tester).

EDIT : je confirme, cette formule toute simple correspond à ce dont j'avais besoin.
 
Dernière édition:
  • J’aime
Réactions: momo78700
Ce message est un peu ancien mais Ô combien précieux. Je me suis inscrit juste pour te remercier ccciolll! Tu viens de régler un problème qui m'embete depuis TRES longtemps.
Donc merci mille fois pour ton message!