Erreur d'exécution 13 incompatibilité de type - fonctionne dans une partie du code et pas une autre
Bonjour,
J'ai un problème avec Erreur d'exécution 13 incompatibilité de type
J'ai plusieurs boucle for intriquées et lorsque j'exécute le programme j'ai donc cette erreur.
Cependant si je met la ligne qui pose problème dans la boucle for d'avant, le problème disparait.
J'ai coupé le code pour que ça soit plus lisible car il y a pas de boucle for et if :?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Sub Masub(critere() As Double, scenar() As String, nbcas() As Integer, Nbzones As Integer, Nbseq As Integer, comptcastot As Integer)
Dim m As Integer, c As Integer, z As Integer, comptcas As Integer, b As Integer, n As Integer, numcas As Integer
Dim Tableau_Tps_Depas_zones As Variant
Dim k As Long
Dim x As String
Dim t() As Double
ReDim Tableau_Tps_Depas_zones(1 To 12 * Nbzones, 1 To 12, 0 To Nbseq)
ReDim t(0 To Nbseq)
'INITIALISATION
t(0) = 0
comptcas = 0
For c = 1 To 12
For z = 1 To Nbzones
Tableau_Tps_Depas_zones(z, c, 0) = "-"
Next
Next
For m = 1 To Nbseq
If UserForm3.Controls("CheckboxTemps" & m).Value = False Then UserForm3.Controls("TextBoxTemps" & m).Value = 0
Next
n = 1
numcas = 1
For m = numcas To Nbseq 'On recupère de la feuille résusultats les températures maximales de chaques zones
t(0) = 0
UserForm3.Controls("TextBoxTemps" & m - 1).Value = "0"
MsgBox (CDbl(UserForm3.Controls("TextBoxTemps" & m + b - 1 - 1).Value)) 'ICI J'AI BIEN 0 QUI S'AFFICHE
UserForm3.Controls("TextBoxTemps" & m - 1).Value = False
For b = 1 To nbcas(n)
x = Tableau_Arborescence_Final(m + b - 1, 2)
.
.
.
If b <> nbcas(n) Then
If UserForm3.Controls("CheckboxTemps" & m + b - 1 + 1) = True Then
'MsgBox (UserForm3.Controls("TextBoxTemps" & m + b - 1 - 1).Value)
t(b) = t(b - 1) 'J'ai décomposé en 2 lignes pour voir ou était l'erreur
t(b) = t(b) + CDbl(UserForm3.Controls("TextBoxTemps" & b + m - 1 - 1).Value) 'ERREUR d'exécution 13 incompatibilité de type sur cette ligne.
.
.
.
Next
numcas = numcas + nbcas(n)
m = numcas - 1
n = n + 1
Next |
Donc mon erreur vient d'ici
Code:
CDbl(UserForm3.Controls("TextBoxTemps" & b + m - 1 - 1).Value)
Je ne comprend pas trop car comme je l'ai dit au dessus j'ai testé hors de la boucle et ça fonctionne.
b et m sont déclaré en integer
t en double
ensuite j'utilise cdbl pour passé de string à double
Code:
1 2 3 4
|
UserForm3.Controls("TextBoxTemps" & m - 1).Value = "0"
'ou
UserForm3.Controls("TextBoxTemps" & m - 1).Value = 0 |
Revient au même
Auriez vous une idée de ce j'ai mal codé?
Merci de vos aides :)
EDIT
Si j’enlève le cdbl
Code:
MsgBox (UserForm3.Controls("TextBoxTemps" & b + m - 1 - 1).Value)
Cela me renvoie FALSE
Cela signifierai que la TextBox n'a pas de valeur (est vide) ??
Alors qu'en théorie je lui est donné la valeur 0
Car cela bug lorsque b=1
donc b+m-1-1 = m-1 quand b=1 donc
Code:
UserForm3.Controls("TextBoxTemps" & m - 1).Value = "0"
La valeur 0 aurait du lui être atibuée ...