Teste sur textbox en cascade

GClaire

XLDnaute Occasionnel
Supporter XLD
Bonjour le forum.

Je me prend la tête sur un truc qui je pense est tout bête.

Je voudrais faire un test sur plusieur TextBox pour envoyer une valeur a une cellule.

Pour le moment j'ai bidouillé cela qui fonctionne, mais je pense qu'il y'a a une solution plus appropriée.


VB:
    If Me.TextBox20.Value + Me.TextBox21.Value + Me.TextBox22.Value + Me.TextBox23.Value + Me.TextBox24.Value + Me.TextBox25.Value + Me.TextBox26.Value + Me.TextBox27.Value >= "1" Then
    Feuille.Range("B" & Maligne).Value = "1"
    Else
    Feuille.Range("B" & Maligne).Value = ""
    End If

Si vous avez une idée.

Merci.

Bonne soirée, G'Claire
 

Pièces jointes

  • Livraison paniersV05.xlsm
    383.9 KB · Affichages: 49
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, G'Claire

Un petit exemple à tester.
(par exemple sur un userform avec 3 TextBox et un CommandButton)
VB:
Private Sub CommandButton1_Click()
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "TextBox" Then
    If ctrl.Text = "" Then
    tBx = tBx & "," & ctrl.Name
    End If
End If
Next ctrl
If tBx <> "" Then
MsgBox Mid(tBx, 2) & Chr(13) & "sont vides!", vbOKOnly + vbCritical, "Test saisie TextBox"
Exit Sub
End If
[A1] = TextBox1
[A2] = TextBox2
[A3] = TextBox3
End Sub
A tester sur une feuille vierge
Cliquez sur le bouton quand les 3 TextBox sont vides
Puis remplissez les un à un en cliquant sur le bouton entre chaque saisie.
 

GClaire

XLDnaute Occasionnel
Supporter XLD
Re.

Je viens de faire un petit classeur avec tous ces éléments.

Ça n'est pas tout a fais cela que je voulais faire, normale sans le classeur tu ne pouvais savoir.

En faite j'aimerai vérifier qu'au moins 1 des texbox20 a 27 soit rempli pour envoyer 1 a "Ma ligne", sinon ne rien envoyer.

Et tant que je suis sur ce genre de code, j'utilise souvent une boucle pour les controls, mais en faite je nomme forcément les controls type TexBox ou autre avec leur Nom control + Chiffre.

VB:
For i = 1 To 2
If Me.Controls("textbox" & i) = "" Then
    MsgBox "Votre client n'a pas de NOM ni de Prénom???,"
TextBox1.SetFocus
Exit Sub
End If
Next i

Comment je pourrais faire si je veux nommer les Controls par leur intitulé.

Du genre comme ici : Txt_Nom et Txt_Prenom

J'ai vue passer des codes qui gére par les tagg il me semble, es-ce la solution?

Merci.

G'Claire
 

ChTi160

XLDnaute Barbatruc
Bonjour GClaire
Bonjour le Fil (Staple1600) , le Forum
Gclaire ! Juste pour te Saluer Lol
si tu as des Controls Nommés
Ex TxtB_Id_Nom ,TxtB_Id_Prenom etc etc
edit :
VB:
For Each Ctrl in .Controls
If Ctrl.Name Like "TxtB_Id_"& "*" Then

End If
Next ' Ctrl

Bonne journée
Prenez soin de vous
Jean marie
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Je vais bien "Confiné" Lol
Merci
Tu pourrais aussi utiliser le Tag pour (si toutes les infos ne sont pas obligatoires ) mettre 1 ou 0 dans le Tag pour Obligatoire et Non Obligatoire et faire le Test
VB:
For Each Ctrl in .Controls
If Ctrl.Name Like "TxtB_Id_"& "*" And Ctrl.Tag= 1 Then
' Ici Test si Vide etc etc
End If
Next ' Ctrl
non testé (voir#5)
Jean marie
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Dans ta procédure
VB:
Cmd_Annuler_Click
VB:
'*******************************************************************
'* Procédure pour annuler la sélection                                *
'*******************************************************************
Private Sub Cmd_Annuler_Click()
'Alimentation_Listview ' je pense que tu n'as pas besoin de cela
VideTextbox 'et tu vides les TextBox déjà remplis
mais je n'ai peut être pas compris Lol
jean marie
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour ma vieille branche de Jean Marie ;-), G'Clair aussi ca fait un Bail, et Bonjour à Stapple1600, une bonne vieille équipe de choc !!!

