Dernière cellule non vide

Résolu/Fermé
Ziface Messages postés 26 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 18 février 2015 - 12 févr. 2014 à 11:02
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 13 févr. 2014 à 15:27
Bonjour à la communauté,

Je me permets de créer ce post malgré le nombre faramineux de sujets similaires sur le forum.
En fait je cherche à me renvoyer le numéro de la dernière ligne vide d'une colonne avec la formule suivante :

lignedoub = Range("L" & Rows.Count).End(xlUp).Row

Formule que j'ai déjà utilisée sur d'autres codes mais le seul HIC que je rencontre aujourd'hui c'est que mes cellules contiennent une formule (=IF(AND(ISBLANK(G13);ISBLANK(K13) ..... ))) donc malgré l'apparence qu'elles ont d'être vides, elles ne le sont pas vraiment, et je ne sais pas trop comment contourner ce problème ...

J'espère que vous pourrez m'aider.

Cdt.

Ziface

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 févr. 2014 à 11:51
Bonjour,

essaies
lignedoub = Columns("L").Find("*", , , , , xlPrevious).Row
0
Ziface Messages postés 26 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 18 février 2015
12 févr. 2014 à 13:24
Bonjour Michel,

Merci pour ta réponse mais malheureusement cela ne détecte pas la cellule que je souhaiterais.

En fait j'ai ma colonne L où toutes les cellules contiennent la formule suivante :

=IF(AND(ISBLANK(G7);ISBLANK(K7));" ";IF((SUM(H7:I7))=3;"Out of order";IF((SUM(H7:J7))>3;"Out of order";IF((SUM(H7:J7))=3;"Finished";"In progress"))))

En fait ca m'affiche, soit " " (rien) soit "Out of Order" soit "Finished" ou soit "In progress"

Et ce que j'aimerais c'est que, la cellule qui a comme statut " " soit détecté comme vide pour pouvoir utiliser Range("L" & Rows.Count).End(xlUp).Row

A votre avis est-ce que c'est possible ?

Merci.

Ziface
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 févr. 2014 à 14:02
Tu écris
le numéro de la dernière ligne vide d'une colonne avec la formule suivante :
or d'après ta formule
IF(AND(ISBLANK(G7);ISBLANK(K7));" ";IF((S....
" " n'est pas vide car l'espace est un caractère. Il faut donc que tu marques "" et non " "

ma formule marche dans les 3 cas("" ou " " ou "out of..."): je viens de tester: elle la dernière ligne avec résultat de formule donc tu ajoutes +1 à la formule apparemment tu n'as pas envie de me croire ou je ne comprends pas ta question
0
Ziface Messages postés 26 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 18 février 2015
Modifié par Ziface le 12/02/2014 à 14:28
Michel,

Je viens de corriger le " " par "".

Mais sinon, je pense qu'on se comprend pas, certainement dû au fait que je me sois mal exprimé, car j'ai bien testé ta formule et cela me renvoie exactement la même valeur que la mienne.
Ca considère que les cellules "" (donc vides pour moi) contiennent bien quelque chose, contrairement à ce que je souhaiterais

Et quand je dis :
Et ce que j'aimerais c'est que, la cellule qui a comme statut " " soit détecté comme vide pour pouvoir utiliser Range("L" & Rows.Count).End(xlUp).Row
Je pourrais aussi bien dire :
Et ce que j'aimerais c'est que, la cellule qui a comme statut " " soit détecté comme vide pour pouvoir utiliser Columns("L").Find("*", , , , , xlPrevious).Row

Peu m'importe mais les deux me renvoient le même résultat et considèrent que "" n'est pas vide
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 12/02/2014 à 15:38
Ces histoires de vide, rien, zéro sont toujours sources de mal entendu ! comme disait Raymond Devos

si j'ai compris, une formule pour trouver la dernière cellule sans "", mais uniquement résultat d'une formule (rectifie le " " en "")
=MAX(SI(L2:L100<>"";LIGNE(L2:L100)))
anglophone
MAX(IF(L2:L100<>"",ROW(L2:L100)))
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule; Excel encadre alors automatiquement la formule par des {}
0
Ziface Messages postés 26 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 18 février 2015
13 févr. 2014 à 09:32
Merci Michel de prendre un peu de ton temps pour venir à mon secours.

Mais par contre je crois qu'on s'égare sur ce que je veux faire, je vais tenter de reposer le problème le plus clairement possible.

Suivant cette formule :
lignedoub = Range("L" & Rows.Count).End(xlUp).Row
ou bien
lignedoub = Columns("L").Find("*", , , , , xlPrevious).Row

Je cherche à avoir le numéro de ligne de la dernière cellule vide rencontrée sur la colonne L.. On est d'accord ?

Toutes les cellules parcourues contiennent la formule suivante :
=IF(AND(ISBLANK(G7);ISBLANK(K7));"";IF((SUM(H7:I7))=3;"Out of order";IF((SUM(H7:J7))>3;"Out of order";IF((SUM(H7:J7))=3;"Finished";"In progress"))))

Et ont donc un statut soit "", soit "In progress", soit "Out of Order"

Donc mon problème c'est que
lignedoub = Columns("L").Find("*", , , , , xlPrevious).Row
s'arrete même sur une cellule ayant pour statut "" alors que j'aimerais que ce soit invisible et que ca considère que c'est une cellule vide malgré la formule.et que continue jusqu'au rencontrer un 'In progress" ou un "Out of order".

J'espère que j'ai été un peu plus claire.

Et encore merci de ton aide Michel.

Cdt.

Ziface
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 févr. 2014 à 09:52
Bonjour

as tu essayé en adaptant
=MAX(SI(L2:L100<>"";LIGNE(L2:L100)))
anglophone
MAX(IF(L2:L100<>"",ROW(L2:L100)))
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule; Excel encadre alors automatiquement la formule par des {}

petite maquette de travail
le +1 est pour indiquer la première cellule égale à ""
https://www.cjoint.com/?3BnjZ6MZlcn
0