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 :

[E-03] Affecter le contenu d'une textbox à une variable numérique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Par défaut [E-03] Affecter le contenu d'une textbox à une variable numérique
    Bonsoir,

    J'ai un petit problème pour effectuer des calculs avec des nombres saisis dans une textbox.

    Lorsque j'exécute le code en mode pas-à-pas, je me rends compte que j'arrive bien à récupérer la valeur numérique saisie dans une textbox mais je n'arrive pas à l'affecter à une variable numérique.

    Le userform que j'utilise sert à saisir des dimensions pour faire de bêtes calculs de longueurs, surfaces ou volumes.
    Ca ressemble à ça (je sais c'est moche mais au moins c'est simple ):




    Et voici le bout de code en question (j'ai mis en gras la partie qui me sert de test, donc en l'occurrence calculer l'aire d'un rectangle):



    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
    Private Sub Ok_Click()
    
    Dim Result As Single
    
    If OptionLin.Value = True Then
        Result = DimLin
        If OptionCer.Value = True Then
            Result = Pi * Diam / 2
            If OptionRec.Value = True Then
                Result = CSng(LongRec) * CSng(LargRec)
                If OptionTri.Value = True Then
                    Result = (BaseTri * HTri) / 2
                    If OptionTrap.Value = True Then
                        Result = HTrap * (GBase * PBase) / 2
                        If OptionDisc.Value = True Then
                            Result = Pi * DiamDisc ^ 2 / 4
                            If OptionTran.Value = True Then
                                Result = LongTran * LargTran * ProfTran
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
        
    Sheets("Feuil1").Select
    ActiveCell.Range("A1") = Result
    
    Unload MS
    
    End Sub
    Donc comme je l'expliquais auparavant quand je teste ce code en mode pas-à-pas et que je suis arrêté sur le End If, je peux voir en passant le curseur sur le code que CSng(LongRec) vaut ce que j'ai saisi, CSng(LargRec) aussi mais Result vaut 0 (LongRec et LargRec sont les noms des textbox).


    Je suis totalement débutant donc soyez cléments avec moi

    Merci d'avance

  2. #2
    Membre éprouvé Avatar de DidierLoche
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 84
    Par défaut
    Bonsoir,

    Bizarre, chez moi, ça marche bien (Excel 2003). Quelle version d'Excel tu utilises ? Quel séparateur décimal utilises-tu (le point ou la virgule) ? Comment sont définis LongRec et LargRec ?
    J'ai créé un userform et deux textbox (TextBox1 et TextBox2). Le code suivant marche quel que soit le séparateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub toto()
    Dim a As Single
    UserForm1.TextBox1 = "2,9"
    UserForm1.TextBox2 = "8.9"
    a = CSng(UserForm1.TextBox1) * CSng(UserForm1.TextBox2)
    End Sub
    Didier

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Par défaut
    J'utilise Excel 2003 au boulot et 2007 chez moi (en enregistrant en mode compatibilité 97-2003 mais vu la simplicité du code je ne pense pas que cela change grand chose entre 2007 et 2003).

    Je n'ai même pas rentré de nombres avec des décimales pour le moment...je fais le test en mettant 2 et 3.

  4. #4
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonsoir,

    au cas où , rajoute la ligne :
    en haut de ton code .

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    bonsoir,

    au cas où , rajoute la ligne :
    en haut de ton code .
    => C'est fait, mais à part Pi que j'ai du déclarer comme constante (c'est bête mais je pensais qu'il connaissait) tout est bon et rien n'a changé

  6. #6
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    ok donc les noms de tes variables sont bons, mais peu-être ne passe tu pas où tu devrai essai de rajouter un stop et regarde l'état de tes variables à ce moment la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Result = CSng(LongRec) * CSng(LargRec)
    stop

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

Discussions similaires

  1. Affecter une richtext à une textbox ?
    Par gastoncs dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/10/2011, 02h16
  2. Réponses: 2
    Dernier message: 23/12/2009, 13h33
  3. Lier les données d'une textbox à une autre
    Par Popeye63 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/11/2009, 16h51
  4. Affecter le contenu du presse papier à une variable
    Par riri2938 dans le forum VBA Access
    Réponses: 7
    Dernier message: 14/02/2009, 16h44
  5. Agrandir une bouton, une textbox, .Impossible
    Par Thesum dans le forum Visual Studio
    Réponses: 3
    Dernier message: 28/05/2008, 09h14

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