Comment compléter mon UserForm

Salut tout le monde

Voilà j’ai mal a complété mon UserForm

1. Logiquement lorsque je tape le matricule d’un agent les informations se suit, ça marche pas mal sauf que si je tape un seul chiffre de matricule il m’affiche un résultat alors qu’il doit afficher le message d’erreur, comment résoudre ce problème.

2. J’ai besoin lorsque je clic sur « OK » que les informations sur les différente -TextBox – soi copier sur la feuille « consultation » comme indiqué.

3. En fin dans la BDD j’ai des fois un manque par exemple l’agent « TATA BABA » n’a pas de E-MAIL j’ai besoin que lorsque j’ai un manque, j’errai la possibilité de complété ça directement sur UserForm puis je clic sur « Modifier » et puis automatiquement il ajoute cette E-MAIL sur la « BDD ».

Merci à vous

64visite-medicale.zip (41.01 Ko)

Bonsoir,

Dans la fonction Find, il te faut indiquer que tu veux la valeur exacte avec l'argument "LookAt" (xlWhole). J'ai modifié un peu ton code de façon à obliger une saisie correcte en restant dans le TextBox ("Exit" au lieu de "AfterUpdate") :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dim Cel As Range

    If Me.TextBox1.Text = "" Then Exit Sub

    Set Cel = Sheets("BDD").Range("B:B").Find(Me.TextBox1.Text, , xlValues, xlWhole)

    If Not Cel Is Nothing Then

        Me.TextBox2.Text = Cel.Offset(, 2)
        Me.TextBox3.Text = Cel.Offset(, 4)
        Me.TextBox4.Text = Cel.Offset(, 5)
        Me.TextBox5.Text = Cel.Offset(, 6)
        Me.TextBox6.Text = Cel.Offset(, 7)
        Me.TextBox7.Text = Cel.Offset(, 8)
        Me.TextBox8.Text = Cel.Offset(, 9)
        Me.TextBox9.Text = Cel.Offset(, 10)
        Me.TextBox10.Text = Cel.Offset(, 11)
        Me.TextBox11.Text = Cel.Offset(, 3)

    Else

        MsgBox "Le matricule saisi est incorrect ou n'est pas présent !"
        Cancel = True '<-- oblige la saisie en empêchant la sortie du TextBox

    End If

End Sub

Hervé.

merci Theze

pour le 1er probleme si réglé

mais pour les deux autre comment faire

Salut tout le monde

Y a pas qui peut m’aider

Merci

Salut tout le monde et bonjour

Je suis impatient de trouver une solution à mon problème

Merci à vous d'avance.

Bonjour,

Cela ne sert a rien d'être impatient et de reposter des demandes toutes les 3 h.

De plus, meme si ce n'est pas appliqué à ton exemple, des sujets récents traitent du même problème.

Mais voici quand meme une solution :

Dans le code du bouton OK mettre :

Sheets("consultation").Range("D65536").End(xlUp).Offset(1, 0).Value = Me.TextBox12.Text

'recopie dans la feuille consultation dans la colonne D la première cellule non remplie les valeurs de la textbox 12

à toi de recopier le code en changeant le nom de tes cellules et de tes textbox pour chaque item

il ne te reste que le problème 3

salut et merci a vous

ça marche bien mais il me reste le 3 eme problème SVP

merci d'avance

Bonjour,

pour ton problème 3, il n'y a que la colonne email que tu souhaites modifier ou toutes colonnes non remplies ?

Pourquoi tu n'obliges pas à renseigner ces infos lors du remplissage de l'userform ?

Salut et bonjour

Voila j'ai besoin de modifier toutes colonnes non remplies.

Je ne peux pas obliger parceque si pas tous le monde qui à des E-MAIL ou MSS ou connaisse leur G sanguin.

Merci a vous

Bonjour,

Je te propose la solution suivante : un bouton modifier en colonne N de ta feuille BDD, qui ré-ouvre ton userform.

Ensuite un choix par matricule qui affiche les données.

Je n'ai pas encore touché à la partie enregistrer, voulant d'abord voir si c'est cela que tu recherches.

En attente de te lire

Salut et merci.

Bien, mais tu a fait 2 UserForm alors que mois j’ai besoin que sur le même UserForm « consultation » je puisse modifier directement et enregistrer sur BDD.

Mais pour le choix par matricule qui affiche les données si bien merci

Bonjour,

A mon avis que tu ai 1 ou 2 userform, vu que ce sont les memes, ca ne doit pas poser problème. Ce que tu veux c'est pouvoir modifier.

Il "suffit juste" de modifier le bouton OK pour qu'il enregistre en modifiant la ligne sans en créer une nouvelle.

Mais peut être que je me trompe et que je n'ai pas tout compris le but de ta démarche.

Bonjour,

Exacte tu a vu juste.

merci.

Bonjour,

J'ai essayé de travailler sur ce code (trouvé sur un exemple du forum).

Tout fonctionne sauf la modification (le plus important).

Si quelqu'un a une autre idée.

Private Sub CommandButton1_Click()

Dim Modif, Rep

Set Modif = Sheets("BDD").Range("B:B").Find(ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)

If Modif Is Nothing Then

maligne = Sheets("BDD").Range("B65536").End(xlUp).Row + 1

Else

Rep = MsgBox("Le matricule N° " & ComboBox1.Value & " existe !" & vbCrLf & "Voulez-vous la remplacer ?")

If Rep = vbCancel Then Exit Sub

maligne = Modif.Row

End If

For Each ctl In Me.Controls

If Not ctl.Tag = "" Then

Sheets("BDD").Range(ctl.Tag & maligne) = ctl.Value

ctl.Value = ""

End If

Next

Unload Me

End Sub

Private Sub ComboBox1_Change()

Dim Lg As Long

Lg = ComboBox1.ListIndex + 2

For Each ctl In Me.Controls

If ctl.Tag > "B" Then

ctl.Value = Feuil1.Range(ctl.Tag & Lg)

End If

Next

End Sub

Salut

J’ai rien compris mais merci à vous

Je fais appelle à vous qui connaisse bien le code VBA aider moi.

Rechercher des sujets similaires à "comment completer mon userform"