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


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 33
    Par défaut Erreur d'exécution 13 - Incompatibilité de type
    Bonjour à tous...
    Je tiens à vous remercier en avance pour votre aide.
    J'essaie d'enregistrer le résultat de ce calcul dans un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub cbxRabaisSoins_Change()
    Dim pourcentage As Double
    If Me.cbxRabaisSoins.Value = "" Then pourcentage = 0 Else pourcentage = Me.cbxRabaisSoins.Value / 100
    'Me.lblvaleurPourcentage = pourcentage
    Me.lblPrixSoins = CCur(Me.lblAffichePrixSoin) - (CCur(Me.lblAffichePrixSoin) * pourcentage)
     
    End Sub
    Enrégistrement dans le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Article").Range("N" & DL) = CCur(Me.lblPrixSoins.Caption)
    La cellule du tableau au format "Monétaire"
    Mon problème:
    L'enregistrement se fait dans le tableau, mais je reçois le message : "erreur d'exécution 13, Incompatibilité de type"
    je ne vois pas d’où peut venir le problème.
    J'ai aussi essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim pourcentage As Variant
    If Me.cbxRabaisSoins.Value = "" Then pourcentage = 0 Else pourcentage = Me.cbxRabaisSoins.Value / 100
    'Me.lblvaleurPourcentage = pourcentage
    Me.lblPrixSoins = CCur(Me.lblAffichePrixSoin.Caption) - (CCur(Me.lblAffichePrixSoin.Caption) * pourcentage)
    et j'ai toujours le même message, malgré que le tableau soit rempli.

  2. #2
    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 macjs Voir le message
    L'enregistrement se fait dans le tableau, mais je reçois le message : "erreur d'exécution 13, Incompatibilité de type"
    Quelle ligne de code est désignée par le débugage lorsque ce message d'erreur apparait ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 33
    Par défaut
    Voici la ligne de code désignée par le débogage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblPrixSoins = CCur(Me.lblAffichePrixSoin) - (CCur(Me.lblAffichePrixSoin) * pourcentage)

  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
    Histoire de localiser plus précisément le problème, coupon-le en morceaux.
    Juste avant cette ligne, mets le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.lblPrixSoins = CCur(Me.lblAffichePrixSoin)
    Me.lblPrixSoins =  CCur(Me.lblAffichePrixSoin)
    Me.lblPrixSoins = pourcentage

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 33
    Par défaut
    La ligne de code désignée par le débogage est celle ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblPrixSoins = CCur(Me.lblAffichePrixSoin)
    avec le même message d'erreur.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2019
    Messages : 144
    Par défaut
    Bonjour

    Qu'y a t il comme données dans ton étiquettes ?

  7. #7
    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
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblPrixSoins = Format(Me.lblAffichePrixSoin, "# ##0.00 €")

  8. #8
    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
    Bonjour,

    Essaies comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Private Sub cbxRabaisSoins_Change()
    Dim pourcentage As Double
      If Me.cbxRabaisSoins.Value = "" Then pourcentage = 0 Else pourcentage = Val(Me.cbxRabaisSoins.Value) / 100
      Me.lblPrixSoins = Format(Val(Me.lblAffichePrixSoin.Caption) * (1 - pourcentage), "# ##0.00 €")
    End Sub

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 33
    Par défaut
    Je vous remercie infiniment pour votre aide précieuse à tous. Mais j'aimerais comprendre pourquoi ça fonctionne .

  10. #10
    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
    Bonjour,
    Citation Envoyé par macjs Voir le message
    Je vous remercie infiniment pour votre aide précieuse à tous. Mais j'aimerais comprendre pourquoi ça fonctionne .
    1) Pour éviter tout problème, lorsqu'on travaille avec des objets (combobox, label, ...) il convient de toujours préciser la propriété qu'on veut utiliser (.Valeur, .Caption, ...)
    2) le combox est un objet dont la valeur est un texte (pas un nombre), il en est de même pour Caption d'un label, pour obtenir un nombre, il convient donc de les convertir, la fonction Val() permet de façon simple de convertir en nombre de type Double, un texte dont les premiers caractère sont "convertibles" en nombre, par exemple le texte 30,58 € en nombre 30,58.
    Le type double offre une précision suffisante pour la plupart des cas (15 chiffres significatifs). Pour des calculs plus précis, avec des grands chiffres, on pourrait utiliser le type Currency (15 chiffres avant la virgule et 4 après) via CCur mais si on cherche la précision, il vaut mieux utiliser le type Decimal (28 chiffres significatifs).

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 33
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,


    1) Pour éviter tout problème, lorsqu'on travaille avec des objets (combobox, label, ...) il convient de toujours préciser la propriété qu'on veut utiliser (.Valeur, .Caption, ...)
    2) le combox est un objet dont la valeur est un texte (pas un nombre), il en est de même pour Caption d'un label, pour obtenir un nombre, il convient donc de les convertir, la fonction Val() permet de façon simple de convertir en nombre de type Double, un texte dont les premiers caractère sont "convertibles" en nombre, par exemple le texte 30,58 € en nombre 30,58.
    Le type double offre une précision suffisante pour la plupart des cas (15 chiffres significatifs). Pour des calculs plus précis, avec des grands chiffres, on pourrait utiliser le type Currency (15 chiffres avant la virgule et 4 après) via CCur mais si on cherche la précision, il vaut mieux utiliser le type Decimal (28 chiffres significatifs).
    Encore merci pour les explications. ça m'a été d'une grande aide. Encore merci à tous ceux qui ont participé à cette discussion.

+ 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