IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur d'exécution 13 incompatibilité de type - fonctionne dans une partie du code et pas une autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut 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 : 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 ...

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    PROBLEME Résolue
    En mettant des msgbox à chaque ligne j'ai pu retrouver d'où venait l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            MsgBox (CDbl(UserForm3.Controls("TextBoxTemps" & b + m - 1 - 1).Value))
            UserForm3.Controls("TextBoxTemps" & m - 1).Value = False
            MsgBox (CDbl(UserForm3.Controls("TextBoxTemps" & b + m - 1 - 1).Value))
            For b = 1 To nbcas(n)
                MsgBox ((UserForm3.Controls("TextBoxTemps" & b + m - 1 - 1).Value))
    Erreur de ma part

    C'était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm3.Controls("CheckBoxTemps" & m - 1).Value = False
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm3.Controls("TextBoxTemps" & m - 1).Value = False

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur d'exécution "13" incompatibilité de type
    Par zenico64 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 14/12/2010, 10h45
  2. Erreur d'exécution 13 : incompatibilité de type
    Par Ptikir dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2009, 15h59
  3. erreur d'exécution 13 incompatibilité de type
    Par glamgeek dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/03/2009, 12h03
  4. "erreur d'exécution 13 : incompatibilité de type"
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/07/2007, 15h47
  5. erreur d'exécution 13, incompatibilité de type
    Par PHPdudimanche dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/06/2007, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo