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 :

Erreur 400 ou dépassement de capacité


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Erreur 400 ou dépassement de capacité
    Bonjour,

    J'ai un souci avec le code suivant, qui fonctionne mais me retourne une erreur 400 quand je ne précise pas les types de mes variables et qui me retourne une erreur de dépassement de capacité quand je les déclare en Integer.
    je les ai donc déclaré en long, ou autre, et je reviens à une erreur 400.

    En testant mon code petit à petit, j'ai trouvé que l'erreur venait quand je mets le deuxième n=n+1 , après le loop.(alors qu'il est primordial à la réussite du code, mais vb n'aime pas). Avez vous eu des cas similaire ? ou mon code peut il être optimisé ? merci d'avance !!

    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
     Dim P
        Dim j
        Dim k As Integer
        Dim n As Integer
        Dim compt
        Dim derligne
        Dim c
     
        j = 2
        k = ActiveCell.Row + 1
        n = ActiveCell.Row + 1
        c = ActiveCell.Column
     
        derligne = Cells(65536, c).End(xlUp).Row
     
     
        For P = 1 To derligne
     
                compt = 1
     
              If Sheets(1).Cells(k, c).Value = Sheets(1).Cells(k + 1, c).Value Then
     
                      Do While (Sheets(1).Cells(n, c).Value = Sheets(1).Cells(n + 1, c).Value)
                        compt = compt + 1
                        n = n + 1
     
                      Loop
     
                Sheets(2).Range("B" & j).Value = compt
                  n = n + 1
                   j = j + 1
                   k = n + 1
     
               End If
     
     
                If Sheets(1).Cells(k, c).Value <> Sheets(1).Cells(k + 1, c).Value    Then
     
                       k = k + 1
                End If
     
     
        Next

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    sans rentrer dans le code, commence par déclarer toutes les variables concernant les numéros de lignes "as long"
    Si tu as un pb de type, jète un oeil dans l'aide en ligne à Integer, Long, Variant... Tu verras la différence

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Déjà : merci de répondre à mon problème.c'est sympa

    Ok, j'ai déclaré mes variables comme tu me l'as dis, je n'ai plus d'erreur de dépassement de capacité, mais j'ai toujours l'erreur 400.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    A quel endroit te dit-il qu'il y a erreur 400? Et sutout: quel est le message?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je n'ai pas de message d'erreur précis, je n'ai que 400 qui s'affiche. je n'arrive pas à avoir d'explication , ni de ligne concernée. En fait, ma macro tourne bien, j'ai le résultat voulu, mais elle me met cette box à la fin avec le message d'erreur 400. Et quand je l'execute de VB, j'ai l'erreur 1004. je suis un peu perdue ...

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    ta boucle
    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
    For P = 1 To derligne
              compt = 1
              If Sheets(1).Cells(k, c).Value = Sheets(1).Cells(k + 1, c).Value Then
                      Do While (Sheets(1).Cells(n, c).Value = Sheets(1).Cells(n + 1, c).Value)
                        compt = compt + 1
                        n = n + 1
                      Loop
                Sheets(2).Range("B" & j).Value = compt
                   n = n + 1
                   j = j + 1
                   k = n + 1
               End If
               If Sheets(1).Cells(k, c).Value <> Sheets(1).Cells(k + 1, c).Value Then
                       k = k + 1
                End If
        Next
    est pour le moins surprenante, à divers titres :
    - on peut se demander à quoi sert ta variable j
    - on se demande aussi à quoi peut rimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n = n + 1
                   j = j + 1
                   k = n + 1
    qui, en plus du j qui ne sert à rien, aboutit à
    l'incrémentation imbriquée et cumulée de tes n et k fait qu'il est fort possible que ton k atteigne vite "des sommets"
    - je ne me suis attardé qu'au plus évident...

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Bonjour et bienvenue sur nos forums...

    A ce stade, il serait probablement intéressant que tu nous expliques ce que tu souhaites réaliser, pour que nous puissions t'aiguiller vers le code qui va bien...

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Alors cette partie du code compare des cellules (situées en dessous de la cellule activée par l'utilisateur), de la colonne C. Elle compte et renvoie la quantité des cellules identiques.
    Après mon do while, (qui incremente le compteur des quantités et l'indice de la ligne de la première cellule a comparer) je dois re incrémenter l'indice de la ligne de la cellule a comparer car si on sort de la boucle c'est que cette cellule n'est pas égale à la suivante, mais il faut que je compare la suivante avec celle qui se situe après ! suis je claire ! et ainsi de suite

    En fait, l'erreur vient que j'atteint les limites d'excel avec mes incrémentations, le soucis est que je ne vois pas comment modifier ma boucle pour arriver au même résultat sans ce blocage.

    Pour ucfoutu : j correspond à la ligne de ma seconde feuille où j'écris au fur et à mesure les quantités calculées.

    je crois que je complique un peu les choses, mais je n'arrive pas à boucler autrement !

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Girly Voir le message
    Alors cette partie du code compare des cellules...
    Je n'ai pas demandé ce que la procédure faisait, mais
    Citation Envoyé par Pierre Fauconnier Voir le message
    ...
    A ce stade, il serait probablement intéressant que tu nous expliques ce que tu souhaites réaliser...

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    et bien ce que fait la procédure c'est ce que je veux faire mais sans l'erreur à la fin !
    En fait, j'ai trouvé (on m'a aidé !) que l'erreur venait que k devenait à un moment > à derligne. Apparement ca gène vb, je ne vois pas pourquoi. et il faudrait donc que je teste mon k par un if, mais que faire quand il depasse derligne, je souhaite qu'il continue...sans erreur !

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Si je pose la question, c'est parce que j'ai essayé ton code (tant bien que mal puisque je ne comprends pas ce que tu veux réaliser)...

    Donc, au mieux, je vais pouvoir te trouver ton erreur, jusqu'à ce que ton code plante pour autre chose et qu'on recommence à zéro...

    De plus, avec ce que j'ai cru comprendre du code, le résultat que j'ai en feuille 2 est à mon sens inexploitable.

    Si je pose la question, c'est pour que tu clarifies, en exprimant en français ce que tu souhaites réaliser, du style:
    - J'ai une feuille avec des données, et je voudrais obtenir ... dans une deuxième feuille.

    Sans cela, on va résoudre erreur après erreur et construire l'usine à gaz

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Il est effectivement plus aisé de traduire du français en VB que l'inverse, surtout quand les codes qu'on lit ne suivent pas la bonne logique.

Discussions similaires

  1. "erreur d'exécution" dépassement de capacité
    Par guigui71 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 30/04/2010, 02h04
  2. VBA-Word:Erreur 6 de dépassement de capacité
    Par zahui_eric dans le forum VBA Word
    Réponses: 3
    Dernier message: 04/04/2007, 16h17
  3. Réponses: 1
    Dernier message: 08/08/2006, 19h05
  4. [Access 2003] Erreur "Dépassement de capacité"
    Par Bapt.ice dans le forum Access
    Réponses: 2
    Dernier message: 08/06/2006, 13h15
  5. Réponses: 8
    Dernier message: 06/02/2006, 15h34

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