Format monétaireTextbox

Bonjour a toutes et tous, Forum bonjour

<config>Windows 7 / Excel 2007</config>

J'ai une feuil1(Compte) baptisée Ws et une cellule C20 au format monétaire devant recevoir le copier coller du TextBox1

je souhaiterai svp que le copier-coller arrive en C20 au format monétaire (Euro)

PS: le copier coller vient de mon site bancaire (Solde) et bizzarement ce solde est afficher
aléatoirement

EX: 1 500,55 € ou 1 500,55

Je souhaiterai donc que ce format >> 1 500,55 € arrive en C20

Merci de votre temps et de votre aide et malgré le temps une bonne journée

Cordialement Ray

'*** Pour infos *** Set Ws = Sheets("Compte"): Euro = "##,##0.00 €"

Private Sub TextBox1_Change()

On Error Resume Next                                 ' Début Test si numérique
TextBox1 = Replace(TextBox1, ".", ",")        ' Remplace point par virgule clavier numérique

If Not IsNumeric(TextBox1.Value) And TextBox1.Value <> "" And TextBox1.Value <> "-" And TextBox1.Value <> "-" Then
   TextBox1.Text = Left(TextBox1, Len(TextBox1) - 1)
End If                                                             ' Fin Test numérique

Dim Couleur As Long
   Couleur = vbGreen
   
    Ws.Range("C20") = TextBox1.Value          ' Copier coller vers cellule C20
    If Ws.Range("C20") < 0 Then
      Couleur = vbRed
    End If
  Me.Label425.Caption = Format(Ws.Range("C20"), Euro)   ' Affiche en euros via Label425
  Me.Label425.ForeColor = Couleur
End Sub

