Tableaux VBA : Dépassement de capacité

Bonsoir,

Afin d’aider un membre du Forum, j’ai tenté de créer un tableau VBA et d’en reporter dans un premier temps les valeurs enregistrées sur une autre feuille.

Comme le code bloquait (dépassement de capacité), j’ai tenté de réduire le tableau de base de 72 à 36 colonnes [ dont j’utilise une colonne sur deux dans le code, d’où les instructions ReDim Tableau_B((DerLig - 4) * 18, 2) ] et ça donne la feuille Macro 1. La macro 1 reliée au bouton en place fonctionne bien.

Savez-vous alors pourquoi ça ne fonctionne pas avec un tableau de base 2 fois plus grand, celui de la feuille Macro 2, dont le bouton en place est relié justement à la macro 2 ? J’ai tenté d’utiliser diverses déclarations de variable, mais rien n’y fait.

A vous relire.

Bonsoir,

dans macro 2, tu as défini derlig comme integer, le calcul pour déterminer la dimension se fait en mode integer et tu dépasses la valeur maximum que tu peux mettre dans une variable de type Integer (1496 *36) > 32767.

définis derlig as long cela devrait fonctionner. ou

specifie que tu veux que le calcul se fasse en mode long

ReDim Tableau_B((CLng(DerLig - 4)) * 36, 2)

ou encore

ReDim Tableau_B((DerLig - 4) * 36@, 2)

Salut h2so4 et merci beaucoup pour ta réponse

J'ai essayé d'utiliser le type Long pour la variable DerLig et ça fonctionne très bien.

J'ai alors essayé de revenir à Integer pour DerLig et d'utiliser l’une et l’autre de tes deux autres solutions, mais ça bloque plus loin, sur la ligne For m = 1 To (DerLig - 4) * 36.

Mon problème est dans tous les cas résolu et je t’en suis très reconnaissant.

Excellente fin de nuit.

Yvouille a écrit :

Salut h2so4 et merci beaucoup pour ta réponse

J'ai essayé d'utiliser le type Long pour la variable DerLig et ça fonctionne très bien.

J'ai alors essayé de revenir à Integer pour DerLig et d'utiliser l’une et l’autre de tes deux autres solutions, mais ça bloque plus loin, sur la ligne For m = 1 To (DerLig - 4) * 36.

Mon problème est dans tous les cas résolu et je t’en suis très reconnaissant.

Excellente fin de nuit.

Tu as le même problème de calcul en mode Integer dans cette instruction, il faut forcer le calcul en mode Long de la même manière que pour l'instruction Redim, il faut aussi que m soit défini comme long

For m = 1 To (DerLig - 4) * 36@

Merci beaucoup pour ces dernières informations

Ton aide m'a bien permis d'avancer.

A une prochaine fois.

Rechercher des sujets similaires à "tableaux vba depassement capacite"