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 :

Problème d'opérateur et variables [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 25
    Points : 16
    Points
    16
    Par défaut Problème d'opérateur et variables
    Bonjour à tous, et surtout bonne année ^^.

    Je m'adresse à vous car j'ai un petit soucis, habitué à developper des applications sous visual basic .NET, je dois pour un stage d'école développer une application sous VBA excel . or j'ai un petit problème qui doit vraiment être simpliste ^^ mais la je suis sur une colle.

    Bon je m'explique j'ai essayé de faire un calcul tout bête avec des variables juste une petite additions voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm()
    Dim récup1 As Double
    Dim récup2 As Double
    Dim récup3 As Double
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub cmdok_click()
    récup1 = nb1.Text
    récup2 = nb2.Text
    récup3 = nb3.Text
    MsgBox (récup1 + récup2 + récup3)
    End Sub
    Or si je lance l'application et que par exemple je rempli les textbox avec des 1 donc le calcul 1 + 1 + 1 devrait me donner 3 ( très dur je sais ^^) mais il me donne 111 :/ alors que si je remplace les + par des * cela fonctionne très bien.

    Pourriez vous s'il vous plait me dire à quoi cela peux être du pour que je puisse continuer mon projet tranquilement car je n'ai rien trouvé sur le net pour m'aider

    Merci d'avance Miska

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour miska le forum dans une textbox les valeurs sont consideres comme du text il faut convertir
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox3.Value = CDbl(TextBox1) + CDbl(TextBox2)
    on peut utiliser VAL a la place de cdbl mais val pas aimer virgurle
    SALUTATIONS

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    merci de m'avoir répondu si rapidement mais je ne comprend pas dans ce cas pourquoi cela marche avec une * ou un / ? je voudrai vraiment comprendre

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    Bonjour

    essaie -->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox CDbl(TextBox1) + CDbl(TextBox2) + CDbl(TextBox3)
    Je ne vois pas l'intérêt de déclarer tes variables dans Private sub Userform. elles ne servent que là et pas dans l'autre code.

    Amicalement

    Dan

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour et bonne année à tous
    Pourriez vous s'il vous plait me dire à quoi cela peux être du pour que je puisse continuer mon projet tranquilement car je n'ai rien trouvé sur le net pour m'aider
    C'est simplement du au fait qu'à l'origine du Basic (il y a plus de 30 ans), le symbole + était utilisé pour la concaténation de chaine.

    Donc lorsque VBA rencontre des zones de texte, il ne les additionne pas.

    Pour résoudre ton problème, tu peux convertir en numérique tes zones de texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    récup1 = val(nb1.Text)
    récup2 = val(nb2.Text)
    récup3 = val(nb3.Text)
    Par contre, si tu déclares tes variables (récup1, récup2,..) dans la procédure UserForm elles ne seront plus accessibles dans la procédure cmdok_click.
    La déclaration doit se faire au niveau du module dans Général/Déclarations(tout en haut du module)

    Edit : Désolé pour le télescopage, j'ai été long a rédiger ma réponse
    Frédéric
    Développeur d'Applications Access

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re

    merci de m'avoir répondu si rapidement mais je ne comprend pas dans ce cas pourquoi cela marche avec une * ou un / ? je voudrai vraiment comprendre
    Dans l'ancien basic, il n'existait que 2 types de variables : texte ou numérique. Et c'est le signe $ en fin de leur nom qui faisait la distinction.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim VarT$ ' déclaration texte
    Dim VarN 'déclaration numérique
    Donc lorsque le programme rencontrait le signe +, il savait à quelle type de variable il avait à faire et soit il additionnait, soit il concaténait.

    Voilà une petite leçon d'histoire
    Frédéric
    Développeur d'Applications Access

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Un grand merci à vous deux je comprend maintenant maintenant je vais sortir un peu moins bête et je vais pouvoir avancé pour mon stage... je préfère quand même largement le vb.NET ^^ sous lequel j'ai été appris ^^ et qui me parait plus simple d'utilisation

    En tous cas merci pour votre rapidité d'action je vais pouvoir poursuivre mon stage tranquillement

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

Discussions similaires

  1. [XL-2003] Problème d'opérateur dans variable
    Par Toine-45 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2015, 21h21
  2. [FLASH 8] Probléme chargement .swf et variable
    Par segphault dans le forum Flash
    Réponses: 1
    Dernier message: 24/10/2005, 13h18
  3. [EasyPHP] problème de visibilité des variable dans les includes
    Par d1g-2-d1g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/10/2005, 01h55
  4. Réponses: 1
    Dernier message: 27/07/2005, 17h08
  5. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34

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