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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
 UserForm3.Controls("TextBoxTemps" & m - 1).Value = "0"
La valeur 0 aurait du lui être atibuée ...