Excel TextBox Format

Résolu
Bonjour,

J'ai des TextBox dans mon code qui prennent la valeur de cellules au format pourcentage
Je cherche a avoir la valeur de ma textbox au format pourcentage egalement avec 2 chiffres apres la virgule

Ma textBox s'appel BC1 et pour l'instant elle est egale a 48,22 %

Si je met rien dans le code j'obtien 0,4822 et au format text...
si je met le code suivant

BC1 = Format(BC1, "0.00%")

j'obtien bien 48,22% mais toujours en format text

si je met BC1 = Format(BC1, "0,00%") (avec une virgule)
j'obtien bien un pourcentage mais sans les deimales : il m 'affiche 48,00% au bon format

voila moi je voudrai avoir 48,22 % en tant que nombre et pas tex

si quelau un sait
merci
Antoine
Configuration: Windows XP
Internet Explorer 7.0

10 réponses

  1. 1- affichage
    BC1.Value = Format(BC1.Value, "0.00%")

    2- récupération valeur
    BC1.Value = Replace(BC1.Value, "%", "")
    BC1.Value = Replace(BC1.Value, " ", "")
    BC1.Value = Replace(BC1.Value, ",", ".")
    BC1.Value = Val(BC1.Value)
    1
    1. Merci mais ca change rien,

      A l'affichage c'est toujours bon , j' 48,12 % mais il y a toujours une petite fenetre verte dans ma cellule qui dit:
      "Nombre stoké sous forme de texte" et donc c'est inutilisable

      je te met un fichier ultra simple en joint il prend la cellule A1 la met dans la textBox et la colle dans la cellule A2 et moi je voudrai qu'il n'y ait pas le petit onglet vert dans laq cellule

      merci si tu as le temps

      bon je sais pas comment on joint un fichier..

      tu ouvre un nouveau classeur , tu cré une textbox1 et un boutton et tu colle le code:

      Private Sub CommandButton1_Click()

      TextBox1.Value = Cells(1, 1).Value
      TextBox1.Value = Format(TextBox1.Value, "0.00%")
      Cells(1, 2).Value = TextBox1.Value

      End Sub

      en A1 tu marque 0,1234 et tu appui sur le bouton
      en A2 va y avoir la bonne reponse mais au mauvais format ...
      0
      1. '** alimentation champ formulaire
        TextBox1.Value = Cells(1, 1).Value

        '** transformation en valeur texte pour affichage champ formulaire
        TextBox1.Value = Format(TextBox1.Value, "0.00%")

        ' ** transformation valeur texte en valeur numérique
        TextBox1.Value = Replace(TextBox1.Value .Value, "%", "")
        TextBox1.Value = Replace(TextBox1.Value .Value, " ", "")
        TextBox1.Value = Replace(TextBox1.Value .Value, ",", ".")
        TextBox1.Value = Val(TextBox1.Value)

        '** alimentation A2
        Cells(1, 2).Value = TextBox1.Value
        Cells(1, 2).Value.Numberformat = "0,00%"

        '** restauration en valeur texte pour affichage champ formulaire
        TextBox1.Value = Format(TextBox1.Value, "0.00%")
        0
        1. Contributeur
          Bonjour,

          tu as déjà posé cette question hier, merci d'éviter les doublons.
          0
          1. Bonjour Eric,

            Je sais bien mais hier la personne qui a repondue n'a pas put m'aider et du coup j'ai l'impression que comme il y a déjà eu une reponse les gens regarde plus la question...
            en reposant la meme question, en 5 minutes j'ai eu la reponse alors que sinon personne n'aurait lu

            voila

            dsl

            Antoine
            0
          2. Contributeur
            @anochedaS'il y a des regles sur un forum, elles n'ont pas été édictées au hasard..
            Le plus souvent c'est dans un but d'efficacité, de respect des autres.
            Pour certaines le simple bon-sens devrait être suffisant et ne pas devoir être écrites mais ...

            Un simple 'up' suffit à remettre ta question au début...
            En multipliant les posts tu prives les nouveaux lecteurs des précédentes propositions qui ont obligatoirement fait avancer la réponse.
            Les personnes qui sont intervenues dans ton 1er post sont peut-être encore en train de chercher (et même de nouveaux lecteurs) puisque tu n'as pas eu la décence courtoisie respect honneteté (rayer les mentions inutiles s'il y en a) de le signaler, voire même de le mettre tout simplement en résolu.
            C'est du temps qu'ils auraient pu passer à aider qcq'un d'autre...
            J'appele ça de l'égoïsme.

            Je ne parle pas des questions où tu as eu 3 réponses et où tu n'as même pas daigné répondre le moindre mot, et donc surtout pas merci

            Personnellement je suis intervenu sur 2 de tes questions, elles sont toujours en statut non résolu.
            Ton pseudo c'est quoi déjà ? Ah oui anocheda
            Mes interventions sur tes questions se limiteront maintenant a mettre un lien vers ce post

            Bonne soirée
            eric
            0
        2. D'accord merci j'avais compri le truc mais ca marche pas....
          Est ce que ca marche chez toi?

          Si tu prend ton code (en enlevant des petites erreures) et que tu mets 0,1234 en A1,
          en A2 tu va avoir le bon resultat mais avec un petit triangle vert qui dit que c'est pas au bon format....
          0
          1. il faut que je vérifie ton exemple car j'ai en fait extrait du code dans une application que j'ai écrite et qui fonctionne correctement. Cela dit, en examinant le mieux le code de cette application, j'apporte une correction :

            ** alimentation champ formulaire
            TextBox1.Value = Cells(1, 1).Value

            '** transformation en valeur texte pour affichage champ formulaire
            TextBox1.Value = Format(TextBox1.Value, "0.00%")

            ' ** transformation valeur texte en valeur numérique
            TextBox1.Value = Replace(TextBox1.Value .Value, "%", "")
            TextBox1.Value = Replace(TextBox1.Value .Value, " ", "")
            TextBox1.Value = Replace(TextBox1.Value .Value, ",", ".")
            TextBox1.Value = Val(TextBox1.Value) /100
            TextBox1.value= Replace(TextBox1..Value, ",", ".")


            '** alimentation A2
            Cells(1, 2) = TextBox1.Value
            Cells(1, 2).Numberformat = "0,00%"
            '** restauration en valeur texte pour affichage champ formulaire
            TextBox1.Value = Format(TextBox1.Value, "0.00%")

            A vérifier et au fait, as-tu vérifié le format de ta cellule A2. Elle doit être au format standard ou nombre.
            0
            1. Excellent ca marche avec ton aide, en fait il faut juste faire:

              TextBox1.Value = Cells(1, 1).Value

              TextBox1.Value = Format(TextBox1.Value, "0.00%")
              TextBox1.Value = Replace(TextBox1.Value , ",", ".")

              Cells(1, 2) = TextBox1.Value
              Cells(1, 2).NumberFormat = "0.00%" ' avec un point ici et pas une virgule

              ca marche super bien maintenant

              merci
              0
              1. Salut Eric,

                Faut pas s'enerver comme ca !!!

                j'pense pas avoir été aussi méchant, égoiste, indécent... pour avoir reposé une question déĵà posée...
                effectivement j'aurai du mettre résolu sur l'autre ou la remettre en haut mais... j'y ai pas pensé...

                J'ai du poser une 30 ene de questions sur ce forum et j'ai du oublier de dire merci a 2 effectivement
                C'est parceque j'ai pas compri les réponses et que j'ai changé d'idée entre temps, c'est vrai que c'est un peu égoiste.

                Je trouve ce forum super bien et les gens dessus excellent, rapide et sympa donc je m'excuse si tu as mal pri ce message, j'recommencerai plus...

                On reste ami quand meme?

                anocheda
                0
                1. Contributeur
                  Je pense qu'à un certain moment il faut savoir dire les choses.
                  C'est tombé sur toi comme ça aurait pu tomber sur d'autres, rappeler les regles élémentaires est malheureusement nécessaire...
                  Sans rancune mais n'oublie pas que laisser un mot, même la personne n'a pas résolu ton pb, est le minimum pour la remercier d'y avoir passer du temps.
                  eric
                  0