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 insertion depuis une textbox dans une cellule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Octobre 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Logistique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 104
    Par défaut Problème insertion depuis une textbox dans une cellule
    Bonjour à tous,

    bonne rentrée à ceux qui ont eu des vacances, courage pour les autres.

    Voici mon problème, j'ai une UserForm qui sert à entrer des heures dans un fichier excel. Tout fonctionnait à merveille jusqu'à ce qu'on me demande de pouvoir entrer des nombres à virgule.
    Le principe est simple, lorsque je valide ma saisie, la macro entre dans la cellule son contenu plus celui de la TextBox.
    Je pensais avoir résolu le problème en mettant la cellule au format de nombre, ça marche pas... En utilisant Textbox.value au lieu de TextBox.text, mais résultat sensiblement identique...
    Si j'entre 2,3 puis 3,4 il devrait me donner "idéalement" : 5,7 mais moi il me donne 2,33,4 dans la cellule... (le fourbe)

    Bref si vous avez une idée de la raison de ce problème et éventuellement de la manière de le résoudre, je vous en serais gré !!

    Mille merci par avance,


    Philippe

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    A part une erreur de conception, rien d'autre ‼
    Comme son nom l'indique, TextBox n'est qu'une zone de texte, rien à voir donc avec une cellule !
    Et sans poster de code, consulter alors une cartomancienne ! (cf règles du forum …)

    Rappel : Excel / VBA ne se trompant pas, la concaténation n'est pas une addition !

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Octobre 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Logistique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 104
    Par défaut
    Est-ce qu'alors il existerait une zone de "nombre" une "numberbox" pour les userforms ?
    Le fait est qu'il y a des éléments pour lequel ça fonctionne et d'autre pour lequel si je n'entre qu'un nombre, il est marqué au niveau de la cellule que le nombre est précédé d'une apostrophe.

    Pour le code d'insertion le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Worksheets(FeuilleSelectionnee).Cells(i, 2) = ListBox_SsCategorie.Text And Worksheets(FeuilleSelectionnee).Cells(i, 2) <> "Diverses" Then
            NumLigne = i
            Worksheets(FeuilleSelectionnee).Cells(NumLigne, NumColonne) = Worksheets(FeuilleSelectionnee).Cells(NumLigne, NumColonne) + TextBox_Entree1.Value
            Exit For
    C'est dans une boucle for qui parcoure le tableau afin de trouver la bonne cellule.

    J'ai aussi essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Worksheets(FeuilleSelectionnee).Cells(i, 2) = ListBox_SsCategorie.Text And Worksheets(FeuilleSelectionnee).Cells(i, 2) <> "Diverses" Then
            NumLigne = i
            Worksheets(FeuilleSelectionnee).Cells(NumLigne, NumColonne).Value = Worksheets(FeuilleSelectionnee).Cells(NumLigne, NumColonne).Value + TextBox_Entree1.Value
            Exit For
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Worksheets(FeuilleSelectionnee).Cells(i, 2) = ListBox_SsCategorie.Text And Worksheets(FeuilleSelectionnee).Cells(i, 2) <> "Diverses" Then
            NumLigne = i
            Worksheets(FeuilleSelectionnee).Cells(NumLigne, NumColonne) = Worksheets(FeuilleSelectionnee).Cells(NumLigne, NumColonne).Value + TextBox_Entree1.Value
            Exit For
    Les trois me donnant le même résultat.

    Citation Envoyé par Marc-L Voir le message

    Rappel : Excel / VBA ne se trompant pas, la concaténation n'est pas une addition !
    Raison pour laquelle j'ai utilisé l'addition et non la concaténation.

  4. #4
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,
    J'ai rencontré un problème similaire en voulant comparer deux dates situées sur une feuille Excel, l'une d'entre elle étant issue d'une saisie depuis une TextBox.
    Résultat: Retour d'erreur "Incompatibilité de Type".
    Après avoir placé 2 espions j'ai vu que la donnée issue de la TextBox était du type String. En fouillant sur les forums et les didactitiels j'ai lu qu'il me fallait préciser le type de ma variable.
    de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.TextBox1.Value
    je suis parvenu à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDate(UserForm1.TextBox1.Value)
    Dans ton cas tu devrais peut-etre essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma cellule.Value=CDec(Userform1.TExtBox1.Value)
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Octobre 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Logistique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 104
    Par défaut
    Un grand merci, ça fonctionne à merveille. C'est exactement ce qu'il me fallait.

    Bonne journée,


    Philippe

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Comme quoi l'addition de texte est bien une concaténation !




  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Octobre 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Logistique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 104
    Par défaut
    Effectivement, mais ce qui est étonnant c'est que comme je l'ai dit, le code initiale fonctionnait à un moment donné, ce qui n'était alors pas une concaténation...
    Ma réponse hâtive à cette affirmation aura sans doute été motivé par le manque de clarté accompagnant la phrase qui n'apportait pas tellement de réponse à mon problème. Ne l'expliquant même pas vraiment sur le moment...
    J'aurais pu, c'est vrai, ajouter un peu de code, même si l'ajout d'une valeur à une autre ce fait par addition de manière générale. (Ce qui peut conduire à une concaténation dans le cas de certaines valeurs.)

    Bien à vous,


    Philippe

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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