Vba (excel) : Dépassement de capacité.

Fermé
Usgpa - 30 mars 2010 à 10:18
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 30 mars 2010 à 18:37
Bonjour à tous,

Excusez-moi de vous déranger à nouveau mais ma fonction bug à cause d'un dépassement de capacité. Savez vous si je peux résoudre ou contourner ce problème ?

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

x1 = 1465
y1 = 119

ReDim Tableau1(2 To x1, 3 To y1)

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

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



Merci d'avance pour le temps que vous consacrerez à mon problème.

A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 mars 2010 à 10:33
Bonjour

regarde si

DO1465 au lieu deD01465

0
Merci, je n'avais pas remarqué cette erreur. Malheureusement, j'ai toujours mon problème de déassement de capacité.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 30/03/2010 à 10:42
Essaies avec
dim tableau1
au lieu de
Dim Tableau1() As Integer
0
Il me signale désormais une incompatibilité de type pour la ligne :

tableau(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j) + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j)
0
en fait la procédure sur laquelle j'avais mon problème est résolue. C'est la suivante qui pose désormais problème.

Dim tableau
Dim x As Integer, y As Integer
Dim i As Integer, j As Integer
'ici x est la dernière ligne, y la dernière colonne
x = 800
y = 8
'Redimensionne le tableau de la ligne 3 à x et de la 2ème col à la yème
ReDim tableau(2 To x, 5 To y)
'complète les valeurs du tableau par l'addition des cellules de la même plage sur 2 feuilles
For i = 2 To x
For j = 5 To y
tableau(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j) + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j)
Next j
Next i
'restitue les valeurs du tableau dans la feuil3
With Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients")
.Range("E2:H800") = tableau
End With
Range("E2:H800").ClearContents

Avec un incompatibilité de type sur la ligne soulignée
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 mars 2010 à 14:55
peut-être qu'une autre manière de procéder avec 2 tableaux conviendrait ( et + rapide?); maquette très simple:

Sub ccc()
tablo_out = Range("A1:B5")
tablo_in = Range("E1:F5")

For cptr_y = 1 To 5
    For cptr_x = 1 To 2
        tablo_out(cptr_y, cptr_x) = tablo_out(cptr_y, cptr_x) + tablo_in(cptr_y, cptr_x)
    Next
Next

Range("J1:K5") = tablo_out 'destination finale changée pour visualiser l'essai
End Sub
0
Tableau2(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j) + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j)

Maintenant, Vba me signale une incompatibilité de type dans cette ligne... avez vous une idée de ce dont il pourrait s'agir ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 mars 2010 à 18:01
là, non...la solution alternative que je t'ai proposée fonctionne mais je n'ai pas testé avec 2 classeurs... D'ailleurs je l'avais pondue après ton message précédent où te signalais déjà cette erreur

désolé
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 mars 2010 à 18:37
re,
pensé à çà en épluchant les patates...
essaies en ajoutant la propriété "value" aux 2 cells(i,j)
Tableau2(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j).value + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j).value
0