Dernière cellule non vide

Résolu
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

  1. Contributeur
    Bonjour,

    essaies
    lignedoub = Columns("L").Find("*", , , , , xlPrevious).Row
    1. 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
      1. Contributeur
        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
      2. 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
      3. Contributeur
        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 {}
      4. 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
      5. Contributeur
        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