Bonjour,
J'ai un USF avec 100 textbox est-il possible de savoir via un label le nombre de textbox remplis ?
Je vous remercie d'avance
Cordialement
Max
Bonjour,
J'ai un USF avec 100 textbox est-il possible de savoir via un label le nombre de textbox remplis ?
Je vous remercie d'avance
Cordialement
Max
bonjour
met ca dans un module standard et apelle cette macro par un bouton ou l'evenement que tu veux de ton userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub compte_les_textbox_remplis(usf as object) i = 0 For Each ctrl In Me.Controls If TypeName(ctrl) = "TextBox" And ctrl.Value <> "" Then i = i + 1 Next MsgBox "il y a " & i & " Texbox de remplis" End Sub
tu appelle la macro comme ca
si l'appel se fait dans le userform
si l'appel se fait ailleur que dans le userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part compte_les_textbox_remplis me
au plaisir
Code : Sélectionner tout - Visualiser dans une fenêtre à part compte_les_textbox_remplis(nom de l'userform)
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
Bonjour Patrick
Encore une fois de plus, tu proposes des codes sans les tester
Essaies ton code avec un userform comportant des textbox et des label.
Il fallait proposer ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub compte_les_textbox_remplis(usf As Object) Dim Ctrl As Control Dim i As Byte For Each Ctrl In usf.Controls If TypeName(Ctrl) = "TextBox" Then If Ctrl.Value <> "" Then i = i + 1 End If Next MsgBox "il y a " & i & " Texbox de remplis" End Sub
Bonjour Patrick, Marcandy, mercatog,
Je vous remercie a tous j'ai essayer le code de mercatog sans probleme sa marche toujours nickel juste j'aimerais lui apporter une modif si possible comme dit Marcandy est-il possible que ça se mette à jour automatiquement du remplissage des textbox et avoir le résultat dans le "label2" qui se trouve sur l'USF.
Un grand merci d'avance
Et bonne journ"e a tous
@+
Max
Il faut ajouter un appel à compte_les_textbox_remplis dans les 100 procédures Textbox_change.
Dans la procédure compte_les_textbox_remplis tu remplaces la dernière ligne par
Label2.caption = i
Re Patrick
J'ai un message d'erreur "Propriete ou methode non géree par cet objet"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub compte_les_textbox_remplis(usf as object) i = 0 For Each ctrl In usf.Controls 'moi j'ai reuni les deux conditions en une If TypeName(ctrl) = "TextBox" And ctrl.Value <> "" Then i = i + 1 Next MsgBox "il y a " & i & " Texbox de remplis" 'et pour la demande precise usf.controls("label2").caption=i End Sub
si tu veux le mettre absolument dans le change de chaque textbox bien que je n'adhère pas a ce principe car l'évènement est déclenché a chaque caractère tapé dans le textbox ,je m'orienterais vers une classe (collection)
en effet
exemple si tu tape "anticonstitutionnellement"
l'évènement va se déclencher 25 fois
au plaisir
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
bonjour mercatog
je l'ai tester avant seulement j'ai ajouté la variable "usf "en argument au dernier moment car je ne savait pas le contexte de l'appel a la macro
je n'est donc pas corrigé
autant pour moi
au plaisir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 allez on corrige :roll: Sub compte_les_textbox_remplis(usf as object) i = 0 For Each ctrl In usf.Controls 'moi j'ai reuni les deux conditions en une If TypeName(ctrl) = "TextBox" And ctrl.Value <> "" Then i = i + 1 Next MsgBox "il y a " & i & " Texbox de remplis" 'et pour la demande precise usf.controls("nom du label").caption=i End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
@PatrickEncore raté
Essaies ton code sur un userform contenant des TexBox et des Label
Je parlais de ton test:Si ctrl pointe sur un label, tu auras une surprise
Code : Sélectionner tout - Visualiser dans une fenêtre à part If TypeName(ctrl) = "TextBox" And ctrl.Value <> "" Then i = i + 1
@maxval18
Utilisation d'un module de classe pour ton usine à gaz.
Crée un module de classe (nommé Classe1) et y insère ce code:Dans le module de ton userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Option Explicit Public WithEvents TB As MSForms.TextBox Private Sub TB_Change() Dim Ctrl As Control Dim i As Integer For Each Ctrl In UserForm1.Controls If TypeOf Ctrl Is MSForms.TextBox Then If Ctrl.Value <> "" Then i = i + 1 End If Next Ctrl UserForm1.Label2.Caption = i End Sub
L'exécution du code est loin d'être optimale (mais c'était pour donner un exemple d'utilisation des classes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Option Explicit Dim Coll As Collection Private Sub UserForm_Initialize() Dim Ctrl As Control Dim TxtBox As Classe1 Set Coll = New Collection For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.TextBox Then Set TxtBox = New Classe1 Set TxtBox.TB = Ctrl Coll.Add TxtBox Set TxtBox = Nothing End If Next Ctrl End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Set Coll = Nothing End Sub
Re mercatog
Je te remercie nickel je te souhaite une tres bonne soirée
@+
Max
A mon avis c'est à toi de le gérer par programme.
Si tu souhaites que ça se mette à jour automatiquement, utilises les évènements TextBox_Change (événement qui se produisent quand le contenu d'une textbox change) pour comptabiliser le nombre de boites remplis et pour affecter cette valeur à la propriété Caption de ton label.
Partager