Calcul du nombre de ligne

Bonjour,

Je débute en VBA

je cherche la formule pour calculer le nombre de ligne de mon fichier (onglet GESSICA_trans) pour que je puisse après effectuer plusieures manip avec.

Actuellement, comme je ne sais pas comment faire, je selectionne toutes les lignes jusqu'a la fin donc jusqu'a 1048576 lignes pour etre sure de toutes les prendre

le souci, c'est que ça mets enormement de temps (1h30)

donc avec le nombre de ligne exact, j'irai plus vite.

Si vous arrivez a m'aider ))

Voici mon code (que j'ai fais par enregistrement) :

Private Sub CommandButton4_Click()

'TRIE par articles et date de début

Windows("RESULTAT_SUITE.xlsm").Activate

Sheets("GESSICA_trans").Select

'j'aimerais ici trouver le nombre de lignes de la colonne A

'j'ai déja essayé ce code mais ça ne marche pas ...

' 'calcul le nombre de lignes

DerniereLigne = Range("A1").End(xlDown).Row 'pour interroger le nb de lignes

With Sheets("GESSICA_trans").Columns("A:F").Select

ActiveWorkbook.Worksheets("GESSICA_trans").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("GESSICA_trans").Sort.SortFields.Add Key:=Range( _

"A2:A1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

ActiveWorkbook.Worksheets("GESSICA_trans").Sort.SortFields.Add Key:=Range( _

"E2:E1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

End With

With ActiveWorkbook.Worksheets("GESSICA_trans").Sort

.SetRange Range("A1:F1048576")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

j'ai mis le fichier en PJ

Merci a ceux qui pourront m'aider.

Bonne journée

568resultat-suite.xlsx (114.06 Ko)

Avec ce code, tu vas stocker le nombre de lignes de la colonne A (sans compter la première ligne Cod art perm) dans ta variable nbLignes :

Dim nbLignes As Integer
nbLignes = Range("A2", Selection.End(xlDown)).Cells.Count

MsgBox nbLignes

Msgbox juste pour info, tu peux supprimer cette ligne de ton code final

le code ne marche pas :'(

il me dit erreur d'execution '1004'

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

autant pour moi...

Comme ça, ça devrait être résolu

Dim nbLignes As Integer

Range("A2").Select
nbLignes = Range("A2", Selection.End(xlDown)).Cells.Count

MsgBox nbLignes

ok, alors, ça fonctionne sur mon fichier test que j'ai joint.

Mais quand je l'ajoute a mon fichier ou ya déja d'autres macro et mon fichier est sur le réseau, ça ne marche pas.

Question :

comme j'ai fais ma macro avec enregistrements, peux t on rajouter du code sur un même bouton ou ya déja des macro avec enregistrements ?

j'ai essayé de créer un nouveau bouton pour juste ce nouveau code pour savoir le nb de lignes mais meme avec un nouveau bouton ça ne marche pas

peut etre y a t il une taille limite d'enregistrement de macro pour une feuille ou un bouton ?

savez vous pourquoi ?

Momo91 a écrit :

ok, alors, ça fonctionne sur mon fichier test que j'ai joint.

Mais quand je l'ajoute a mon fichier ou ya déja d'autres macro et mon fichier est sur le réseau, ça ne marche pas.

Difficile de répondre sans avoir accès au fichier original... faudrait voir à quel niveau de ton script tu places le code, voir ce que ça donne en exécutant la macro pas à pas.

ba j'aurais bien aimé mais le fichier est sur le réseau donc je ne peux pas

j'ai créé un nouveau bouton juste pour calculer le nb de lignes

j'ai "bidouiller" pour essayer de trouver une solution, je n'ai plus de message d'erreur

j'ai rajouté with et end with et ça "marche" sauf que le resultat du nombre de ligne est 1

or il y a 3332 lignes pourtant...

voici mon code du bouton :

Private Sub CommandButton4_Click()

Windows("RESULTAT_SUITE.xlsm").Activate

Sheets("GESSICA_trans").Select

With Sheets("GESSICA_trans").Range("A1").Select

Dim NbLignes As Integer

NbLignes = Range("A2").End(xlDown).Cells.Count

MsgBox NbLignes

End With

End Sub

si tu modifies le code, ça va pas le faire !!!

Momo91 a écrit :

NbLignes = Range("A2").End(xlDown).Cells.Count

moi, je t'ai proposé ça :

nbLignes = Range("A2", Selection.End(xlDown)).Cells.Count

ce qui n'est pas tout fait pareil...

oui je sais bien mais quand me mets ton code il me met un message d'erreur

"erreur d'execution '1004':

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

alors que quand je mets ça :

NbLignes = Range("A2").End(xlDown).Cells.Count

il ne me met pas le message d'erreur mais ne compte pas bien

Bonjour,

Tu peux essayer comme cela

Private Sub CommandButton4_Click()
'TRIE par articles et date de début
Windows("RESULTAT_SUITE.xlsm").Activate
With ActiveWorkbook.Worksheets("GESSICA_trans")
    'calcul le nombre de lignes
    DerniereLigne = .Range("A1").End(xlDown).Row
    .Columns("A:F").Select
    With .Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A2:A" & DerniereLigne), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("E2:E" & DerniereLigne), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A1:F" & DerniereLigne)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

A+

ben, je sais pas mais chez moi ça marche :

    'TRIE par articles et date de début
   Windows("RESULTAT_SUITE.xlsm").Activate
    With ActiveWorkbook.Worksheets("GESSICA_trans")
        'calcul le nombre de lignes

    Dim nbLignes As Integer

    Range("A2").Select
    nbLignes = Range("A2", Selection.End(xlDown)).Cells.Count

    MsgBox nbLignes

        .Columns("A:F").Select
        With .Sort
            .SortFields.Clear

etc...

essaye d'insérer le code comme ça

merciiiiiiiiiiiiiiiii frangy, ça marche ))

pour me coucher moin bete ce soir, pourquoi y a t il ce point avant range ?

ça correspond a quoi car j'ai l'impression que c'est ça qui fait que ça marche

Le point avant Range indique que l'instruction se rapporte à l'objet précédé de With.

With ActiveWorkbook.Worksheets("GESSICA_trans")
   DerniereLigne = .Range("A1").End(xlDown).Row
End With

est équivalent à

DerniereLigne = ActiveWorkbook.Worksheets("GESSICA_trans").Range("A1").End(xlDown).Row

A+

Parfait !!

Merci beaucoup beaucoup pour l'aide )

Merci a toi aussi Game over

Rechercher des sujets similaires à "calcul nombre ligne"