validation champs dans userform

WocaM

XLDnaute Junior
Bonjour à tous,

Etant sur un autre projet pour mon boulot, je me tourne à nouveau vers vous pour quémander votre aide

je vous pose le topo:
  1. dans un premier userform(1) je souhaite renseigner un tableau (1) situé dans une 2ieme feuille
  2. dans un deuxieme userform(2) je souhaite selectionné une des lignes précédemment écrite pour la compléter puis l'archiver dans une autre tableau (2) vers une 3ieme feuille
  3. en fonction de la date du jour faire ressortir les lignes du tableau (1) qui serais en dépassement de dates

Je me suis inspiré de divers sujets trouvé sur le forum mais la je commence à sécher pour le point 1, voila où je bloque pour l'instant.
Dans le userform1, j'ai crée un bouton "valider" et je voudrais que le code associé (CommandButton1_Click) ne fonctionne que si tous les # champs sont remplis
J'ai créer des messages d'alerte quand les champs ne sont pas remplis mais quand j'arrive au dernier message d'alerte
il copie quand même les données (vides et non vides)

En gros, je n'arrive pas à gérer la boucle d'arrêt

Sinon j'ai commencé le point 2 (création du userform) mais pas encore la récupération des données
le point 3 je n'ai encore rien fais

Là je suis chez moi, j’édite ce message dès que je suis de retour au travail pour vous mettre le fichier en exemple

Cordialement
WcaM
 
G

Guest

Guest
Re : validation champs dans userform

Bonjour,

Peut-être avec un truc de ce genre:
CommandButton1.enabled = TextBox1<>"" and Combobox1.listindex>-1 and AutreCondition.
Ou autre chose! Va savoir! sans fichier ni macro!

A+
 

WocaM

XLDnaute Junior
Re : validation champs dans userform

Même pas le temps de retourner au boulot !!! déjà une réponse

le fichier arrive, il est brut de pomme pas nettoyé avec plein de truc qui sert pas
 

Pièces jointes

  • gestion DAOE.xlsm
    52 KB · Affichages: 92
  • gestion DAOE.xlsm
    52 KB · Affichages: 99
  • gestion DAOE.xlsm
    52 KB · Affichages: 96
G

Guest

Guest
Re : validation champs dans userform

Bonjour,

Code:
Private Sub CommandButton1_Click()
    Dim Ind As Integer

 'Dès qu'une condition sera vrai, on sortira de la procédure après avoir mis le focus sur le contrôle idoine

    Select Case True
    'Dès qu'une condition sera vrai, on sortira de la procédure après avoir mis le focus sur le contrôle idoine
    Case Trim(Me.TextBox1).Value = ""
        MsgBox "Merci d'indiquer un numéro de document", vbInformation, "ATTENTION ..."
        Me.TextBox1.SetFocus
        Exit Sub

    Case Trim(Me.TextBox2).Value = ""
        MsgBox "Merci d'indiquer une équipe ou entreprise", vbInformation, "ATTENTION ..."
        Me.TextBox2.SetFocus
        Exit Sub

    Case Trim(Me.TextBox3).Value = ""
        MsgBox "Merci d'indiquer la nature de l'intervention", vbInformation, "ATTENTION ..."
        Me.TextBox3.SetFocus
        Exit Sub

    Case Trim(Me.TextBox4).Value = ""
        MsgBox "Merci d'indiquer une date de retour", vbInformation, "ATTENTION ..."
        Me.TextBox4.SetFocus
        Exit Sub

    Case Trim(Me.ComboBox1).Value = ""
        MsgBox "Merci d'indiquer un ouvrage", vbInformation, "ATTENTION ..."
        OptionButton1.Value = True
        Me.ComboBox1.SetFocus
        Exit Sub

    Case Trim(Me.ComboBox2).Value = ""
        MsgBox "Merci d'indiquer un signataire", vbInformation, "ATTENTION ..."
        Me.ComboBox2.SetFocus
        Exit Sub
    End Select

   'Si on est arrivé là alors on peut enregistrer les données

    Maligne = Sheets("DONNEES").Range("A" & Rows.Count).End(xlUp).Row + 1
   'Suite du code d'enregistrement des données
   '......
End Sub

A+
 

WocaM

XLDnaute Junior
Re : validation champs dans userform

Merci pour cette réponse rapide

