Dernière valeur non nulle d'une colonne

zouizoui Messages postés 4 Statut Membre -  
 zouizoui -
Bonjour à tous,

je cherche à récupérer dans une macro VBA le numéro de la ligne contenant la dernière valeur non nulle d'une colonne en partant du bas..
Pour une valeur non vide c'est simple mais non nulle, c'est une autre histoire
J'ai tourné le problème dans tous les sens cet après-midi, je ne vois vraiment pas comment m'y prendre..

Help!! :-(

4 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Le plus simple et le plus rapide je pense est de se servir des fonctions feuille.
    Défini sur ta feuille un nom ligMaxNZ avec cette formule :
    =MAX((DECALER($A$1;;;NBVAL($A:$A);)<>0)*LIGNE(DECALER($A$1;;;NBVAL($A:$A);))) 
    et dans le code :
    lig = [ligMaxNZ]

    ou bien tu traduis en anglais la formule si tu préfères la calculer dans le code avec Evaluate()
    eric

    En essayant continuellement, on finit par réussir.
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    0
  2. zouizoui Messages postés 4 Statut Membre
     
    Bonjour Eric,

    Merci pour ta réactivité.
    Je viens de tester la formule dans la feuille de calculs, malheureusement ça ne fonctionne pas : il me revoit bien une valeur mais elle ne correspond pas au numéro de ligne contenant la dernière valeur non nulle de ma colonne...
    0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Si tu la mets dans une cellule il faut la valider en matriciel : Ctrl+Shift+Entrée
    Dans un nom, comme je te le préconisais, la validation est matricielle d'office.
    J'ai également supposé qu'il n'y avait pas de cellules vides
    https://www.cjoint.com/?DIssTuSEMCL

    eric
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ou une boucle si tu préfères :
      Private Sub CommandButton2_Click()
          Dim lig As Long
          For lig = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
              If Cells(lig, "A") <> 0 Then Exit For
          Next
          MsgBox "Ligne = " & lig
      End Sub

      S'il peut y avoir du texte il faudra compléter le test.

      eric
      0
  4. zouizoui
     
    Super Merci Eric!

    Ca marche nickel!!
    0