Dernière valeur non nulle d'une colonne

Fermé
zouizoui Messages postés 3 Date d'inscription jeudi 18 septembre 2014 Statut Membre Dernière intervention 24 octobre 2014 - 18 sept. 2014 à 16:51
 zouizoui - 19 sept. 2014 à 10:07
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 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 18/09/2014 à 17:07
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 jeudi 18 septembre 2014 Statut Membre Dernière intervention 24 octobre 2014
18 sept. 2014 à 17:45
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 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
18 sept. 2014 à 18:42
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 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
18 sept. 2014 à 19:57
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
Super Merci Eric!

Ca marche nickel!!
0