Trouver la 1ère ligne vide d'une feuille excell

Résolu
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008
-
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008
-
Bonjour,

Tout est dans la question. Je cherche le code qui me permettrai de trouver quel est la 1ère ligne entièrement vide d'une feuille excell.

Merci d'avance.

Oliv

17 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Pense a regarder sur www.codyx.org, il y a des petit morceaux de codes tout fait (ou facile a adapter)
et notament celui ci

@+,   Ju£i?n
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
Autrement, tu as la solution que Mortalino entre autres, ou moi même, donnons à longueur de temps sur le forum (finalement, un bout du forum dédié à Excel, ça serait quand même 'achement bien ) :

Dim PremiereLigneVide as string
PremiereLigneVide = Worksheets("Feuil1").Range("A1").End(xlDown).Address

Tu te positionnes dans une colonne (moi, en A1), et tu vas chercher la première ligne vide à partir de cette cellule.
Le .address te remonte les coordonnées de la première cellule vide sous la forme $A$100 par ex. (tu peux changer la référence avec les options de End(xlDown) pour obtenir sous la forme R100C1 par ex)
Plus qu'à travailler le contenu de ta variable PremiereLigneVide pour sortir le numéro de la ligne qui t'intéresse (Recherche par ex du dernier $ avec la formule InStrRev et récupération de tout ce qui est à droite, ou alors, récupérarion de tout ce qui est entre le R et le C, ...)

Molenn
Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
bonjour,
quelque chose comme ça :

Sub test()
Do While Not Y
k = k + 1
i = Cells(k, 256).End(xlToLeft).ColumnIf i 1 And Cells(k, i) "" Then Y = True
Loop
MsgBox k
End Sub

A+
Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
bonjour,
256 est le nombre maximum de colonnes dans Excel...

Rows("1:" & LastLine).Select

A+
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

quand tu exécutes ma fonction (merci Julien pour le lien  ), le Set MaCellule détermine la cellule de départ pour la recherche.
Il est évident que si A2 est vide, la recherche s'arrête.
Pour palier ce problème, il faut partir de tout en bas du tableur et remonter. Par exemple, pour rechercher la première ligne vide de la colonne A :

For j = 1 To nb
        Worksheets(j).Select
        Set MaCellule = [A65536] 'ça c'est la dernière cellule du tableur
        LastLine = PremiereLigneVide(MaCellule, xlByRows, xlPrevious)
   ' avec Previous, on remonte les cellules
        Cells(LastLine, 1) = "*"
 Next j

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
174
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
15 février 2007
2
bonjour,

je pense qu il faut fixer une colonne maximum. Au pire, la mettre relaitvement grande ....

Attention a la vitesse du traitement ceci dit
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

????????

Je ne comprend pas ce que tu veu dire.

Pour recibler un peu plus la chose, mon pb initiale consiste a trouver la 1ère ligne completement vide du fichier afin de mettre une * dans la 1ère cellule de cette ligne. Cela représente un indicateur de fin utiliser dans la suite du code.
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Ok c'est noté, j'essaie les 2 solus de suite et merci pour le lien du site qui devrait savérer utile dans l'avenir.
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Ok c'est noté, j'essaie les 2 solus de suite et merci pour le lien du site qui devrait savérer utile dans l'avenir.
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Dsl pour le doublon, je comprend pas comment il est aparru surtout à 4 minute d'intervalle.

??
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

> [auteurdetail.aspx?ID=407787 olivier857]
: 4 secondes tu veux dire!!!!

Note: ne pas oublier reponse accpetée sur les posts qui ont pu t'aider dans la resolution de ton probleme
@+,   Ju£i?n
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Oui exact
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

je ne comprend pas avec les 2 codes j'obtient un numéro d eligne qui n'est pas vide.
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Voici le code que j'utilise :

Dim MaCellule As Range
 
Public Function PremiereLigneVide(CelluleDepart As Range, MonOrdre As XlSearchOrder, MaDirection As XlSearchDirection) As Long
    If MonOrdre = xlByRows Then
        PremiereLigneVide = Columns(MaCellule.Column).Find("", MaCellule, , , MonOrdre, MaDirection).Row
    Else
        PremiereLigneVide = Columns(MaCellule.Column).Find("", MaCellule, , , MonOrdre, MaDirection).Column
    End If
End Function
    
For j = 1 To nb
        Worksheets(j).Select
        Set MaCellule = [a1]
        LastLine = PremiereLigneVide(MaCellule, xlByRows, xlNext)
        Cells(LastLine, 1) = "*"
 Next j


Le pb est le suivant :
Ca me met bien une étoile dans la colonne A de chaque feuille mais pas au bon endroit.
Ca la place dans la 1ère cellule vide de la colonne A même si la ligne n'est pas complètement vide. 
Le test ne test donc pas si la ligne entière est vide mais s'arette au fait est que la celule de la 1ère colonne est vide.

Quelqu'un a t'il une solution ?
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Merci galopin1, cette fois c'est bien ce que je voulais.

C'est pas entièrement dynamique puisqu'il faut fixer manuellement la colonne limite du test, mais dans mon cas ca ne pose pas de pb.
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Pour finir mon travail il me reste une dernière étape à effectuer. Celle-ci consiste a créer un nouvel onglet dans lequel je recapitule le contenu de tous les autres onglets, càd les lignes situé au dessus de l'* positionné dans chque feuille. La recap ce fait donc en copiant les lignes sélectionnées, les unes en dessous des autres dans ce nouvel onglet.

Mon pb est simple, comment effectuer la selection des lignes situé au dessus de l'* sachant que je connais le numéro (variable LastLine) de la ligne contenant l'*.

Une selection basic se fait de la manière suivante :
rows("1:10").select

or dans mon cas le 10 correspond à une variable et la méthode suivante ne marche pas :
Rows("1:," & LastLine).select

Alors comment dois-je  faire ?
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Ok je ne savais pa sque 256 était le max de colonne. Dans ce cas la c'est parfait.
Et ok Rows("1:" & LastLine).Select. J'était tellement sure d'avoir bien écrit cette ligne que j'avais pas vu que j'avais laissé une virgule