malheureusement je ne peux tester si ça marche

Code:
Erreur d'exécution '424'
Objet requis

en mode Debogage
Code:
    Case Trim(Me.TextBox1).Value = ""

et là je vois pas pourquoi il me dit ça

Cordialement
 

WocaM

XLDnaute Junior
Re : validation champs dans userform

Bonjour GeoTrouvePas

Effectivement c'était bien le problème de parenthèse

du coup merci Hasco et GeoTrouvePas

Par contre j'ai voulu reprendre ce bout de code pour le mettre plus loin mais ça marche pas correctement
Code:
Private Sub TextBox1_AfterUpdate()

   Select Case True
    'Dès qu'une condition sera vrai, on sortira de la procédure après avoir mis le focus sur le contrôle idoine
   Case Len(Me.TextBox1.Value) < 4
      MsgBox "Le format doit être 4 chiffres", vbInformation, "ATTENTION ..."
      Me.TextBox1.SetFocus
      Exit Sub
   
   Case Me.TextBox1.Value = Not IsNumeric(Mid(Me.TextBox1, 4, 1))
    MsgBox "Le format doit être numérique", vbInformation, "ATTENTION ..."
    Me.TextBox1.Value = ""
    Me.TextBox1.SetFocus
    Exit Sub
   End Select
End Sub

Si je met un nombre inférieur à 4 il me met bien le message mais le focus passe au TextBox2
Et si je met une lettre là ça me met meme pas le message et passe au focus suivant

encore un peu d'aide siouplais
Cordialement
WocaM
 
G

Guest

Guest
Re : validation champs dans userform

Re,

La fonction Len retourne la longueur de la chaine de caratère pas la valeur du nombre.

Case Val(TextBox1.Value)<4

Voir l'aide excel sur Len, Val, Cdbl, et autres fonctions.

A+
 

WocaM

XLDnaute Junior
Re : validation champs dans userform

re,

Ok merci pour la fonction numérique mais ça ne change pas mon problème
qui est que j'ai bien le message d'alerte que j'ai placé quand le champ n'est pas bon
mais le focus ne reste pas sur le TextBox1 pour le modifer directement

alors que dans le code que tu m'a filé avant ça restait bien sur le TextBox1

c'est surtout ca que je capte pas !!!!

A+
 

WocaM

XLDnaute Junior
Re : validation champs dans userform

Re,

Ok merci pour l'explication sur la fonction numérique mais ça ne change pas mon problème
qui est que j'ai bien le message d'alerte que j'ai placé quand le champ n'est pas bon
mais le focus ne reste pas sur le TextBox1 pour le modifer directement

alors que dans le code que tu m'a filé avant ça restait bien sur le TextBox1

c'est surtout ca que je capte pas !!!! même avec l'aide d'Excel

A+

EDIT: Désolé pour le double post problème de navigateur
 
Dernière édition:
G

Guest

Guest
Re : validation champs dans userform

Re,

Je vois bien d'autres erreurs, mais comme je ne sais pas ce que tu veux faire exactement....?

De plus je crois le temps arrivé pour toi d'aller trouver un bon tutoriel ou autre sur vba et la programation.

Donne nous les moyens de t'aider si tu veux de l'aide.

A+
 
Dernière modification par un modérateur:

WocaM

XLDnaute Junior
Re : validation champs dans userform

Bonsoir

Merci Hasco et GeoTrouvePas, vous m'avez bien aidé

