Macro en boucle format textbox /xls 2003

Bonjour tout le monde,

Je cherche une macro en boucle pour le format de 50 text box dans mon userform svp

voici ce que j'ai fais :

TextBox1.Value = Format(TextBox1.Value, "0.00%")
TextBox2.Value = Format(TextBox2.Value, "0.00%")
TextBox3.Value = Format(TextBox3.Value, "0.00%")
....et ainsi de suite mais ca prend du temps et ca alourdi le programme.

En vous remerciant d'avance

5 réponses

  1. bonjour,

    La question aurait sans doute eu des réponses plus rapide dans le forum programmation!

    Dim MyControl As Control
    
    For Each MyControl In Controls
    
        If Left(MyControl.Name, 7) = "TextBox" Then
            MyControl.Value = Format(MyControl.Value, "0.00%") 
        End If
    
    Next
    

    Bonne journée
    1
    1. Bonjour PAF,

      vous avez raison concernant le forum, j'ai pas fais attention ;;;;;j'ai essayé de le déplacé dans le forum concerné mais je vois pas comment.

      Merci pour votre réponse et de votre aide , mais malheureusement ca fonctionne pas ou plutot j'ai mal programmé.....si vous pouvez m'aider SVP

      j'ai mis au début:

      private sub textbox_change ()

      Dim MyControl As Control

      For Each MyControl In Controls

      If Left(MyControl.Name, 7) = "TextBox" Then
      MyControl.Value = Format(MyControl.Value, "0.00%")
      End If

      Next

      end sub

      bonne journée
      a vous lire
      0
      1. bonsoir,

        y a t-il un message d'erreur ?

        Qu'est censé faire ce code ? et qu'est ce qu'il fait?

        la boucle for each, dans l'évênement change, n'est peut-être pas judicieusement placée.

        A +
        0
        1. Bonjour,

          Non j'ai pas de message d'erreur.

          le code devrait mettre les valeurs des textbox en pourcentage avec 2 chiffres apres le virgule.

          quand je fais

          private sub textbox1_change ()
          TextBox1.Value = Format(TextBox1.Value, "0.00%")
          end sub

          private sub textbox2_change ()
          TextBox2.Value = Format(TextBox2.Value, "0.00%")
          end sub

          et ainsi de suite (jusqu'a 50 textbox) ca fonctionne tres bien.

          pour votre code j'ai rajouté seulement et il ne fonctionne pas :

          private sub textbox_change ()
          ..........votre code
          end sub

          sachant que les textbox je ne les remplis pas, ils sont récuperer d'une feuille excel.
          ci dessous le code de récupération des valeurs des textbox :
          Private Sub DTPicker1_Change()
          Dim LastLig As Long, Lig As Long
          Dim c As Range
          Dim i As Integer
          Dim Dte As Date

          Dte = Me.DTPicker1.Value
          For i = 2 To 75
          Me.Controls("TextBox" & i - 1).Value = ""
          Next i
          With Sheets("GPEE") 'à adapter
          LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
          If LastLig >= 6 Then
          Set c = .Range("A6:A" & LastLig).Find(Dte, LookIn:=xlValues, lookat:=xlWhole)
          If Not c Is Nothing Then
          Lig = c.Row
          Set c = Nothing
          For i = 2 To 75
          Me.Controls("TextBox" & i - 1).Value = .Cells(Lig, i)
          Next i
          End If
          Else
          MsgBox "Données manquantes"
          End If
          End With
          End Sub

          merci et bonne journée
          0
          1. Que j'essaye votre méthode ou la mienne, j'obtiens le même résultat!

            A savoir si la cellule destinée à alimenter la textbox contient 12, la textbox formatée affiche 1200.00%

            par ailleurs dans Sub DTPicker1_Change(), les textbox étant initialisées , par la boucle:
            For i = 2 To 75
               Me.Controls("TextBox" & i - 1).Value = .Cells(Lig, i)
            Next i 

            le format pourrait être apporté en même temps (cela évite les manipulations ultérieurs) :
            For i = 2 To 75
               Me.Controls("TextBox" & i - 1).Value = Format(.Cells(Lig, i),"0.00%")
            Next i 


            mais, j'ai le même résultat que précédemment !

            Désolé je ne saisit pas le Problème.
            0
        2. Bonjour PAF,

          Pour le moment je vais fais une par une , ce n'est pas grave, en tout cas merci beaucoup de votre votre aide.

          Bon Dimanche
          0