[VBA] : Contrôle de la présence d'une valeur dans une textbox
Résolu
anton26
Messages postés
33
Statut
Membre
-
anton26 Messages postés 33 Statut Membre -
anton26 Messages postés 33 Statut Membre -
Bonjour,
J'ai créé une userform dynamique avec un nombre n de textbox dynamiques. Quand je clique sur un bouton valider, les valeurs rentrées apparaissent sur une feuille Excel. Je souhaiterai qu'un message d'erreur apparaisse si une ou plusieurs textbox n'a (ont) pas de valeur(s). Comment pourrais-je programmer cela ?
Merci d'avance
J'ai créé une userform dynamique avec un nombre n de textbox dynamiques. Quand je clique sur un bouton valider, les valeurs rentrées apparaissent sur une feuille Excel. Je souhaiterai qu'un message d'erreur apparaisse si une ou plusieurs textbox n'a (ont) pas de valeur(s). Comment pourrais-je programmer cela ?
Merci d'avance
A voir également:
- [VBA] : Contrôle de la présence d'une valeur dans une textbox
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
10 réponses
Bonjour,
'Exemple test sur contrôles crees en dynamique
'dans UserForm
'Exemple test sur contrôles crees en dynamique
'dans UserForm
Private Sub CommandButton1_Click()
Dim Cont As Control
'Boucle sur UF
For Each Cont In Me.Controls
'Test si Objet TextBox et vide
If TypeOf Cont Is MSForms.TextBox And Cont.Object.Value = "" Then
MsgBox "Attention! Manque Info" & Cont.Name
End If
Next Cont
End Sub
Bonjour,
Merci pour ce programme.
Le problème est que je n'arrive pas à l'adapter à mon bouton qui est créé dynamiquement.
Merci pour ce programme.
Le problème est que je n'arrive pas à l'adapter à mon bouton qui est créé dynamiquement.
Bonjour,
Il aurait fallu le dire au depart!! Je cherche le code pour intercepter un click bouton cree dynamiquement.
A+
Il aurait fallu le dire au depart!! Je cherche le code pour intercepter un click bouton cree dynamiquement.
A+
Re,
Recuperez le fichier et accrochez-vous
https://www.commentcamarche.net/faq/31279-vba-ajouter-des-controles-dynamiquement-dans-un-userform
Bon courage
Recuperez le fichier et accrochez-vous
https://www.commentcamarche.net/faq/31279-vba-ajouter-des-controles-dynamiquement-dans-un-userform
Bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Bonjour fxx :-)
Il n'a probablement pas besoin d'un code aussi compliquer, avec
cette démo se sera plus simple.
Employer ta fonction.
Se servir de la démo pour ajouter du code au bouton de façon dynamique.
Adapter Combo au nom du bouton bien entendu.
A+
Edit : Mais il y a peut-être encore plus simple, montre le code employer pour ajouter
les contrôles dynamique
EDIT : Je le retrouvais plus celui-là
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Bonjour fxx :-)
Il n'a probablement pas besoin d'un code aussi compliquer, avec
cette démo se sera plus simple.
Employer ta fonction.
Se servir de la démo pour ajouter du code au bouton de façon dynamique.
Adapter Combo au nom du bouton bien entendu.
A+
Edit : Mais il y a peut-être encore plus simple, montre le code employer pour ajouter
les contrôles dynamique
EDIT : Je le retrouvais plus celui-là
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Voila le code qui permet de créer dynamiquement mes textbox ainsi que le code qui permet de placer les valeurs dans une feuille. Actuellement, avec le code que j'ai écrit, cela ne fonctionne pas. Je souhaiterais que le message d'erreur apparaisse si un ou plusieurs textbox n'a pas été complètée.
Voici mon module de classe (ClasBT) pour mon bouton valider :
For i = 1 To n
Set Obj = Me.Controls.Add("forms.Textbox.1") 'Créé n textbox
With Obj
.Left = 90 'Position des textbox à partir du bord gauche de l'userform
.Top = 25 * i + 10 'Espacement entre chaque textbox
.Width = 100 'Longueur de la textbox
.Height = 18 'Hauteur de la textbox
'.BackColor = &HC0FFFF 'Couleur du fond
.BorderStyle = 0 'Style de bordure (0 ou 1)
.FontName = "calibri" 'Police de l'écriture
.FontBold = False 'Ecriture en gras
.FontSize = 10 'Taille de la police
.Enabled = True 'Possibilité d'écrire dans la case
End With
Next i
Dim Bouton As MSForms.CommandButton 'Ajout d'un bouton valider
Dim Cl As ClasBT
Set Collect = New Collection
Set CollectBT = New Collection
Set Bouton = Me.Controls.Add("Forms.CommandButton.1", "Bt1", True)
CollectBT.Add Bouton, "1" 'Ajouter à la collection d'objet
Set Cl = New ClasBT 'Ajouter à la collection de classe
Set Cl.GroupBoutons = Bouton
Collect.Add Cl
Public Sub ControlClick(nom As String, num As Long) 'Controle du bouton valider
Dim Ctrl As Control
Dim CtrlName As String
Dim CtrlIndex As Integer
Dim ctrlText As String
For Each Ctrl In Me.Controls
CtrlName = Ctrl.Name
If InStr(CtrlName, "TextBox") = 1 Then
'recuperation du numero du Textbox
CtrlIndex = Val(Mid(CtrlName, 8))
'MsgBox CtrlIndex
Worksheets("trimestre 1").Cells(CtrlIndex + 9, 1).Value = Ctrl.Text 'Positionnement des textbox dans une feuille (cells(ligne,colonne))
Worksheets("trimestre 2").Cells(CtrlIndex + 9, 1).Value = Ctrl.Text 'Positionnement des textbox dans une feuille (cells(ligne,colonne))
Worksheets("trimestre 3").Cells(CtrlIndex + 9, 1).Value = Ctrl.Text 'Positionnement des textbox dans une feuille (cells(ligne,colonne))
Else
End If
Next
For i = 1 To n
If Worksheets("trimestre 1").Cells(i + 9, 1).Value = "" Then 'Controle des valeurs rentrées dans les textbox
Reponse = MsgBox("Merci de compléter chaque case." & Chr(10) & Chr(10) & "Pour complèter votre liste cliquez sur OK." & Chr(10) & "Pour revenir a la page d'accueil cliquez sur Annuler.", vbExclamation + vbOKCancel, "Erreur")
If Reponse = vbCancel Then 'Si on clique sur Cancel
Unload UserForm1
demarrage.Show
Else
End If
End If
Next i
Voici mon module de classe (ClasBT) pour mon bouton valider :
Option Explicit
Public WithEvents GroupBoutons As MSForms.CommandButton
Private Sub GroupBoutons_Click()
Call UserForm1.ControlClick(GroupBoutons.Caption, GroupBoutons.Tag)
End Sub
Huumm, je reconnais beaucoup de partie de ton code... :-)
Mais je vois que tu n'a pas encore tout à fait compris, c'est normal, c'est pas facile.
Tu n'a qu'un bouton ? Si oui, pas besoin de la collection d'objet. (Module de classe)
Le plus simple... poste un exemple de ton classeur, je verrais pour le rendre op.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Mais je vois que tu n'a pas encore tout à fait compris, c'est normal, c'est pas facile.
Tu n'a qu'un bouton ? Si oui, pas besoin de la collection d'objet. (Module de classe)
Le plus simple... poste un exemple de ton classeur, je verrais pour le rendre op.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Oui c'est fort possible que tu le reconnaisse mais il est vrai que je suis débutant donc je ne comprends pas tout.
Pour le bouton je l'ai créé dynamiquement car je souhaite qu'il se place automatiquement à coté de la dernière textbox du userform.
Tu trouveras ci-joint mon fichier si tu souhaites y jeter un coup d'oeil.
Merci et bonne soirée.
http://dl.free.fr/getfile.pl?file=/pb9pbCSv
Pour le bouton je l'ai créé dynamiquement car je souhaite qu'il se place automatiquement à coté de la dernière textbox du userform.
Tu trouveras ci-joint mon fichier si tu souhaites y jeter un coup d'oeil.
Merci et bonne soirée.
http://dl.free.fr/getfile.pl?file=/pb9pbCSv
Re,
Un classeur avec tes TextBox
J'ai sauvé les données sur la Feuil1, vu qu'il n'y a pas les feuilles pour chaque élève.
Fais comme stipulé sur la feuil1.
Le bouton ne se valide que quand tout les textBox sont rempli
J'ai mis un max de remarques pour que tu puisse comprendre l'utilité des collections.
Tu dis..
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Un classeur avec tes TextBox
J'ai sauvé les données sur la Feuil1, vu qu'il n'y a pas les feuilles pour chaque élève.
Fais comme stipulé sur la feuil1.
Le bouton ne se valide que quand tout les textBox sont rempli
J'ai mis un max de remarques pour que tu puisse comprendre l'utilité des collections.
Tu dis..
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.