XL 2010 [Resolu]explication sur : trouve dernière ligne non vide même si formule

herve62

XLDnaute Barbatruc
Bonsoir
Je remet 100 balles dans le manicrack !! sur le sujet ; En faisant mon tri de fichier utile/pas utile je retombe sur un qu'un membre m'avait posté à l'époque sur le fait
de trouver la réelle ligne vide de données , Bof !! , car si l'on met une formule dans cette colonne et étirée jusqu'à xxx lignes le résultat est la dernière ligne avec formule
dans ce fichier 23
j'ai ajouté La fonction GetderligneTexte qui date d'une appli de 2011 c'est elle qui avait résolu mon souci ( j'étais encore sous 2007) par contre incorporée dans x exemples comme ici Cela ne Fonctionne PLUS ??? mais elle est toujours ok dans mon appli ... c'est là que je pige plus
Ce n'est pas moi qui ai écrit ces fonctions !!!
Avec le Xlup et col A , là aucun souci !!!! le Pb est en col B
Cela pourra peut être encore utile dans le futur donc si quelqu'un a l'explication ???
 

Fichiers joints

James007

XLDnaute Barbatruc
Bonsoir,

Avec Find, tu as toute la souplesse nécessaire ... puisque tu peux jouer avec xlFormulas ou avec xlValues pour la même colonne B ...

VB:
Sub DernLigne()
Dim der As Long
der = Worksheets("Feuil2").Columns("B:B").Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row
MsgBox "Dernière Ligne dans la Feuille est " & der
End Sub
 

patricktoulon

XLDnaute Barbatruc
re bonsoir
salut
MsgBox Evaluate("=MATCH(""*"",B1:B1000,-1)")
voila ;)

ca te donne la ligne ou il y a soit le dernier résultat d'une formule ou la dernière valeur
0 te donne la première
-1 te donne la dernière

Allez une autre
celle ci te donne la dernière occurrence de "a" de la colonne
MsgBox Evaluate("MAX(ROW(B1:B30)*(B1:B30=""A""))")
 
Dernière édition:

herve62

XLDnaute Barbatruc
re bonsoir
Bon j'ai mis vos propositions en test voir le fichier (Patrick 1 sur 2 :); James 0:rolleyes:
Sinon , le pire .... cela veut dire que il y a 10 ans le vba n'était pas le même que maintenant ? , car je me rappelle bien avoir galéré des jours ici , et autres forum pour trouver une solution , et qu'à l'époque personne ne proposait ce genre de réponse !!
C'était juste par curiosité et certainement utile pour d'autres ,. Mais juste une instruction !!! ? je prends pour tester dans d'autres fichiers de mon grenier ... si je retrouve
Bonne soirée
 

Fichiers joints

patricktoulon

XLDnaute Barbatruc
re
evaluate existe depuis longtemps
ELLE sert a évaluer une expression en l’occurrence ici ( la retranscription d'une formule en vba)

disons que cette fonction est multitool ;)

avant on l'avait même en excel (formule EVALUER) disparue des listes de formuleS dans les MEnu mais toujours utilisable
 

patricktoulon

XLDnaute Barbatruc
re

Bon j'ai mis vos propositions en test voir le fichier (Patrick 1 sur 2
????????????????????????????????????

VB:
Private Sub CommandButton1_Click()
dl = Evaluate("=MATCH(""*"",B1:B1000,-1)")
MsgBox "Patrick 1  : " & dl
dlig = Evaluate("MAX(ROW(B1:B1000)*(B1:B1000=""A""))")
If dlig <> 20 Then MsgBox "Patrick 2 : " & dlig & Chr(13) & "??"
 
End Sub
il est certain que "dlig = Evaluate("MAX(ROW(B1:B1000)*(B1:B1000=""A""))")" dans ton dernier fichier en exemple ne donnera rien tu n'a pas de cells avec juste "A"
 

herve62

XLDnaute Barbatruc
Re
james , stp , peux tu mettre ta proposition dans un de mes fichiers joint , car je vois pas ? merci
 

James007

XLDnaute Barbatruc
Re,

J'espère que tu ne doutes pas du fait que j'ai testé et bien re-vérifié AVANT de poster le Message # 2

en prenant ta Feuille 2 ... Colonne B ...

et en utilisant une première fois xlValues et une deuxième fois xlFormulas ... ;)
 

herve62

XLDnaute Barbatruc
mais enfin la REPONSE doit être 20 !! tout le temps ,non ???:eek:
Je veux bien tout ce que l'on veut , moi je vous laisse ce que j'ai avec vos codes
Donnez moi mon erreur !! elle doit y être ... mais où ??
 

Fichiers joints

patricktoulon

XLDnaute Barbatruc
re
non non non et non si tu cherche la chaine "A" comme dans la capture ca te donne zero et c'est normal
ne confond pas "*" et "a" dans les deux formules
 

patricktoulon

XLDnaute Barbatruc
trouve la derniere valeur vraiment ecrite reellement ou par formule
MsgBox Evaluate("=MATCH(""*"",B1:B1000,-1)")
trouve la derniere chaine "A" ou "a" dans la colonne ,a etant la chaine complète
MsgBox Evaluate("MAX(ROW(B1:B30)*(B1:B30=""A""))")

ton test
dlig = Evaluate("MAX(ROW(B1:B1000)*(B1:B1000=""A""))")
If dlig <> 20 Then MsgBox "Patrick 2 : " & dlig & Chr(13) & "??"


il sert a quoi??? a rien
tu recherche et teste quelque chose qui n'existe pas :rolleyes: et en plus tu dis que ca fonctionne pas :p:D
ca n'a pas de sens ou alors tu t' es mal exprimé sur tes intentions
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas