VBA excel : résoudre problème de capacité. [Résolu/Fermé]

Signaler
-
 Juan Pedro -
Bonjour à tous les pros du VBA excel et aux autres.

Voilà j'ai un petit probleme (erreur de type "6") qui empeche un de mes codes d'aller à son terme alors qu'il n'y avait jamais eu de problème jusque là... Bizarre, bizarre...

Auriez vous une explication sur ce problème soudain ? Avez vous une piste pour résoudre ce problème de dépassement de capacité? Dans tous les cas, merci de vous être attardé sur mon problème !!

Dim Tableau1() As Integer
Dim x1 As Integer, y1 As Integer
Dim i1 As Integer, j1 As Integer

x1 = 1465
y1 = 119
'Redimensionne le tableau de la ligne 3 à x et de la 2ème col à la yème

ReDim Tableau1(2 To x1, 3 To y1)

'complète les valeurs du tableau par l'addition des cellules de la même plage sur 2 feuilles

For i1 = 2 To x1
For j1 = 3 To y1
Tableau1(i1, j1) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques").Cells(i1, j1).Value + Workbooks("Classeur Commun X").Sheets("Statistiques").Cells(i1, j1).Value
Next j1
Next i1

'restitue les valeurs du tableau dans la feuil3

With Workbooks("Classeur Commun X.xls").Sheets("Statistiques")
.Range("C2:DO1465") = Tableau1
End With
Workbooks("Fichier Personnel X.xls").Sheets("Statistiques").Range("C2:DO1465") = ClearContents

6 réponses

Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
587
Bonjour,

Juste un avis, le dépassement de capacité se fait sur Tableau peut-être parcequ'il est en "integer" c'est à dire limité a 32767. Il suffit que l'une des additions donne plus pour avoir ce message.

Il suffit peut-être de le déclarer en double ou long :

Dim Tableau1() As Double
ou
Dim Tableau1() As Long

non ?

A+

Cordialement,
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Ca marche ! Bravo Pilas !!! Merci beaucoup !!
Messages postés
4237
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 269
Bonjour,

indique-nous sur quelle ligne tu as une erreur et quel est le message associé à cette erreur.

Cordialement.
Bonjour chossette9 et merci d'essayer de m'aider.

La ligne incriminée est :

Tableau1(i1, j1) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques").Cells(i1, j1).Value
+ Workbooks("Classeur Commun X").Sheets("Statistiques").Cells(i1, j1).Value


et le message est tout simplement :

"dépassement de capacité"
Pas d'idée ? Et le fait que ca intervienne maintenant et qu'auparavant ce même code fonctionnait très bien c'est normal ?
Messages postés
4237
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 269
Re,

franchement, même en lisant l'aide de VBA sur l'erreur 6, je ne vois pas d'où ça peut venir.

Aide de VBA :

Dépassement de capacité (erreur 6)
Particularités 

Un dépassement de capacité se produit lorsque vous tentez d'effectuer une affectation dépassant les limites de la cible de l'affectation. Causes et solutions de cette erreur : 

Le résultat d'une affectation, d'un calcul ou d'une conversion de type de données est trop grand pour être représenté dans la plage de valeurs autorisée pour ce type de variable. 
Affectez la valeur à un type de variable pouvant contenir une plage de valeurs plus grande. 

Une affectation à une propriété dépasse la valeur maximum de la propriété. 
Vérifiez que votre affectation se situe à l'intérieur de la plage de la propriété cible. 

Vous tentez d'utiliser dans un calcul un nombre converti dans un entier, mais le résultat est plus grand qu'un entier. Exemple : 
    Dim x As Long
    x = 2 000 * 365   ' Erreur : Dépassement de capacité
Afin de contourner le problème, saisissez le nombre comme suit : 

    Dim x As Long
    x = CLng(2 000) * 365
Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).
J'ai peut être trouver une solution pour eviter ce probleme en évitant le "TABLEAU" mais je ne sais pas comment le traduire en code VBA...

Mais quelqu'un saurait-il comment rechercher toutes les cases pleines de mon tableau.

Les aditionner à des cases d'un tableau du même format d'une autre feuille. (ex: Feuil1 "A1" + feuil2 "A1").

En se contentant des colonnes et lignes que j'ai précisé dans le code ci dessus.

Si quelqu'un peut m'aider je l'en remercie vraiment car je suis très très embeté... Merci d'avance.
J'essaye d'avancer et le temps presse pour moi, je reviens donc vers vous...Comment fait on pour trouver la dernière cellule non vide non pas d'une colonne (xlup ou xldown) ni d'une ligne (xlleft ou xlright) mais d'une plage de cellule comme par exemple ("A2:D4")???