Erreur 400 ou dépassement de capacité [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
21 octobre 2008
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
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 !!

Dim P
    Dim j
    Dim k AsInteger
    Dim n AsInteger
    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 = 1To derligne
 
            compt = 1
                    
          If Sheets(1).Cells(k, c).Value = Sheets(1).Cells(k + 1, c).ValueThen
                 
                  DoWhile(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
              
           EndIf
       
             
            If Sheets(1).Cells(k, c).Value <> Sheets(1).Cells(k + 1, c).Value    Then
 
                   k = k + 1
            EndIf
 
                 
    Next

Jenny

7 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
36
k augmente, on ne sait pas ce que contient l, on peut vite dépasser simplement le nombre de lignes....
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
36
topic déplacé de VB6 vers VBA
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
25
Bonjour,

Commence par typer tes variables de manière spécifique (certainbes, non typées, sont des Variant), en fonction de leur valeur attendue.et du maximum possible.


Si tu as toujours une erreur, rentre dans le debug et dis-nous sur quelle ligne elle est dénoncée ...
Messages postés
4
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
21 octobre 2008

J'ai toujours l'erreur 400 même après avoir bien typer mes variables. en fait, la macro marche impécable, sauf qu'à la fin elle me met une erreur 400, sans message, sans ligne spéciale d'erreur ... et j'ai parfois une erreur 1004. Je ne comprend pas comment ma macro peut s'éxecuter completement et me retourner quand même une erreur, qu'elle n'arrive pas à m'expliquer !

Jenny
Messages postés
4
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
21 octobre 2008

En effet, si je bloque ma boucle for jusqu' à 15 et non jusqu'à la fin des lignes lues (derligne), ben ça marche nikel. A voir avec un fichier plus gros... En tout cas, je te remercie BEAUCOUP pour cette piste ! je referai surement appel à ce site, j'ai plein de macro à developper !

Merci encore pour la disponibilité et la recherche !

Jenny
Messages postés
4
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
21 octobre 2008

je rencontre quand même ce soucis quand mon fichier devient un peu trop long, et les fichiers finaux seront longs .. faut il que je retravaille mes boucles pour éviter de dépasser les lignes ? je ne vois pas trop comment ... an idea ?
Jenny
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
36
à toi d'empêcher k d'être supérieure à derligne. te reste à voir si c'est un facteur pour quitter la routine (exit sub) ou de faire une opération particulière. un simple if pour ce faire