13 réponses

  1. Salut,

    Place en début de code cette ligne

    TextBox1 = Format(TextBox1, "0.00 €")
    1
    1. Re,

      tout dépend de la structure de ton Userform et dans l'ordre de création de tes contrôles.

      Lorsque tu es dans ton Visual, clic droit sur l'userform/Ordre de tabulation, place ton Textbox2 juste après le Textbox1
      1
      1. Re,

        Tes Textbox1 et 2 sont dans la frame9, dans le Visual, tu vas sur ton Userform et clic droit sur le bord de ta Frame9/ordre de tabulation tu remarqueras que ton Textbox2 est avant le 1 soit tu fais remonter le 1 ou descendre le 2, dans tous les cas place dans l'ordre de priorité l'activation de tes contrôles dans chaque Frame.
        exemple Textbox1 puis combobox1 puis Textbox2 ou passe directement du Textbox1 au Textbox2 si tu le souhaites
        et tu fais la même chose avec les Frames à partir d'un clic droit sur l'userform/ordre de tabulation pour donner une priorité dans tes groupes
        A+
        Mike-31

        Une période d'échec est un moment rêvé pour semer les graines du savoir.
        1
        1. Re,Mike

          D'abord désolé j'ai dit une connerie c'était le Frame 9 et non le 7 autant pour moi
          et le placement des textbox était bon, mais comme j'ai toucher a (tab index)

          Donc la j'ai fait les modifications que tu m'a dit et c'est bon, ca passe de 1 a 2 ou 3
          ca ne va plus dans les combos 1 ou 2 sauf par clic souris mais la c'est ok

          je te remercie déja beaucoup pour ces infos et pour les modifications

          Une dernière pour la route comme on dit et si tu veux bien svp

          Comment je fais si je souhaite rester dans un TextBox avec le curseur clignotant
          après validation

          Pour éventuellement faire de nouvelle modifcation

          au moins pour le Textbox 2 et 3
          si j'ai besoin de changer de textbox je changerai avec clic de la souris

          Merci et bonne après midi a toi

          Raymond
          0
      2. Salut Mike

        Merci pour ta réponse ça fonctionne j'ai essayer un code dans le mème style
        mais ça ne marchais pas, mal placer danss le code sans doute.

        Un petit truc svp et si tu veux bien après la validation par "Enter" du TextBox1 comment obliger le curseur clignotant a sauter dans mon TextBox2

        et après avoir valider également dans le TextBox2 comment garder le focus ou rester dans le TextBox2, pour éventuellemnt modifier la saisie

        Merci a toi bonne journée

        A plus tard Raymond
        0
        1. RE Mike

          J'ai controler mon Userform en suivant tes conseils car je n'avais pas utiliser encore cette possibilité (ordre de tabulation) et donc tous mes controles sont bien placés
          dans l'ordre

          j'ai 3 TextBoxs 1-2-3
          et 2 ComboBoxs 1-2

          Quand je suis dans le TextBox1 après validation
          le curseur saute dans le Combo1 puis encore enter
          le curseur saute dans le Combo2 puis enter TexTbox2
          et enfin TextBox3

          j'ai inverser l'ordre de TXt 3-2-1 et des Com 2-1 et toujours le mème soucis

          voila merci a toi j'ai appris quelque chose par rapport a l'ordre de tabulation

          Vu l'heure je souhaite un app et a plus tard

          Ray
          0
          1. Re,

            Tu n'as pas de frame pour regrouper tes contrôles

            poste ton fichier sans notes confidentielles (ou masque les) pour voir ton userform

            avec ton ce lien
            https://www.cjoint.com/
            0
            1. RE,

              Effectivement j'ai une grande Userform et plusieurs Frames pour regrouper et organiser les divers controls

              les 3 textboxs et les deux combos ainsi que quelques labels sont réunis dans un frame7

              sinon pour le fichier a envoyer ça me fait faire beaucoup de manips pour cacher
              je vais voir ce que je peux faire

              Sinon les frames aurai une incidence sur mon soucis ???

              A plus tard
              0
              1. Re,

                Comment cela te fait faire beaucoup de manip, il suffit simplement d'enregistrer sous ton fichier pour le dupliquer, puis effacer le contenu de tes feuilles le tout en quelques clics
                0
                1. http://cjoint.com/?3FnoIzuRfjs

                  Voila l'adresse pour le fichier

                  Le fichier est avec un module de classe et se sauvegarde avec la date du jour automatiquement

                  un copier coller se fait uniquement dans le textbox1 via C20

                  les 3 textboxs ne fonctionne pas vraiment correctement désolé, j'y bosse

                  j'ai essayer de mettre les tabindex dans l'ordre, pas gagné

                  merci a toi de t'interresser a mon soucis

                  Ray
                  0
              2. Re,

                Il est possible de jouer avec le Focus mais le résultat est discutable, je pense qu'il vaut mieux resélectionner le Textbox
                0
                1. Re Mike

                  J'ai trouver cette après midi un moyen de rester sur le TextBox mais on ne peux plus en sortir mème avec un clic de souris pour changer de TextBox
                  alors mème pas drole

                  voila ou j'en suis, je cogite encore un peu la dessus et on verra bien

                  Merci de ton aide j'ai avancer un peu

                  je te souhaite une bonne soirée et encore beaucoup de merci

                  Cordialement Raymond
                  0
              3. Re,

                ce qui est possible, c'est faire un blocage sur un textbox tant qu'il n'est pas renseigné

                l'astuce, on copie la valeur du textbox dans une cellule ici A1 et dans le code si le textbox ="" on neutralise Annuler (la sortie)
                et on boucle pour revenir sur le textbox

                Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
                [A1] = TextBox2
                If TextBox2 = "" Then
                Cancel = True
                UserForm1.TextBox2.Text = [A1]
                Me.TextBox2.SetFocus
                End If
                End Sub
                0
                1. Bonjour Mike, forum

                  Merci pour ta réponse et pour le code, ton code tout seul dans mon programme
                  fonctionne mais si je mets les deux codes pour gérer la TextBox2
                  la ça se gâte un peu

                  d'autant plus qu'il y a 3 TextBoxs a faire

                  plusieurs soucis apparaissent, bath voyons LOL

                  En fait il faudrait pourvoir concilier les deux bouts de code ci-dessous car des limitations de saisie sont autorisés et d'autres pas,

                  Trop fort pour moi, pour ne faire qu'un de ces deux codes

                  comme tu a le programme, essais juste pour voir enfin si tu a le temps

                  Merci de ton aide j'ai encore appris.

                  je te souhaite une exellente journée

                  A plus tard Ray

                  Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
                  [B17] = TextBox2
                     If TextBox2 = "" Then
                  Cancel = True
                    UserForm1.TextBox2.Text = [B17]
                  Me.TextBox2.SetFocus
                  End If
                  End Sub
                  
                  '*** ON ENTRE UNE VALEUR DESTINATION DANS LA ZONE (E21 à P21)
                  Private Sub TextBox2_Change()
                     
                  If Encours = True Then Exit Sub
                     Encours = True
                   
                  On Error Resume Next                                      ' Début Test si numérique
                     TextBox2 = Replace(TextBox2, ".", ",")           ' Remplace point par virgule sur clavier numérique
                  If Not IsNumeric(TextBox2.Value) And TextBox2.Value <> "" And TextBox2.Value <> "-" And TextBox2.Value <> "-" Then
                     TextBox2.Text = Left(TextBox2, Len(TextBox2) - 1)
                  End If                                                    ' Fin Test numérique
                     
                   If Me.ComboBox2.ListIndex = -1 Then
                      TextBox2.Value = ""
                      TextBox2.BackColor = vbRed                     ' Place en rouge fond TextBox si erreur
                      MsgBox "Sélectionner un mois"
                  Else
                      Ws.Cells(21, 5 + Me.ComboBox2.ListIndex) = TextBox2.Value
                      Me.Controls("Label" & 229 + Me.ComboBox2.ListIndex) = Format(Ws.Cells(21, 5 + Me.ComboBox2.ListIndex), Euro)
                  End If
                      TextBox2.BackColor = vbGreen                       ' Replace en vert fond TextBox2
                      Encours = False
                  End Sub
                  
                  0
                  1. Re,

                    J'ai testé les deux codes sans problème, à condition de mettre le combobox 2 avant le textbox 2

                    de ton coté, que recontres tu comme problème
                    0
                    1. Re Salut Mike

                      Non rien de spécial j'ai remis de l'ordre dans mon fichier et effectivement faut pas oublier de faire le choix du combo avant
                      j'étais en train de chercher pour pouvoir faire en sorte de ne pas oublier mais bon
                      aujourd'hui les neurones pas trop actives LOL
                      Et toi aurai tu svp une chtite idée a me proposer

                      je te dit a plus tard et encore merci a toi

                      Ray
                      0