Dépassement de capacité variable d'accumulation

Bonjour à tous.

ça fait presque 4 heures que je planche que mon code qui fonctionnait très bien jusqu'à présent.

Mais j'ai remis l'option explicit (entre autres) pour finaliser mon code et il plante sur une variable d'accumulation qui me sert à stocker des numéros de lignes.

J'utilise un array redimensionné à chaque passage d'une boucle et il est déclaré en base 1 tout en haut de mon module.

je souhaite stocker dans ma variable la valeur des entrées de mon tableau à chaque passage de boucle (ça ne dépasse jamais 2-3 valeurs).

J'ai bien vérifié le dimensionnement qui, pour l'exemple, est bien à 2.

Voici le code:

Dim i, CombienDfois, NumLineDel, LineToDelete As Integer
Dim TabSameDate9999() As Integer 'Tableau qui stocke les différents numéros de lignes contenant 31/12/9999

'Une boucle en amont me permet de remplir mon tableau et il est redimensionné juste avant d'attaquer la boucle.
ReDim TabSameDate9999(CombienDfois) 'redimensionne mon tableau avec la variable CombienDfois pr stocker n° des lignes contenant la date 31/12/9999

For i = 1 To CombienDfois 'CombienDfois = 2 le plus souvent
            LineToDelete = LineToDelete & TabSameDate9999(i) & Chr(10)
Next

J'ai une erreur de dépassement de capacité lorsque j'exécute mon code.

Pourtant, lorsque je contrôle les entrées de mon tableau TabSameDate9999, je n'obtiens pas d'erreurs:

TabSameDate9999(0) = "L'indice n'appartient pas à la sélection" (Testé pour être sûr)

TabSameDate9999(1) = "2225"

TabSameDate9999(2) = "2226"

TabSameDate9999(3) = "L'indice n'appartient pas à la sélection" (Testé pour être sûr)

UBound(TabSameDate9999) = 2 (testé pour être sûr)

Je ne vois pas pourquoi j'ai ce message d'erreur.

Si vous avez des solutions à m'apporter, je suis grave preneur (c'est là que se fait la différence avec les bons: j'en suis presque à 4h00 de temps passé à tester encore et encore sans trouver la solution...).

Merci d'avance.

Bon ap !

Bonjour,

LineToDelete est un Integer, et tu l'utilises pour rentrer du texte...

A mon avis cela aurait plutôt dû produire une erreur 13, mais...

Mais pourquoi les transfères-tu ? Tu les as en tableau, tu peux utiliser le tableau pour les supprimer...

i, CombienDfois, NumLineDel sont des Variant, non typés individuellement.

Cordialement.

Bonjour MFerrand.

J'ai testé en déclarant LineToDelete en string mais j'ai toujours la même erreur.

Je souhaite utiliser la fonction inputbox pour que l'utilisateur puisse supprimer les lignes s'il le souhaite.

DOnc pour cela, j'affiche le n° des lignes à supprimer, mais surtout, je fais un contrôle sur la saisie de l'opérateur.

Il ne peut supprimer que les lignes affichées dans l'inputBox.

De plus, l'InputBox, en raison de la gestion des erreurs ne prend que de l'integer:

'-------------------------------------------------------------------------------------------------------------------
' Teste si l'utilisateur entre les "bonnes" lignes à supprimer dans le cas d'une mauvaise saisie
' Ici j'utilse la FONCTION InputBox en non la méthode et la gestion de l'erreur empêche le USR de sortir de la Macro
' Tant qu'il n'a pas saisi le numéro de la ligne. On ne peut pas sortir de la macro à ce stade du traitement.
        Do
            NumLineDel = InputBox("Il y a un problème !" & Chr(10) & "Il y a " & CombienDfois & " fois la date 31/12/9999 pour le compteur " & NumCompteur9999 & Chr(10) & Chr(10) & "Entrer le numéro de la ligne à supprimer: " & Chr(10) & LineToDelete)
        Loop While IsError(Application.Match(NumLineDel, TabSameDate9999, 0))

        SheetSAP.Rows(NumLineDel).Delete 'je supprime la ligne choisie par l'utilisateur

i, CombienDfois, NumLineDel sont des Variant, non typés individuellement ----------> ? : Je les ai typés en Integer...

Ou peut-être veux-tu me dire, bien que je m'astreigne à tout typer, que la déclaration des variables doit se faire avec autant de Dim qu'il y a de varaiables ?

Pas autant de Dim que de variables !!! Je déclare généralement tout sur une ligne, sauf si vraiment beaucoup...

C'est chaque variable qui se type :

Dim i%, j%, k%, c As Range

J'ai typé 3 variables Integer et une range.

ImputBox ne renvoie que des valeurs String.

ça peut éventuellement être converti automatiquement, mais à tester avant,

en tout cas si appui sur Annuler, InputBox renvoie "" !

Au fait tu n'as pas dit sur quelle ligne était l'erreur.

Sur la ligne de la variable d'accumulation:

LineToDelete = LineToDelete & TabSameDate9999(i) & Chr(10)

Mais l'erreur est trouvée: Il s'agit bien du mauvais typage de la variable LineToDelete qui devait être typée "String".

Je suis nul !

Quand j'ai dit que j'avais essayé en String, ce n'était pas cet essai que j'avais fait.

Le retour chariot m'avait mis sur la voie, mais je l'ai supprimé en laissant la variable en integer mais l'erreur étant toujours là, j'ai typé avec un "long" en pensant que ça pouvait inhiber l'erreur: sans succès.

Bref, c'est résolu et je ne suis pas près d'avoir autant d'étoiles sous mon avatar...

Merci beaucoup pour votre implication.

Bonne journée.

A la prochaine !

Rechercher des sujets similaires à "depassement capacite variable accumulation"