Effectuer une action sur plusieurs textbox: evenement change

Bonjour à tous,

J'ai une petie question : voilà, j'ai un code que j'effectue sur chaque textbox (lors de textbox_change), c'est d'ailleur une personne du forum qui me l'avais donnée (encore merci).

Je l'utilise souvent et c'est bien pratique.

Comme le code est le même pour chaque textbox, ça serait utile pour la simplification de mon code de faire une boucle sur tout mes textbox (mes textbox ont pour nom "textbox1" "textbox2"..... "texbox6").

Quelqu'un sait comment faire cette boucle ?

Voilà le code

Private Sub TextBox1_Change()
    On Error Resume Next
    separateurDecimal = Application.International(xlDecimalSeparator)
    TextBox1 = Replace(Replace(TextBox1, ",", separateurDecimal), ".", separateurDecimal)
    If Not IsNumeric(Right(TextBox1, 1) & 1) And Right(TextBox1, 1) <> separateurDecimal _
       And Right(TextBox1, 1) <> "" Or (Not IsNumeric(TextBox1 & 1) And Right(TextBox1, 1) <> "") Then
        MsgBox "Le caractere saisi n'est pas valide"
        TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
    End If
End Sub

j'ai bien essayé, mais c'est l'evement "textbox_change" qui m'a freiné, je ne sais pas vraiment comment m'y prendre.

Merci d'avance;

ElectricDandy

Bonjour Electric dandy le forum

il faut utiliser un module de classe pour traiter tous tes textboxs

sans fichier je te laisserai donc le faire

a+

papou

Salut

Je suis de bonne composition ce soir et vu qu'à une certaine époque j'ai ramé terrible pour ce genre de soucis, voici un bout de code qui j'espère en aidera plus d'un.

Création d'une classe

'Dans un module de classe nommé "Classe1"
'
Option Explicit

Public WithEvents TextBoxGroup As MSForms.TextBox

'Evenement Change sur les TextBox de la feuille de calcul.
Private Sub TextBoxGroup_Change()

'Ici le code commun désiré pour nos textbox
'Pour info cet événement étant dédié à toutes les textbox
'On récupérera la textbox active par TextBoxGroup.Value
'Exemple
'Renvoie le nom et la valeur de la Textbox changée
[tab]MsgBox TextBoxGroup.Name & " : " & TextBoxGroup.Value[/tab]

end sub

Ici la Classe est crée, une méthode _change tout ce qu'on veut quoi

On continue

'à placer dans le module objet ThisWorbook pour que la classe soit initialisée lors de l'ouverture du classeur.

Option Explicit

Private Sub Workbook_Open()
Dim Obj As OLEObject 'un petit tiroir pour mettre mes objets un à un
Dim maClasse As Classe1  'ma fameuse classe

Set maCollection = New Collection
 'Un objet Collection est un jeu d'éléments indexés auxquels il peut être fait référence comme s'ils constituaient un ensemble unique.

'On boucle maintenant sur les objets de la Feuil1
For Each Obj In Worksheets("Feuil1").OLEObjects
    'On verifie s'il s'agit d'une Textbox
    If TypeOf Obj.Object Is MSForms.TextBox then
        Set maClasse = New Classe1
        Set maClasse.TextBoxGroup = Obj.Object
        maCollection.Add maClasse
    End If
Next Obj

End Sub

N'oublions pas de déclarer notre collection (option explicit oblige)

'dans un module standard
Option Explicit

Public maCollection As Collection

Voilà terminé.

Pas si compliqué à mettre en oeuvre, juste un peu de gymnastique d'ésprit pour comprendre comment cela fonctionne.

A bientôt

Bonjour,

Merci à vous deux pour m'avoir aidé.

Désolé Paritec de ne pas avoir mis mon fichier en pièce jointe, je ne savais pas si ça serait utile ou non pour ce code.

Merci mikebzh, c'est sympa de m'avoir montré le code et d'avoir mis les explications qui vont avec. J'étais pas mal perdue, et là du coup ça m'aide beaucoup, je comprend mieux comment ça fonctionne.

MERCI !


Vos deux réponses méritent d'être "accepté" par un V vert, mais comme il y a du code dans la réponse de mikebzh, je vais choisir celle ci, mais encore une fois, merci à vous deux.

Rechercher des sujets similaires à "effectuer action textbox evenement change"