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 incompatibilité de type


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut Erreur incompatibilité de type
    Bonjour à tous,

    Je viens vers vous car j'ai un problème sur mon fichier, il s'agit de l'erreur "13" incompatibilité de type.

    Etant débutant en VBA j'ai récupéré un code sur un autre forum que j'ai modifier pour correspondre à mes besoins, mais il se trouve que j'ai une erreur lorsque j’appuie sur mon bouton "Modifier Utilisateur" ensuite je choisi dans mon tableau un utilisateur et lorsque j'appuie sur "Valider modifications" ou "Supprimer" mon erreur apparaît.

    Lorsque je fais débogage j'arrive sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
    Qui viens de la partie

    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
    Private Sub B_valid_Click()
      Enreg = Me.Enreg
      For c = 1 To NbCol
       If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
         tmp = Me("textbox" & c)
         If IsNumeric(Replace(tmp, ".", ",")) And InStr(tmp, " ") = 0 Then
            tmp = Replace(tmp, ".", ",")
            Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
         Else
             If IsDate(tmp) Then
               Range(NomTableau).Item(Enreg, c) = CDate(tmp)
             Else
               Range(NomTableau).Item(Enreg, c) = tmp
             End If
         End If
        Else
         Range(NomTableau).Item(Enreg - 1, c).Copy
         Range(NomTableau).Item(Enreg, c).PasteSpecial Paste:=xlPasteFormats
        End If
      Next c
      MsgBox ("Utilisateur mis à jour")
      UserForm_Initialize
      'raz
    End Sub
    Je suis a court d'idée quand a la résolution de mon problème. Je vous ai joint mon fichier si vous voulez voir comment ca se passe.

    Je vous remercie d'avance pour l'aide que vous m'apporterez.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut C'est pas surprenant !
    Bonjour,

    Aucune variable typée, quand on code ainsi, il ne faut pas s'étonner d'une Incompatibilité de type.
    Quand je vois ce code, j'ai les poils qui se hérissent !!!
    Je te conseille de lire ces billets :
    Problème variables publiques Pierre F
    [plage] une fausse bonne idée
    et ces tutos :
    Fondements sur les variables et les constantes
    Utiliser les variables en VBA Excel

    J'ajouterais qui lorsqu'on travaille sur un Range depuis un formulaire, il faut toujours le rattacher à son parent.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut Fonctionnement avant
    Bonjour,

    Je tiens a préciser que mon code fonctionnait avant que j'ajoute simplement le nom de mes colonnes dans le haut de la listbox, l'enregistrement se faisait et la suppression également.

    J'ai ajouter l'ancienne version pour que vous voyez que ca marche.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Diutaru Voir le message
    j'ai récupéré un code sur un autre forum
    Pourquoi ne pas avoir posé la question dans cet "autre forum" ?

    Lorsque je fais débogage j'arrive sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
    Lorsque le bug se produit, que contiennent précisément les variables NomTableau, Enreg et c.
    NomTableau est-il supposé être le nom d'un tableau structuré ou d'une zone nommée ?
    Quelle est la taille de cette zone ?

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Pourquoi ne pas avoir posé la question dans cet "autre forum" ?


    Lorsque le bug se produit, que contiennent précisément les variables NomTableau, Enreg et c.
    NomTableau est-il supposé être le nom d'un tableau structuré ou d'une zone nommée ?
    Quelle est la taille de cette zone ?
    Bonjour Menhir, je n'ai pas posé la question sur cet "autre forum" car enfaite c'est quelqu'un qui met juste des listbox ou autres sur un site et on les récupère juste, enfaite c'est plus un site de ressources qu'autre chose.

    La variable "NomTableau" contient mon tableau qui est créer dans la page BD donc "Tableau1"
    La variable "Enreg" contient "?"
    La variable "c" contient "1"

    Je viens effectivement de voir que dans ma colonne N° de ligne je ne la récupère pas, mon problème vient donc de la je pense.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Quand un bug se produit, le premier réflexe doit être de vérifier le contenu des variables impliquées dans la ligne de code.
    Un proverbe de programmeur dit "le diable se cache dans la variable".
    Citation Envoyé par Diutaru Voir le message
    La variable "Enreg" contient "?"
    Ca ne ressemble pas trop à un numéro de ligne...

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Ca ne ressemble pas trop à un numéro de ligne...
    Oui en effet je m'en suis rendu compte après avoir lu les messages, enfaite j'ai changé un truc avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ListBox1_Click()
      For i = 1 To NbCol
        Me("textbox" & i) = Me.ListBox1.Column(i - 1)
      Next i
      Me.Enreg = Me.ListBox1.Column(i - 1)
    End Sub
    Dans cette partie du code (Celui de ma V1) quand j'affichais le nom de mes colonnes de tableau j'avais une autre erreur qui est :
    Erreur d'exécution '-2147024809(80070057) Impossible de lire la propirété Column. Argument non valide.

    Donc j'avais remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Me.Enreg = Me.ListBox1.Column(i - 1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Me.Enreg = Me.ListBox1.Column(Nbcol - 1)
    Et c'est a partir de ce moment que ma nouvelle erreur est apparu.

  8. #8
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Bonjour à vous,

    Columns

  9. #9
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Le problème vient de la variable Enreg qui devrait être un nombre (= numéro de ligne).

    Elle fait référence à Me.Enreg, soit la textbox qui s'appelle Enreg dans ton Userform.
    Et si tu regardes bien en bas à droite de ton userform quand tu sélectionnes un Utilisateur, le champs N° Ligne reçoit une valeur qui n'est pas un numéro de ligne.

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 10
    Par défaut
    Citation Envoyé par mat955 Voir le message
    Bonjour,

    Le problème vient de la variable Enreg qui devrait être un nombre (= numéro de ligne).

    Elle fait référence à Me.Enreg, soit la textbox qui s'appelle Enreg dans ton Userform.
    Et si tu regardes bien en bas à droite de ton userform quand tu sélectionnes un Utilisateur, le champs N° Ligne reçoit une valeur qui n'est pas un numéro de ligne.
    Bonjour mat955,

    En effet après remarque je n'avais pas fais gaffe a ca étant donné que dans ma V1 elle fonctionnait, je vois donc que le problème vient de la alors.
    Il faut donc que j'arrive a récupérer mon N° de ligne pour que ca fonctionne de nouveau.

Discussions similaires

  1. [AC-2010] Erreur "incompatibilité de type"
    Par oreoolep dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/12/2011, 21h29
  2. Erreur incompatibilité de type au lancement formulaire
    Par koluche dans le forum VBA Access
    Réponses: 0
    Dernier message: 05/05/2011, 14h59
  3. Erreur "incompatibilité de type" lors import dans table Access
    Par spud96 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2011, 21h40
  4. erreur incompatibilité de type
    Par prince19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/06/2007, 11h43
  5. [VBA E]erreur incompatibilité de type que je ne comprend pas
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/07/2006, 14h14

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