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 de type 13 - ioncompatibilité de type


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2024
    Messages : 5
    Par défaut Erreur de type 13 - ioncompatibilité de type
    Bonjour

    J'ai une erreur de type 13 avec le code suivant..
    Parfois, ce que je ne comprends pas, cela fonctionne...

    Merci pour votre aide...
    J'ai essayé différent types genre format de cellules ou autre mais cela ne change rien...

    Merci a toutes et tous...

    Code :

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    Option Explicit
    Private Sub CommandButton1_Click()
     
    End Sub
     
    Private Sub CommandButtonAddSeance_Click()
    Dim sea As New Seance
    Dim prof As New Professeur
    Dim cla As New Classe
    Dim room As New Salle
    Dim mat As New Matiere
        If Not Start.etab.verifMat(Me.TextBox1.Value) Is Nothing Then
            Set mat = Start.etab.verifMat(Me.TextBox1.Value)
            If Start.etab.checkHour(mat) Then
                If Not Start.etab.verifClasse(Me.TextBox6.Value) Is Nothing Then
                    Set cla = Start.etab.verifClasse(Me.TextBox6.Value)
                    If Start.etab.checkEdT(cla, CDate(Me.TextBox3.Value), CInt(Me.TextBox4.Value)) Then
    ' If Start.etab.checkEdT(cla, CDate(Me.TextBox3.Value), CInt(Me.TextBox4.Value)) Then
                        If Not Start.etab.verifProf(Me.TextBox5.Value) Is Nothing Then
                            Set prof = Start.etab.verifProf(Me.TextBox5.Value)
                            If Start.etab.checkEdT(prof, CDate(Me.TextBox3.Value), CInt(Me.TextBox4.Value)) Then
                                If Not Start.etab.verifSalle(Me.TextBox2.Value) Is Nothing Then
                                    Set room = Start.etab.verifSalle(Me.TextBox2.Value)
                                    If Start.etab.checkEdT(room, CDate(Me.TextBox3.Value), CInt(Me.TextBox4.Value)) Then
                                        sea.init CDate(Me.TextBox3), CInt(Me.TextBox4), mat, room, cla, prof
                                        Call etab.addseance(prof, cla, sea, room, mat)
                                        MsgBox "Nouvelle séance créée !", vbExclamation
                                        'MsgBox "sea : jour " & sea.getJour & " creneau : " & sea.getCreneau & " mat : " & sea.getDiscipline.getIntitule & " endroit : " & sea.getNomEndroit & " classe : " & sea.getNomClasse & " prof : " & sea.getNomProf
     
                                        etab.stockAll
                                        Me.TextBox1.Value = ""
                                        Me.TextBox2.Value = ""
                                        Me.TextBox3.Value = ""
                                        Me.TextBox4.Value = ""
                                        Me.TextBox5.Value = ""
                                        Me.TextBox6.Value = ""
                                        'UserFormAddSeance.Hide
                                        Unload Me
                                        UserFormAccueilAdmin.Show
     
                                    Else
                                        MsgBox "Erreur salle indisponible ! Veuillez réessayer.", vbExclamation
                                        Me.TextBox3.Value = ""
                                        Me.TextBox4.Value = ""
                                        Me.TextBox3.SetFocus
                                    End If
                                Else
                                    MsgBox "Erreur salle inexistante ! Veuillez réessayer.", vbExclamation
                                    Me.TextBox2.Value = ""
                                    Me.TextBox2.SetFocus
                                End If
                            Else
                                MsgBox "Erreur professeur indisponible ! Veuillez réessayer.", vbExclamation
                                Me.TextBox3.Value = ""
                                Me.TextBox4.Value = ""
                                Me.TextBox3.SetFocus
                            End If
                        Else
                            MsgBox "Erreur professeur inexistant ! Veuillez réessayer.", vbExclamation
                            Me.TextBox5.Value = ""
                            Me.TextBox5.SetFocus
                        End If
                    Else
                        MsgBox "Erreur classe indisponible ! Veuillez réessayer.", vbExclamation
                        Me.TextBox3.Value = ""
                        Me.TextBox4.Value = ""
                        Me.TextBox3.SetFocus
                    End If
                Else
                    MsgBox "Erreur classe inexistante ! Veuillez réessayer.", vbExclamation
                    Me.TextBox6.Value = ""
                    Me.TextBox6.SetFocus
                End If
            Else
                MsgBox "Erreur aucune heure disponible ! Veuillez réessayer.", vbExclamation
                Me.TextBox1.Value = ""
                Me.TextBox1.SetFocus
            End If
        Else
            MsgBox "Erreur matière inexistante ! Veuillez réessayer.", vbExclamation
            Me.TextBox1.Value = ""
            Me.TextBox1.SetFocus
        End If
        etab.stockAll
    End Sub
     
    Private Sub CommandButtonAnnuler_Click()
        Me.TextBox1.Value = ""
        Me.TextBox2.Value = ""
        Me.TextBox3.Value = ""
        Me.TextBox4.Value = ""
        Me.TextBox5.Value = ""
        Me.TextBox6.Value = ""
        UserFormAddSeance.Hide
        UserFormAccueilAdmin.Show
    End Sub
     
     
     
    Private Sub Label4_Click()
     
    End Sub
     
    Private Sub UserForm_Initialize()
        Dim room As New Salle
        Dim prof As New Professeur
        Dim mat As New Matiere
        Dim cla As New Classe
        Dim i As Integer
        i = 1
        TextBox1.Clear
        TextBox2.Clear
        TextBox6.Clear
        TextBox4.Clear
        TextBox5.Clear
        For Each room In Start.etab.getSalles
            TextBox2.AddItem room.getNom
            Set room = New Salle
        Next room
        For Each prof In Start.etab.getProfs
            TextBox5.AddItem prof.getNom
            Set prof = New Professeur
        Next prof
     
        For Each mat In Start.etab.getMatieres
            TextBox1.AddItem mat.getIntitule
            Set mat = New Matiere
        Next mat
        For Each cla In Start.etab.getClasses
            TextBox6.AddItem cla.getNom
            Set cla = New Classe
        Next cla
        Do Until i = 11
            TextBox4.AddItem i
            i = i + 1
        Loop
     
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 529
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Une simple remarque : ce serait bien à la fin de votre code de libérer vos variables objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set room = Nothing
    Set prof = Nothing
    ...
    Perso on m'a toujours conseillé de le faire, et ça ne coûte rien de le faire

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2024
    Messages : 5
    Par défaut libéréer les variables
    Oui merci

    On va faire cela...

  4. #4
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 068
    Par défaut
    Citation Envoyé par User Voir le message
    Bonjour,

    Une simple remarque : ce serait bien à la fin de votre code de libérer vos variables objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set room = Nothing
    Set prof = Nothing
    ...
    Perso on m'a toujours conseillé de le faire, et ça ne coûte rien de le faire

    Cdlt,
    Pas sûr que ça ait un réel intérêt
    A lire https://silkyroad.developpez.com/VBA/LesVariables/ et tout particulièrement le chapitre https://silkyroad.developpez.com/VBA...riables/#LII-K

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2024
    Messages : 5
    Par défaut
    Citation Envoyé par Nain porte koi Voir le message
    Pas sûr que ça ait un réel intérêt
    A lire https://silkyroad.developpez.com/VBA/LesVariables/ et tout particulièrement le chapitre https://silkyroad.developpez.com/VBA...riables/#LII-K
    Merci...
    On pense déjà avoir ces déclarations je pense.. Vous pensez que notre bug err13 viendrait de cela? il y a surement une erreur quelque part là dessus...
    La libération de la mémoire est déjà dans le code...
    On cherche..
    Merci encore pour cette lecture

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il peut y avoir des tas de raisons au vue du code (modules de classes, conversion de données en date sans aucun contrôle etc...)

    sur quelle ligne ça plante ?

  7. #7
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 068
    Par défaut
    Citation Envoyé par RESETAS Voir le message
    ...J'ai une erreur de type 13
    Ce qu'en dit MS : https://learn.microsoft.com/fr-fr/of...match-error-13

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 529
    Billets dans le blog
    67
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    il peut y avoir des tas de raisons au vue du code (modules de classes, conversion de données en date sans aucun contrôle etc...)

    sur quelle ligne ça plante ?
    Oui, ça serait bien d'avoir la ligne qui déclenche l'erreur.

    Concernant la conversion des données, il faut voir aussi ce que contiennent vos textbox :

    En particulier Me.TextBox3 devrait apparemment contenir une chaîne de caractères représentant une date, par exemple :

    "13/04/2024"

    qui va être convertie en date avec CDate("13/04/2024").

    S'il y a une incohérence au niveau de la saisie des dates, ex. : "13/14/2024", CDate("13/14/2024") va déclencher l'erreur 13.

    Même chose pour Me.TextBox4 devrait contenir une chaîne de caractère représentant un entier.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2024
    Messages : 5
    Par défaut
    Citation Envoyé par User Voir le message
    Oui, ça serait bien d'avoir la ligne qui déclenche l'erreur.

    Concernant la conversion des données, il faut voir aussi ce que contiennent vos textbox :

    En particulier Me.TextBox3 devrait apparemment contenir une chaîne de caractères représentant une date, par exemple :

    "13/04/2024"

    qui va être convertie en date avec CDate("13/04/2024").

    S'il y a une incohérence au niveau de la saisie des dates, ex. : "13/14/2024", CDate("13/14/2024") va déclencher l'erreur 13.

    Même chose pour Me.TextBox4 devrait contenir une chaîne de caractère représentant un entier.

    Cdlt,

    merci pour votre aide..

    Le debugger montre la ligne 17 : If Start.etab.checkEdT(cla, CDate(Me.TextBox3.Value), CInt(Me.TextBox4.Value)) Then

    oui on a essayé différent format de date (-, /, espace ..) mais pareil , oui le texbox4 revoi un entier pris dans une table (choix limité, pas de saisie manuelle)
    et lorsque le debogger arrive, on voit les valeurs en survolant avec la souris et elles sembblent correctes.
    Ce qui est curieux, c'est que 1 fois sur 20 au moins, ca fonctionne ...
    Je pense qu'on a un probleme de déclaration peut-être...

    j'ai le xlsm complet mais ne veut pas non plus prendre trop de votre temps....
    Merci encore

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2024
    Messages : 5
    Par défaut
    Citation Envoyé par Nain porte koi Voir le message
    oui merci, on a étudié cela.. mais sans succès..

Discussions similaires

  1. [VB]erreur de type
    Par amel95140 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/01/2006, 14h51
  2. Réponses: 1
    Dernier message: 12/12/2005, 03h39
  3. [LG] Erreur de type incompatible dans assignment
    Par Tuxico dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2005, 21h06
  4. erreur Data type mismatch in criteria expression
    Par bachilbouzouk dans le forum ASP
    Réponses: 3
    Dernier message: 20/04/2005, 11h48
  5. [Agents services] Erreur de types imcompatibles
    Par ApollloCrid dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 14/04/2005, 19h47

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