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 :

Variables .Value des textbox


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
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut Variables .Value des textbox
    Bonjour à tous, je sollicite à nouveau ce forum, car j'ai besoin d'aide pour terminer un formulaire de gestion de BDD automatique.
    (saisie,correction, création de lignes...)

    J'ai actuellement une série de textboxs où l'on peut saisir des chiffres.
    Une autre textbox se trouve à la fin. Il s'agit d'un total des précédentes. Par contre, je veux que ce total puisse être modifié à la main.

    de cette manière, j'ai écris le code suivant, qui s'active lorsque l'on clique sur un bouton de calcul auto. du total:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CHAMPSTOTAL = champs1.Value + champs2.Value + champs3.Value
    Seulement, le résultat me donne un concatener:
    si
    champs1 = 1
    champs2 = 2
    etc...
    mon résultat donne 1234567

    Comme je me suis dis que le combobox est une variable texte, j'ai tenté de transformer mes valeurs textbox en utilisant des variables integer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim "mavaleur" as integer
    montotal = mavaleur
    Mais ça ne marche pas! Qualqu'un aurait-il une idée SVP?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut
    Bonsoir,

    il faut convertir les texte en nombres et les nombres en texte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim Total as double
     
    Total = CDbl(Champs1.value)+CDbl(Champs2.value)+CDbl(Champs3.value) 'convertit du texte en nombre
    ChampsTotal = format(Total) 'Renvoie du texte
    Regarde Cint, CLng, Csng, CDbl Format et Cstr dans l'aide.

    Bonne soirée.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Une idée ?

    Certes...

    S'intéresser à la fonction Val et à ce qu'elle retourne.

    Le contenu d'une TextBox est une chaîne de caractères, pas du "numérique" et l'opérateur + est également un opérateur de concaténation, pas uniquement un opérateur arithmétique... et VB choisit sa fonctionnalité ... en fonction du type des données (concaténation si String, addition si numérique)

    Dommage de n'apprendre celà qu'à la fin d'un stage (généralement, c'est au tout début...)

    Bonne étude ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut
    Merci, ucfoutu et spileo pour ces réponses rapides. Je vais me pencher sur cela dès demain matin.

    Pour ce qui est du stage, comment as-tu deviné?
    Mais bon, étant en ESC, je fais du contrôle de gestion et je n'ajoute des modules que pour améliorer la réutilisation future du fichier en mon absence. C'est comme ça que j'ai découvert le VBA, il y a trois semaines, en m'intéréssant de plus près à la codification des macros avec visual basic! Et depuis, on ne se quitte plus! lol

    et merci encore, je vous tiens au courant si ça fonctionne...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut
    MMhh... Je me suis rapidement penché sur l'appel Cdbl, sans avoir trop le temps. Mais visual basic me met une erreur (je crois que c'est la 31, si mes souvenirs sont bons).

    A oir quand j'aurai un peu plus de temps à consacrer à ça

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour yannpiot,

    Comme précisé par Ucfoutu et Spileo il faut transformer les données "texte" en "valeurs".

    Mais il faudrait préciser si les valeurs ne peuvent être que des nombres entiers auquel cas vous pouvez utiliser la fonction "Val" ou s'il peut s'agir de nombres décimaux et dans ce cas utiliser "CdBl".

    Mais dans ce dernier cas il reste un autre problème éventuel selon que dans paramètres "Panneau de configuration", "Options régionales" le séparateur décimal soit le "." ou la "," et selon le séparateur décimal que vous tapez dans la zone de saisie.

    Il y a d'ailleurs une solution pour pouvoir utiliser indifféremment le point ou la virgule sans avoir d'erreur que j'utilise pour les programmes mis à disposition d'autres personnes.

    Enfin pour l'utilisation des types de variables, je vous conseille de jeter un coup d'oeil ici :

    http://silkyroad.developpez.com/VBA/LesVariables/#LII-E

    cela peut toujours être utile.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut
    Merci jacques_jean pour on petit lien... mais j'avais déjà trouvé le même type d'info je ne sais plus où.

    J'ai bien essayé avec le code de Spileo, et ça marche comme il faut (dans mon cas, j'ai en effet besoin des décimales).

    Mais seul petit bémol:

    Quand tous mes champs sont complétés, le code marche. Par contre, lorsque
    j'ai des champs vides (""), le language ne prend pas en compte cette valeur comme du chiffre, même avec Cdbl() . D'où une erreur de script.

    D'un autre coté, je ne peut pas mettre de zéros dans les cases, cela ne signifierait pas la même chose...

    Je vais chercher de mon coté, je pense pouvoir glaner ça sur le net...

    Merci en tout cas! Je dois dire que le club des développeurs m'a énormément aidé dans mes tous premiers travaux de VBA

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

Discussions similaires

  1. Gérer le focus sur des TextBox, en événementiel
    Par laterite dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/01/2006, 17h10
  2. taille des variables ou des objets?
    Par BobLBricoleur dans le forum Flash
    Réponses: 4
    Dernier message: 27/12/2005, 14h57
  3. Réponses: 11
    Dernier message: 09/12/2005, 14h59
  4. Réponses: 9
    Dernier message: 17/10/2005, 10h44
  5. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45

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