Trouver la 1ère ligne vide d'une feuille excell [Résolu]

olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 13:32 - Dernière réponse : olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention
- 28 oct. 2006 à 12:23
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
Afficher la suite 

17 réponses

Répondre au sujet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 oct. 2006 à 14:09
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jrivet
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 27 oct. 2006 à 14:38
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Molenn
galopin01 133 Messages postés lundi 4 octobre 2004Date d'inscription 14 octobre 2011 Dernière intervention - 27 oct. 2006 à 20:23
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de galopin01
galopin01 133 Messages postés lundi 4 octobre 2004Date d'inscription 14 octobre 2011 Dernière intervention - 28 oct. 2006 à 07:47
+3
Utile
bonjour,
256 est le nombre maximum de colonnes dans Excel...

Rows("1:" & LastLine).Select

A+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de galopin01
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 28 oct. 2006 à 10:39
+3
Utile
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>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
lilo44 174 Messages postés vendredi 25 janvier 2002Date d'inscription 15 février 2007 Dernière intervention - 27 oct. 2006 à 13:35
0
Utile
bonjour,

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

Attention a la vitesse du traitement ceci dit
Commenter la réponse de lilo44
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 13:44
0
Utile
????????

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.
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 15:18
0
Utile
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.
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 15:18
0
Utile
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.
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 15:21
0
Utile
Dsl pour le doublon, je comprend pas comment il est aparru surtout à 4 minute d'intervalle.

??
Commenter la réponse de olivier857
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 oct. 2006 à 15:31
0
Utile
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
Commenter la réponse de jrivet
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 16:25
0
Utile
Oui exact
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 16:34
0
Utile
je ne comprend pas avec les 2 codes j'obtient un numéro d eligne qui n'est pas vide.
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 27 oct. 2006 à 17:24
0
Utile
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 ?
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 28 oct. 2006 à 00:58
0
Utile
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.
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 28 oct. 2006 à 01:39
0
Utile
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 ?
Commenter la réponse de olivier857
olivier857 188 Messages postés mardi 21 décembre 2004Date d'inscription 10 avril 2008 Dernière intervention - 28 oct. 2006 à 12:23
0
Utile
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
Commenter la réponse de olivier857

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.