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 :

Valeur numérique d'un userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut Valeur numérique d'un userform
    Bonjour,

    J'effectue une saisie de champs dans un tableau excel à partir d'un userform. Parmi les données introduites, je réalise une saisie de valeurs numériques, cepedant, excel les considèrent comme des valeurs texte! Et je dois réaliser une somme de ces valeurs, mais du coup excel ne fait pas le calcul, car pour lui c'est du texte.

    J'ai essayé de les déclarer dans la macro de mon userform, ces valeurs comme numérique
    Voici le code :

    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
    Private Sub CommandButton1_Click()
    Dim n As Integer, nbpalette As Single, nbcolis As Single, nblignes As Single  'ce sont les varibles que je souhaite déclarer en valeur numérique
    n = 9
    Do While Not [...]
     
     
    Cells(n, 3) = TextBox7  'il s'agit de la liste de champs que saisie dans le tableau  à partir des textbox
    Cells(n, 4) = TextBox8
    Cells(n, 5) = TextBox9
    Cells(n, 6) = TextBox10
    Cells(n, 7) = TextBox11 
                    ....
    nbpalette = TextBox10  ' et la je déclare les valeurs de manière à ce quelles soient considérées comme numérique 
    nbcolis = TextBox11
    nblignes = TextBox16
    Sheets("feuil1").Cells(n, 6) = nbpalette
    Sheets("feuil1").Cells(n, 7) = nbcolis
    Sheets("feuil1").Cells(n, 8) = nblignes
    Unload UserForm1
    ActiveWorkbook.save
    End Sub
    Finalement ma macro fonctionne, mes valeurs sont considéré comme numérique, cependant le soucis c'est que je vais saisir plusieurs fois des lignes sans pb, mais à partir d'un moment cela va m'indiqué un erreur dans ma macro à partir de "nbpalette = Textbox10 " (erreur : incompatibilité de type). Et cette erreur va apparaître de manière complètement aléatoire. Et là je ne comprend pas du tout pourquoi une macro peut marcher 1 fois sur 2.

    Peut-être existe-t-il une manière plus simple pour résoudre ce problème?
    Est-ce que quelqu'un peut m'aider? merci

  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
    Par défaut
    Tu dois avoir une erreur de saisie dans tes txtbox
    Teste ça que tu mets dans chaque textbox (en adaptant son N° ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Textbox1 = "" then exit sub
         if not is numeric(Textbox1) then
              Cancel = true
              else
              Cancel = False
         Endif
    Endif
    Ainsi tu vérifies chaque valeur à la sortie du textbox.
    A+

  3. #3
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Bonjour à tous
    Bonjour podfez

    Une autre solution, mais sans avoir ton code entier pour voir où se "fait" l'erreur, essaie de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbpalette= Evaluate(TextBox10.Value)
    Eric

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour à tous,

    tu peux aussi écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbpalette = TextBox10.Value * 1
    qui te convertira la valeur texte en numérique, ... si possible.
    Cordialement

  5. #5
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    J'ai testé vos différentes solutions, et effectivement elles marchent, merci!!!
    Mais cela m'a permis de comprendre la source de mes erreurs, en faite dans la saisie de mes valeurs numériques, il peut être saisie la valeur null . Du coup cela change la donne.
    j'imagine qu'il faut que j'intègre une nouvelle condition qui tolère aussi la saisie de textbox vide?

  6. #6
    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
    Par défaut
    Tu as ça là
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Textbox1 = "" then exit sub
    'sinon le traitement que tu souhaites utiliser

  7. #7
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    Oui c'est vrai que ta macro marche parfaitement, en faite j'avais encore un pti soucis, parce qu'au final j'avais déclaré ma variable comme un entier, et cela marchait pas puisque qu'elle peut prendre une valeur numérique et une valeur null. Merci de ton aide

    Par contre pourrais-je te demander un dernier petit service? Cela concerne la macro que tu m'as proposé. Au final je ne cherche pas seulement à recopier bêtement les solutions des autres, mais a comprendre aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)   
    If Textbox1 = "" then exit sub                                                           
         if not is numeric(Textbox1) then
              Cancel = true
              else
              Cancel = False
         Endif
    End sub
    Je comprend toute le fonctionnement de la macro, mise à part la 1ère ligne, que signifie byval et la variable Msforms.returnboolean?
    Si tu as un peu de temps à me consacrer pour m'expliquer n'hésite pas.
    En tous cas merci
    A+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    oui avec textbox.value il récupère le chiffre avec ou sans virgule ( ou point!!!)

  9. #9
    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
    Par défaut
    Citation Envoyé par podfez
    Je comprend toute le fonctionnement de la macro, mise à part la 1ère ligne, que signifie byval et la variable Msforms.returnboolean?
    Si tu as un peu de temps à me consacrer pour m'expliquer n'hésite pas.
    En tous cas merci
    A+
    Je t'en pose, moi, des questions ?
    Byval signifie que l'argument Cancel est passé par valeur, cette valeur est un boolean (true ou false -1 ou 0)
    Quant à "As MSForms.ReturnBoolean" et si j'en crois l'aide, "spécifie l'état ou le contenu d'un contrôle donné"
    Désolé mais après, je n'en sais pas plus que toi

  10. #10
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    Ok merci pour les infos

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

Discussions similaires

  1. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15
  2. Remplacement d'une valeur numérique
    Par Jean-Louis Corbiau dans le forum Access
    Réponses: 9
    Dernier message: 29/09/2005, 15h25
  3. [xslt] filtrer des valeurs numériques
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/09/2005, 12h01
  4. retait d'une valeur numérique au mieu d'un texte
    Par RémiDavid dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/04/2004, 16h20
  5. [Delphi 6] EditBox -> valeurs numériques ?
    Par JBrek dans le forum Composants VCL
    Réponses: 9
    Dernier message: 02/12/2002, 13h08

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