Vb: comment trouver la dernière ligne "non vide" d'une feuille excel

bendrx Messages postés 2 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 30 novembre 2006 - 29 nov. 2006 à 17:01
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 - 30 nov. 2006 à 14:54
Tout est dit: comment trouver la dernière ligne "non vide" d'une feuille de classeur excell ?

j'ai trouvé ce code qui me renvoie le nb de ligne :
Total_nb_ligne_source = Selection.SpecialCells(xlCellTypeLastCell).Row

mais lors de mes tests:
la première exécution c'est bien déroulée (valeur retournée correct)
puis depuis que j'ai ajouté un espace " " dans une cellule au hasard en bas de ma feuille,
même après l'avoir supprimé, effacer toutes les lignes, les cellules, etc. rien n'y fait ma variable Total_nb_ligne_source me sort une valeur incohérente qui sort de je ne sais ou.
(mais qui correspond a peu près à la position de l'espace que j'avais ajouté pour mon test)

Quelqu'un voit il une explication ?
Une autre astuce pour le nb de ligne peut être ?

Merci a vous

10 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
29 nov. 2006 à 17:05
Salut codyx > moteur de recherche > ligne vide excel > tu tomberas sur le snippet de mortalino.
PremiereLigneNonVide = PremiereLigneVide - 1

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
29 nov. 2006 à 17:06
J'ai fais le moteur de recherche comme je m'ennuis un peu!http://www.codyx.org/recherche.aspx?r=ligne+vide+excel

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
29 nov. 2006 à 18:33
Mais je crois que ca ne repond pas a ca question enfete moi ca me faisais pareil
et ca me fait encore pareil lol
jai tapé des textes dans des cellules jai tout supprimer mais maintenant mon programme demarre apres la derniere valeur ajoute puis supprimer cest bizarre
(voir derniere ressource que jai poste)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 nov. 2006 à 00:26
Avec Cells.Find("*",.......)
ou Cells.Find("",.......)
ça ne devrait pas arriver.

Avec UsedRange ou SpecialCells, Excel se souvient des cellules modifiées et ne donne pas l'heure juste.

MPi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 07:42
Et pourquoi ça ne répond pas à sa question, ça répond exactement à ce qu'il cherche, j'utile toujours ce snippet et ça marche très bien! Et si notre ami ne se manifeste pas on ne saura pas si c'est bon ou pas!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 08:41
Re: cela fonctionne très bien:

Dim DerniereLigne As Long


Public Function PremiereLigneVide(Colonne As Integer) As Long


    PremiereLigneVide = Columns(Colonne).Find("", , , , xlByRows, xlNext).Row
    DerniereLigne = PremiereLigneVide - 1
   
End Function

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
bendrx Messages postés 2 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 30 novembre 2006
30 nov. 2006 à 10:55
merci d'etre si réactif (moi j'avais quitté le bureau...)

Pour vos réponses:
OK, cela fonctionne, mais ne répond pas tout a fait à mon problème qui est de comprendre pourquoi (sans vous paraitre complètement borné ;o) l'utilisation de "xlCellTypeLastCell" nous renvoi n'importe quoi ??

ref: Total_nb_ligne_source = Selection.SpecialCells(xlCellTypeLastCell).Row

(...donc je ne clic pas sur "réponse acceptée" tout de suite)
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 11:06
Re: ça marche très bien chez moi:

Worksheets("Feuil1").Activate
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate


DerniereLigne = Selection.SpecialCells(xlCellTypeLastCell).Row
DermierColonne = Selection.SpecialCells(xlCellTypeLastCell).Column

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 nov. 2006 à 11:56
Drikce06:
essaie ton code comme ceci sur une feuille vierge

Dim DerniereLigne, DerniereColonne

ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate

DerniereLigne = Selection.SpecialCells(xlCellTypeLastCell).Row
DerniereColonne = Selection.SpecialCells(xlCellTypeLastCell).Column

MsgBox DerniereLigne & vbCrLf & DerniereColonne

Maintenant, écris quelque chose dans une cellule, validé avec Enter, puis efface cette cellule et refais le test... Excel se souvient de cette cellule. Pourquoi ? ça ne je saurais le dire... UsedRange agit de la même façon.

La seule raison à laquelle je pense, c'est qu'Excel emmagasine les actions pour pouvoir faire un "Undo". Avec le code que j'ai mis, on voit qu'Excel se souvient de la cellule effacée. Si on enregistre et ferme le classeur et qu'on l'ouvre à nouveau, Excel ne se souvient plus de ce changement...

MPi
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 14:54
Oui MPI tu as résond, pour palier cela, il faut qu'il oublie le undo, un save le fait mais si chaque fois tu sauve ton classeur avant de faire ce code c'est un peu chiant, mais ça marche! J'essaye de voir comment supprimer le undo qu'il a en mémoire sans passer par un save!

ThisWorkbook.Save
Worksheets("Feuil1").Activate
Cells.Select
DerniereLigne = Cells.SpecialCells(xlCellTypeLastCell).Row
DermierColonne = Cells.SpecialCells(xlCellTypeLastCell).Column

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Rejoignez-nous