Dernière valeur non nulle d'une colonne

zouizoui Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 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!! :-(


A voir également:

4 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
zouizoui Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
zouizoui
 
Super Merci Eric!

Ca marche nickel!!
0