Déterminer le nombre de ligne d'un classeur fermé

Bonjour,

Pour un projet, je cherche à trouver le nombre de ligne d'un classeur fermé pour cela j'utilise le code suivant:

Private sub nb_lignes

Dim sheet as Worksheet
Dim xlApp As New Excel.Application
Dim xlBook As New Excel.Workbook
Dim xlSheet As New Excel.Worksheet
Dim nl as Integer

Set xlBook = xlApp.Workbooks.Open(nomfichier)

For Each sheet In xlBook.Worksheets
        Set xlSheet = xlBook.Sheets(sheet.Name)
        nl = Cells(Rows.Count, 1).End(xlUp).Row
        Msgbox ("La feuille " & sheet.Name & " contient " & nl & " lignes dans la colonne1")
Next

xlBook.Close (False) 
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

Sauf que ce code me donne le nombre de ligne de la feuille d'où je lance la macro à chaque fois.

J'ai réfléchis sur ce problème mais je ne ne trouve pas de solution.

Si quelqu'un a une idée, je suis preneur.

Bonjour,

Blobfish a écrit :

For Each sheet In xlBook.Worksheets

Set xlSheet = xlBook.Sheets(sheet.Name)

nl = Cells(Rows.Count, 1).End(xlUp).Row

Msgbox ("La feuille " & sheet.Name & " contient " & nl & " lignes dans la colonne1")

Next

S

sans précision de votre part vba prend sa (code en rouge) comme les cells de la feuille active.

Set xlSheet = xlBook.Sheets(sheet.Name)

à quoi sert cette affectation ? dans une boucle "For each" la variable (ici sheet) peut être utiliser

remplacer le code en rouge par

sheet.Cells(Rows.Count, 1).End(xlUp).Row

Je n'avais pas pensé à ça pour le Set xlSheet = xlBook.Sheets(sheet.Name).

Par contre, j'ai remplacé ma ligne par la votre et je tombe sur l'erreur suivante :

Ereur d'exécution '1004':

Erreur définie par l'application ou par l'objet

je peut voir le code après la modification svp ??

et à quel ligne apparaît cette erreur ??

Voici le code et en surligné la ligne d'où provient l'erreur

Private sub nb_lignes

Dim sheet as Worksheet

Dim xlApp As New Excel.Application

Dim xlBook As New Excel.Workbook

Dim xlSheet As New Excel.Worksheet

Dim nl as Integer

Set xlBook = xlApp.Workbooks.Open(nomfichier)

For Each sheet In xlBook.Worksheets

nl = sheet.Cells(Rows.Count, 1).End(xlUp).Row

Msgbox ("La feuille " & sheet.Name & " contient " & nl & " lignes dans la colonne1")

Next

xlBook.Close (False)

xlApp.Quit

Set xlSheet = Nothing

Set xlBook = Nothing

Set xlApp = Nothing

end sub

Bonjour,

lors de l'utilisation des objets type plage de cellules : Range, Cells, Rows, Columns. , il faut toujours préciser la feuille parente .

et la tu l'as oublié devant le Rows...

nl = sheet.Cells(sheet.Rows.Count, 1).End(xlUp).Row

Effectivement, ça fonctionne comme ça.

Merci beaucoup !

Rechercher des sujets similaires à "determiner nombre ligne classeur ferme"