IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème pour compter les lignes [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 120
    Points : 293
    Points
    293
    Par défaut Problème pour compter les lignes
    Bonjour tout le monde,

    J'ai un petit problème au niveau d'un bout de code qui compte le nombre de ligne que j'ai dans une feuille. La feuille en question est "BDD", dans ce fichier j'ai approximativement 350 lignes, seulement, la variable où je stocke le nombre de ligne m'indique 16 555. Dans ce même classeur, j'ai une feuille "Salarie" où je compte aussi les lignes mais la le problème n'apparait pas et me donne bien le bon nombre de ligne.

    Code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Dim nbLigne_bdd As Long
        Dim nbLigne_salarie As Integer
        Dim plage_salarie As Range
        Dim plage_bdd As Range
     
        nbLigne_bdd = 0
     
        nbLigne_bdd = Worksheets("BDD").UsedRange.Rows.Count
        nbLigne_salarie = Worksheets("Salarie").UsedRange.Rows.Count
     
        Set plage_salarie = Worksheets("Salarie").Range(Worksheets("Salarie").Cells(1, 1), Worksheets("Salarie").Range("A1").End(xlDown).Offset(1, 0))
        Set plage_bdd = Worksheets("BDD").Range(Worksheets("BDD").Cells(1, 1), Worksheets("BDD").Range("A1").End(xlDown).Offset(1, 0))
     
        tab_salarie() = Application.Transpose(plage_salarie.Value)
     
     
        tab_bdd() = Application.Transpose(plage_bdd.Value)
    A savoir que les données sont importées depuis un fichier Xml à partir de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Private Sub Import_Click()
     
     
     
        Application.ScreenUpdating = False
     
     
     
        If Worksheets("BDD").Range("A1") = void And PDCA <> False Then
            With ActiveSheet.QueryTables.Add(Connection:="FINDER;" & PDCA, Destination:=Range("A1"))
                    .Name = "PDCA"
                    .FieldNames = True
                    .RowNumbers = False
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .BackgroundQuery = True
                    .RefreshStyle = xlInsertDeleteCells
                    .SavePassword = False
                    .SaveData = True
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .WebSelectionType = xlAllTables
                    .WebFormatting = xlWebFormattingNone
                    .WebPreFormattedTextToColumns = True
                    .WebConsecutiveDelimitersAsOne = True
                    .WebSingleBlockTextImport = False
                    .WebDisableDateRecognition = False
                    .WebDisableRedirections = False
                    .Refresh BackgroundQuery:=False
                End With
     
                Unload Me
            Else
     
            If PDCA <> False Then
                With ActiveSheet.QueryTables.Add(Connection:="FINDER;" & PDCA, Destination:=Worksheets("BDD").Range("A1").End(xlDown).Offset(1, 0))
                    .Name = "PDCA"
                    .FieldNames = True
                    .RowNumbers = False
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = False
                    .RefreshOnFileOpen = True
                    .BackgroundQuery = True
                    .RefreshStyle = xlInsertDeleteCells
                    .SavePassword = False
                    .SaveData = True
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .WebSelectionType = xlAllTables
                    .WebFormatting = xlWebFormattingNone
                    .WebPreFormattedTextToColumns = True
                    .WebConsecutiveDelimitersAsOne = True
                    .WebSingleBlockTextImport = False
                    .WebDisableDateRecognition = False
                    .WebDisableRedirections = False
                    .Refresh BackgroundQuery:=False
                 End With
     
     
                Cells(derlig, 1).EntireRow.Delete
     
                Call nouveau_salarie
     
                Unload Me
            Else
                Dim retour As Long
                retour = MsgBox(prompt:="Aucun fichier sélectionner", Buttons:=vbOKOnly)
     
            End If
        End If
     
     
    End Sub

    Hypothèses :

    - Les paramètres données pour mon code important le fichier Xml ne met pas à jour lorsque des lignes sont supprimées manuellement.

    - Le problème vient du type utilisé pour stocker la variable, le type est un long puisque cette feuille contiendra un nombre conséquent de données

    - Problème au niveau de la mémoire qui attribue à la variable une valeur qui ne lui ai pas destiné ( peu probable mais bon, j'ai pris en compte toutes les hypothèses ^^)

    Voila, si quelqu'un peut m'éclairer sur la nature de cette erreur.

    Merci,

    Thomas

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    D'après ton code, ça peut se traduire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    With Worksheets("BDD")
      nbLigne_bdd = .Range("A" & .Rows.Count).End(xlUp).Row
      Set plage_bdd = .Range("A1::A" & nbLigne_bdd)
    End With
    With Worksheets("Salarie")
      nbLigne_salarie = .Range("A" & .Rows.Count).End(xlUp).Row
      Set plage_salarie = .Range("A1::A" & nbLigne_bdd)
    End With
     
    ....
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre actif
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 120
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    Merci avec cette syntaxe et en adaptant un petit peu, ça marche même si je ne comprends pas trop pourquoi avec la syntaxe que j'ai utilisé, le compteur ne marchait pas

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour, apparemment, j'ai laissé une coquille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    With Worksheets("BDD")
      nbLigne_bdd = .Range("A" & .Rows.Count).End(xlUp).Row
      Set plage_bdd = .Range("A1::A" & nbLigne_bdd)
    End With
    With Worksheets("Salarie")
      nbLigne_salarie = .Range("A" & .Rows.Count).End(xlUp).Row
      Set plage_salarie = .Range("A1::A" & nbLigne_salarie)
    End With
     
    ....
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme pour compter les lignes d'un fichier texte?
    Par codon21 dans le forum Windows
    Réponses: 1
    Dernier message: 19/03/2009, 07h36
  2. Problème pour compter les lignes d'un résultat
    Par Yoshidu62 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/07/2006, 11h18
  3. Réponses: 1
    Dernier message: 07/06/2006, 18h56
  4. Réponses: 1
    Dernier message: 17/05/2004, 11h29
  5. [C#] Compter les lignes d'un DataSet
    Par alexischmit dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/04/2004, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo