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 :

[VBA][EXCEL]Conversion d'une chaine en single


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 134
    Points
    134
    Par défaut [VBA][EXCEL]Conversion d'une chaine en single
    Bonjour à tous

    J'utlise une UserForm afin d'acquérir des données. le problème est lorsque je veux affecter la valeur d'une textbox dans une variable de type single

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zone(compteur).Surf = ufDonnéesZone.tbSurface.Value
    lorsque j'execute ce code il me donne une erreur de type 13 soit une incompatibilite de type

    je vous remercie d'avance pour vos reponse

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu n'as pas ça dans ton aide ?
    Les fonctions ci-dessous convertissent une expression en un type de données spécifique.

    Syntaxe

    CBool(expression)
    CByte(expression)
    CCur(expression)
    CDate(expression)
    CDbl(expression)
    CDec(expression)
    CInt(expression)
    CLng(expression)
    CSng(expression)
    CVar(expression)
    CStr(expression)
    L'argument expression peut être n'importe quelle expression de chaîne ou expression numérique.

    Types renvoyés

    Le nom de la fonction détermine le type renvoyé, comme le montre le tableau suivant :

    Fonction Type renvoyé Plage de valeurs de l'argument expression
    CBool Boolean Toute chaîne ou expression numérique valide.
    CByte Byte 0 à 255.
    CCur Currency -922 337 203 685 477,5808 à 922 337 203 685 477,5807.
    CDate Date Toute expression de date valide.
    CDbl Double -1,79769313486232E308 à
    -4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives.
    CDec Decimal +/-79 228 162 514 264 337 593 543 950 335 pour les nombres sans décimales. La plage de valeurs des nombres à 28 décimales est
    +/-7,9228162514264337593543950335. Le plus petit nombre différent de zéro est 0,0000000000000000000000000001.
    CInt Integer -32 768 à 32 767 ; les fractions sont arrondies.
    CLng Long -2 147 483 648 à 2 147 483 647 ; les fractions sont arrondies.
    CSng Single -3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives.
    CVar Variant Même plage de valeurs que le type Double pour les nombres et que le type String pour les chaînes non numériques.
    CStr String Les valeurs renvoyées par Cstr dépendent de l'argument expression.
    A+

  3. #3
    Membre habitué Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 134
    Points
    134
    Par défaut
    Tout d'abord je vais repondre a ta question

    non je n'ai pas trouver ca dans l'aide avec l'index en tout cas
    sinon en utilisant Csng j'ai toujours le mm pb d'incompatibilité de type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zone(compteur).Surf = CSng(ufDonnéesZone.tbSurface.Value)
    je vais te donner la définition de mon type ou cas ou ca viendrait de la.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Type DonneesZones
     
        Nom As String
        Surf As Single
        GV As Single
        ModeChauffagePrimaire As String
        ModeChauffageSecondaire As String
     
    End Type
    Meme quand je passe par l'intermediaire d'une variable tampon ca ne marche pas

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    A priori l'erreur apparaît , si le text box et vide ... où s'il contient des caractéres autre que des chiffre ou , ... , fais une petite recherche sur le forum .. il y as pas longtemps, un post à traité du probléme d'autoriser ou pas certain cractéres dans textbox...

    puis avant convertion du textbox ... assure toi qu'il ne soit pas vide ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ufDonnéesZone.tbSurface.Value <> "" then
    Zone(compteur).Surf = ufDonnéesZone.tbSurface.Value
    else
    Zone(compteur).Surf = 0


    PS .. je vais voir si je retrouve ce fameux post..
    [edit] .. bon j'ai trouvé et donc j'en ai déduit ce code à rajouter à ton text box...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub tbSurface_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        Select Case KeyAscii
         Case Asc(",")
     
         Case Asc(".")
            KeyAscii = Asc(",") 'Remplace . par virgule
         Case Else
          If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
          End Select
     
    End Sub

  5. #5
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Salut,

    Le premier test à faire, je pense, est de contrôler que tu a bien affaire à une valeur numérique.

    Pour cela tu as une fonction qui s'appelle "IsNumeric".

    Pour ton cas, ça devrait donner quelque chose comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsNumeric(ufDonnéesZone.tbSurface.Value) then 
       Zone(compteur).Surf = CSng(ufDonnéesZone.tbSurface.Value) 
    Else 
       MsgBox "Valeur non numérique"
    End If
    Voilà

    J'espère que cela te donnera des pistes pour résoudre ton problème

    +

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  6. #6
    Membre habitué Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 134
    Points
    134
    Par défaut
    Je remercie tt le monde pour toutes les réponses.

    le problème venait de la virgule sous d'excel donc un grand merci à bbil

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/05/2007, 17h42
  2. [VBA Excel] conversion d'une chaine en numérique
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2005, 17h56
  3. [string->HTML] Conversion d'une chaine en HTML
    Par salome dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 24/07/2005, 16h27
  4. Conversion d'une chaine de char en numerique
    Par simone.51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/03/2004, 16h47
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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