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 :

Err 13 - Incompatibilité de Type - Calcul sur TextBox [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Err 13 - Incompatibilité de Type - Calcul sur TextBox
    Err 13 - Incompatibilité de Type - Calcul sur TextBox

    Code problème début dans UserForm2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chq_Total = Me.TextBox14 + Me.TextBox15 + Me.TextBox16 + Me.TextBox17 + Me.TextBox18 + Me.TextBox19 + Me.TextBox20 + Me.TextBox21 + Me.TextBox22 + Me.TextBox23
    Plusieurs essaie sur le même theme !
    L'addition fct avec les 2 premiers TBox Mais ca me donne un chiffre concatener
    TBox 14 +Tbox15
    25+26 =2526 au lieu de 51

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'chq_Total = Me.TextBox14 + Me.TextBox15
    chq_Total = Me.TextBox14 + Me.TextBox15 + Me.TextBox16 + Me.TextBox17 + Me.TextBox18 + Me.TextBox19 + Me.TextBox20 + Me.TextBox21 + Me.TextBox22 + Me.TextBox23
    'chq_Total = Me.TextBox14 * 1 + Me.TextBox15 * 1 + Me.TextBox16 * 1 + Me.TextBox17 * 1 + Me.TextBox18 * 1 + Me.TextBox19 * 1 + Me.TextBox20 * 1 + Me.TextBox21 * 1 + Me.TextBox22 * 1 + Me.TextBox23 * 1
    'Total_ch = Format(45.23, "Currency")
    Total_ch = chq_Total
    UserForm1.TextBox17.Value = Sheets("Lst").Range("DsumCH")
    J'ai tenter de corriger avec le code suivant (Une variante de solution trouvez ici) et plusieurs hres de lecture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub PH_validate()
    Dim Ctrl As Control
    For Each Ctrl In UserForm2.Controls
    If TypeName(Ctrl) = "TextBox" Then
                MsgBox VarType(Ctrl) & " TB " & Ctrl
                If IsNumeric(Ctrl) Then
                Ctrl = Format(Ctrl.Value, "Currency")
                MsgBox Ctrl & " Numeric" 'CurrencyTransform (Ctrl)
                Else: MsgBox "Not Numeric  Tbox"
                End If
    Else: MsgBox Ctrl & " Not  TBox"
    End If
    Next Ctrl
    End Sub
    Ca me dit que les chiffres sont bien en place mais le code continue de traiter ça comme du texte !

    Je comprend pas pour les textBox traite les chiffres comme du texte et les + comme des &

    Comment on peut débugger ça ? TRouver mon erreur ?

    Merci
    Note: les Dim sont OK (A mon avis !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
    Dim Ws2 As Worksheet
    Dim cd_Secteur As String
    Dim cd_Depot As String
    Dim p_Date As Date
    Dim Total_ch As Currency
     
    Private Sub CalculCH()
    Dim chq_Total As Currency

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Rien d'etrange puisque comme leur nom l'indique les textbox donnent en sortie des texte le signe + appliqué aux string permet la concaténation
    Pour faire la somme il faudra d'abord convertir.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox cdbl(textbox1)+cdbl(textbox2)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Pas Vraiment !
    Toujours la même erreur 13
    sur l'addition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chq_Total = CDbl(Me.TextBox14) + CDbl(Me.TextBox15) + CDbl(Me.TextBox16) + CDbl(Me.TextBox17) + CDbl(Me.TextBox18) + CDbl(Me.TextBox19) + CDbl(Me.TextBox20) + CDbl(Me.TextBox21) + CDbl(Me.TextBox22) + CDbl(Me.TextBox23)
    Total_ch = Format(chq_Total, "Currency")
    Comme tu l'as dit TextBox c'est pour texte... Mais J'aimerais bien qu'il existe des ChiffresBox moi

    J'envoie le detail de des TextBox dans excel et j'Obtiens l'addition avec BDSOMME(range). J'en conclut que les chiffre sont OK
    Y a-t-l un truc pour savoir ou cela accroche ailleurs dans le module ?

    Merci pour ton aide

    Je vais laissé les convertisseur en place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chq_Total = CDbl(Me.TextBox14.value) + CDbl(Me.TextBox15.value) + etc
    Solution Possible ?

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    au lieu de te perdre en considération sur la qualité de la réponse apportée par mercatog, et une tentative de refaire le monde alors qu'il est déjà disponible dans l'aide VBA, peux-tu plutôt :

    - nous montrer ton code entier
    - indiquer la ligne exacte où ça plante
    - nous donner quelques exemples de valeurs qui sont dans les textbox

    là clairement, je vois deux possibilités :

    - ta variable chq_Total (ou un autre) n'est pas du bon type
    - t'as des chiffres avec un séparateur qui coince lors de la conversion (j'y crois moins)

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci Joe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim chq_Total As Currency
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Total_ch As Currency
    L'erreur est en jaune dans le calcul avec convertisseur indiquer par mercatog,
    elle arrive quand on clique sur calcul du total des chèques UserForm2 dans le modele en PJ

    J'ai pas beaucoup de variable - Elle sont toute Currency

    Merci
    Fichiers attachés Fichiers attachés

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    truc= cdbl(replace(txtbox1,",",".")) +cdbl(replace(txtbox2,",","."))
    après avoir remplacer le "," tu peut aussi utiliser "Val" a la place "cdbl" mais perso je le ferait en amont
    dans le keypress ou keydown(forcer le point comme sep... decimal)
    tu trouvera cela dans une de mes discussion de ces derniers jours et plein d'autre exemple sur ce forum ainsi que les contribs
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci Patrick pour ton commentaire

    entre temps j'ai résolue autrement !

    Voir plus bas la Version finale du code qui fct

    En fait la réponse que j'avait besoin de lire c'est :

    Si vous voulez faire des calculs à partir de Valeur qui sont dans des TextBox
    Créer des Variables avec les type approprié pour chaque textBox qui contient les valeurs requises pour les calculs
    et utiliser ces variables pour faire les calculs et non les textBox (au lieu des TBox)
    Comme ça la vie est belle !

    SVP: Aux experts de me dire si ma conclusion est un "Best Practice" ou non !

    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
    Option Explicit
     
    Dim Ws2 As Worksheet
    Dim cd_Secteur As String
    Dim cd_Depot As String
    Dim p_Date As Date
    Dim Total_ch As Single
    Dim Ch1 As Single
    Dim Ch2 As Single
    Dim Ch3 As Single
    Dim Ch4 As Single
    Dim Ch5 As Single
    Dim Ch6 As Single
    Dim Ch7 As Single
    Dim Ch8 As Single
    Dim Ch9 As Single
    Dim Ch10 As Single
     
    Private Sub CalculCH()
    Dim chq_Total As Single
     
    'CalculCH1
     
    Ch1 = Me.TextBox14
    Ch2 = Me.TextBox15
    Ch3 = Me.TextBox16
    Ch4 = Me.TextBox17
    Ch5 = Me.TextBox18
    Ch6 = Me.TextBox19
    Ch7 = Me.TextBox20
    Ch8 = Me.TextBox21
    Ch9 = Me.TextBox22
    Ch10 = Me.TextBox23
     
    chq_Total = Format(Ch1 + Ch2 + Ch3 + Ch4 + Ch5 + Ch6 + Ch7 + Ch8 + Ch9 + Ch10, "0.00")
     
    Total_ch = Format(chq_Total + Sheets("Lst").Range("DsumCH"), "0.00")  ' addition des ch en cours + ceux dans BD
     
    UserForm1.TextBox17.Value = Format(Total_ch, "0.00")  'Update Ttl Ch dans UsF1
     
    End Sub

  8. #8
    Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je relis le texte de Patrick

    J'ai déja mis en place des validations "keypress" et c'est très efficace !!!

    Concernant cbdl ca semble convertir des variables de type"XYZ" en Double. Mais moi je veut traiter les strings de mes TBox pour faire des calculs
    J'ai essayer et cela n'a pas fct.

    Par ailleurs comme je suis à Montréal et que je voit des "," au Lieu de "." dans certaine de mes boites....
    Je retiens ta solution.
    J'utilise Office 2013 Francais sur ma surface W10 et Office 2010 anglais W7 au bureau alors ca peut être mélangeant de passer d'un à l'autre avec le meme fichier.

    à suivre

    Merc

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

Discussions similaires

  1. [XL-2010] Pb incompatibilité de type 13 sur un userform
    Par mickisa dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/08/2016, 11h07
  2. incompatibilite de type sur critere de requete
    Par Invité dans le forum VBA Access
    Réponses: 13
    Dernier message: 08/07/2008, 11h28
  3. Fautes de calcul sur nombre de type currency
    Par Atom420 dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/09/2007, 10h51
  4. Err 13 Incompatibilté de type sur recordset
    Par AndréPe dans le forum Access
    Réponses: 3
    Dernier message: 18/01/2007, 16h04
  5. [VBA] Passage objet Form : err 13 incompatibilité de type.
    Par Caroline1 dans le forum Contribuez
    Réponses: 6
    Dernier message: 12/04/2006, 14h39

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