Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tableaux dans VBA : Dépassement de capacité

  • Initiateur de la discussion Initiateur de la discussion Xanthar
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Xanthar

XLDnaute Nouveau
Bonjour à tous,

Voici mon problème (Excel 2003 pour Windows XP) :

Je veux créer une matrice dans VBA pour reproduire k tableaux de i lignes et de j colonne sur h feuilles.

Premièrement, j'insère les "dit" tableaux dans la matrice C() (première partie du code). (ça fonctionne, car j'ai essayé de les imprimer dans des cellules et ça fonctionne).

Deuxièmement, (et c'est là que ça plante) je veux créer une matrice M() qui sera le résultat d'opérations sur C(). Par contre, lorsque je mets mon nombre de tableaux plus grand que 3 (k), ça me dit "Dépassement de capacité". Mes opérations sont sur des milliards.

Code:
Dim C() As Double
Dim M() As Double
Dim h, k, i, j As Double

ReDim C(4, 12, 16, 9)
ReDim M(4, 12, 16, 9)

'réclamations, couts et membres par région

For h = 1 To 1
If h = 1 Then
MySheet = "RJTL"
ElseIf h = 2 Then
MySheet = "RITL"
ElseIf h = 3 Then
MySheet = "OBRJTL"
ElseIf h = 4 Then
MySheet = "OBRITL"
End If

For k = 1 To 12
For i = 1 To 16
For j = 1 To 9

If k = 4 Then
C(h, k, i, j) = 0
Else
C(h, k, i, j) = Worksheets(MySheet).Cells(i + 7 + k * 45, j + 1).Value
End If

Next j
Next i
Next k
Next h

'***

'rates par région
'h = type de soins
'k = # région

For h = 1 To 1
For k = 1 To 4
For i = 1 To 16
For j = 1 To 3

If i = 15 Then
M(h, k, i, j) = 0
Else
If j = 3 Then
M(h, k, i, j) = ((C(h, k, i, j - 2) + C(h, k, i, j - 1)) / 9) / C(h, k, i, j + 6)
Else
M(h, k, i, j) = (C(h, k, i, j) / 9) / C(h, k, i, j + 6) '///*** ça plante ici ***///
End If
End If

Next j
Next i
Next k
Next h

'***

J'espère que j'ai été assez clair.

Merci d'avance

Xanthar
 
Re : Tableaux dans VBA : Dépassement de capacité

Bonsoir Xanthar et bienvenue sur le forum 😉

Je pense que ton problème vient tout simplement du type de tes variables

Double, type de données
Type de données stockant sur 64 bits les nombres à virgule flottante en double précision compris entre -1,79769313486231E308 et -4,94065645841247E-324 pour les valeurs négatives, et entre 4,94065645841247E-324 et 1,79769313486232E308 pour les valeurs positives. Dans Visual Basic, le signe dièse (#) est le caractère de déclaration du type Double.

Mieux vaudrait, je pense, utilisé le type :
Long, type de données
Nombre entier codé sur 4 octets et dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647. Dans Visual Basic, le signe et commercial (&) est le caractère de déclaration du type Long.

A+
 
Re : Tableaux dans VBA : Dépassement de capacité

Merci Bruno,

Le type Long n'est pas pour les entiers ? Je n'ai pas seulement des entiers dans mes tableaux... Le pire, c'est que ça ne plante pas quand je mets moins que 3 tableaux (k<=3). Bizarre...

merci

Xanthar
 
Re : Tableaux dans VBA : Dépassement de capacité

Ok je suis stupide 😛

Je viens de me rendre compte de mon erreur... "Erreur bête de programmation"

Désolé de vous avoir dérangé

Le problème est que je mettais le tableau 4 à 0 dans le C(), alors il fallait je le mette à 0 dans le M() aussi.

Le fait de parler ici m'a fait réalisez j'imagine 😛

Ça n'aura pas servi à rien par contre, car j'ai découvert ce forum qui va m'être probablement encore utile

Merci

faut-il que je change le titre du message ?
 
Re : Tableaux dans VBA : Dépassement de capacité

Bonjour,

attention dans la déclaration de tes variables :

Code:
Dim h, k, i, j As Double

ainsi écrit, seul j est en Double...

la bonne syntaxe :

Code:
Dim h As Double, k As Double, i As Double, j As Double

si tu veux qu'ils soient tous déclarés en Double...

Bon Dimanche
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
233
Réponses
4
Affichages
177
Réponses
8
Affichages
466
Réponses
10
Affichages
281
Réponses
2
Affichages
123
Réponses
3
Affichages
665
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…