J'ai pas mal avancé sur mon petit projet. Je suis assez content de moi (y pas de mal à s'auto-congratuler ;))
J'ai laissé tomber pour le focus qui reste pas sur le textbox1, c'était vraiment du luxe (au pire j'y reviendrais plus tard)

Le point 1 de mon projet marche comme je le veux (le code doit pouvoir s'optimiser mais ça marche)
le seul petit soucis,c'est le format issu de mes textbox qui sont sous forme de texte dans mon tableau DONNEES
j'ai pas encore regardé ça pour les convertir en date et nombre.

Sinon, me voila bloqué avec mon point 2, je ne sais pas comment récupérer les données que je viens de créer dans mon tableau DONNEES pour les remettre dans mon userform2, je m'explique:

Je veux choisir, via un Combo, une ligne (via la colonne NUMERO DOCUMENT) pour ensuite afficher dans des textbox certaines cellules de cette ligne, ceci afin de vérifier que je sélectionne bien la bonne ligne (car je peux avoir les mêmes numéros)

Une fois ceci affiché, j'aurais à compléter les champs de mon userform2 et copier les nouvelles données vers mon tableau (ARCHIVES_DONNEES) => ça je pourrais gérer, c'est la même chose que pour mon userform1 :p

Il me restera juste à supprimer la ligne sélectionné dans mon tableau DONNEES (ça je devrais y arriver aussi)

et mon point 2 sera finit

voila mon fichier, pour ceux qui veulent m'aider

Bon là il commence vraiment à se faire tard
je vous souhaite bonne nuit pour ceux qui me liront cette nuit

A+
WocaM

PS: dans mon fichier j'ai désactivé les calendar ils marche pas chez moi ???? ( j'ai pourtant installé le fichier OCX)
 

Pièces jointes

  • gestion DAOE.xlsm
    83.1 KB · Affichages: 71
  • gestion DAOE.xlsm
    83.1 KB · Affichages: 82
  • gestion DAOE.xlsm
    83.1 KB · Affichages: 72
Dernière édition:
G

Guest

Guest
Re : validation champs dans userform

Bonjour,

Avec le fichier cela va mieux pour comprendre.

Alors pour le textbox1 je te propose un contrôle de saisie au moment où l'utilisateur appuie sur une touche:Evènement KeyPress:
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'examiner la touche pressée
 Select Case KeyAscii
    Case 48 To 57 'chiffres de 0 à 9 -> on ne fait rien
    Case Else 'sinon on signale que seuls les chiffres sont autorisés
        MsgBox "Seuls les chiffres sont permis", vbInformation, "ATTENTION ..."
        KeyAscii = 0
End Select
End Sub

Ensuite à la sortie du TextBox, si celui-ci ne comporte pas 4 chiffres minium on oblige l'utilsateur à rester dessus: Evènement Exit
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 If Len(TextBox1.Text) < 4 Then
        Cancel = True 'Empêchera le focus de se déplacer vers le prochain textbox
        MsgBox "Le format doit être 4 chiffres", vbInformation, "ATTENTION ..."
 End If
End Sub

A+
 

WocaM

XLDnaute Junior
Re : validation champs dans userform

Bonjour,

Merci cette solution est parfaite

Sinon j'ai un peu avancé ce matin sur ma deuxième partie
Mais là je coince, j'ai récupéré ce bout de code sur un post,

Code:
Private Sub ComboBox1_Change()
With Sheets("DONNEES")
    If ComboBox1.ListIndex = -1 Then Exit Sub
    lig = WorksheetFunction.Match(ComboBox1.Value, .Range("B1:B500"), 0)
    TextBox2 = .Cells(lig, 3) 'place dans textbox2 l'equipe/entreprise qui figure en col 3 de la feuille "données"
    TextBox3 = .Cells(lig, 4) 'place dans textbox3 la désignation d'ouvragequi figure en col 4 de la feuille "données"
    TextBox4 = .Cells(lig, 5) 'place dans textbox4 la nature de l'intervention qui figure en col 5 de la feuille "données"
End With
End Sub

Il marche bien sauf que en textbox4, moi je peux avoir une cellule avec plusieurs lignes dedans
et quand j’exécute le code il me copie les données de la cellule avec une mauvaise mise en forme

Capture1.PNG

Je continue à chercher mais as-tu une solution pour remettre les lignes dans le textbox "designation ouvrage" les unes sous les autres?


Cordialement
WocaM
 

Pièces jointes

  • Capture1.PNG
    Capture1.PNG
    21.3 KB · Affichages: 84
  • Capture1.PNG
    Capture1.PNG
    21.3 KB · Affichages: 86
G

Guest

Guest
Re : validation champs dans userform

Re,

Franchement, tu n'aides pas... J'ai pas de textBox4 dans le userForm2 'Retour d'une feuille' mais une listBox.

Si tu as un Textbox, met sa propriété Multiline à True si ta cellule a plusieurs lignes elle seront automatique mises les unes sous les autres, si c'est une listBox: Listbox1.list=Split(.cells(lig,5),chr(10))

A+
 

Discussions similaires

Réponses
4
Affichages
384

Statistiques des forums

Discussions
312 495
Messages
2 088 964
Membres
103 992
dernier inscrit
Christine 974