J'espère que vous allez tous bien par les temps qui courent.

Juste une petite intervention, car Stapple1600 vous a donné la solution mais vous n'y avez pas prété bien attention on dirait...

If TypeName(ctrl) = "TextBox" Then...

Là dans ce loop, il s'en fiche si la TextBox se nomme "Txt_Nom", "Txt_Prenom" etc ... Il prend en compte tous les Controls du Type "TextBox"...

La solution de la Propriété "Tag" est aussi ultra utile selon les cas, comme signalé par G'Clair et confirmé par Jean Marie... Simple d'emploi aussi.

Bien à vous
@+Thierry
 

GClaire

XLDnaute Occasionnel
Supporter XLD
Bonjour ma vieille branche de Jean Marie ;-), G'Clair aussi ca fait un Bail, et Bonjour à Stapple1600, une bonne vieille équipe de choc !!!

J'espère que vous allez tous bien par les temps qui courent.

Juste une petite intervention, car Stapple1600 vous a donné la solution mais vous n'y avez pas prété bien attention on dirait...

If TypeName(ctrl) = "TextBox" Then...

Là dans ce loop, il s'en fiche si la TextBox se nomme "Txt_Nom", "Txt_Prenom" etc ... Il prend en compte tous les Controls du Type "TextBox"...

La solution de la Propriété "Tag" est aussi ultra utile selon les cas, comme signalé par G'Clair et confirmé par Jean Marie... Simple d'emploi aussi.

Bien à vous
@+Thierry


Si si j'y ai prété attention, pour cela que j'ai demandé plus de précision, car j'ai d'autre controles TextBox qui eux ne sont pas a prendre en compte dans mon code.

Merci, G'Claire
 

GClaire

XLDnaute Occasionnel
Supporter XLD
Re
Dans ta procédure
VB:
Cmd_Annuler_Click
VB:
'*******************************************************************
'* Procédure pour annuler la sélection                                *
'*******************************************************************
Private Sub Cmd_Annuler_Click()
'Alimentation_Listview ' je pense que tu n'as pas besoin de cela
VideTextbox 'et tu vides les TextBox déjà remplis
mais je n'ai peut être pas compris Lol
jean marie


Oui je l'avais mis, pour être sur de repartir sur un listview RAS, j'ai modifié ca fonctionne pareil a priori, lol.

Merci.

G'Claire
 

ChTi160

XLDnaute Barbatruc
Excusez moi
Ohhhhhh !!!!!!!!!!!!!!!!!!!
_Thierry (@+Thierry )
Super content d'avoir de tes nouvelles (tu me manques , sans rire , tu m'as mis le pied à l'étrier)
j'espère que tu vas bien !
Prend soin de toi et donne de tes nouvelles de temps en temps !
merci par avance
prends soin de toi
Jean marie (Chti160)
Ps : j'ai toujours ton CD de Démos
 

GClaire

XLDnaute Occasionnel
Supporter XLD
Hello.

J'adire le post des retrouvailles.

Donc voici ce que j'ai fais.

Un mélange du code de Stapple1600 et Chti160

VB:
Sub Test_Controls_Intitules()
Ctrls As Object
Dim tBx


For Each Ctrls In USF_GestionClient.Frm_Coordonnees.Controls
    If Ctrls.Name Like "TxtB_Id_" & "*" And Ctrls.Tag = 1 Then
        If Ctrls.Text = "" Then
            tBx = tBx & "," & Ctrls.Name
        End If
    End If
Next Ctrls
If tBx <> "" Then
    MsgBox Mid(tBx, 2) & Chr(13) & "sont vides!", vbOKOnly + vbCritical, "Test saisie TextBox"
Exit Sub
End If
End Sub

Ben on m'a toujours dit que les mélange cela le faisait pas.

Ben ca le fait pas, lol.

Merci, G'Claire
 

Discussions similaires

H
Réponses
19
Affichages
6 K

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i