Choix d'un utilisateur dans un USERFORM

Bonjour,

Je cherche un moyen de choisir l'agent s'occupant d'une commande grâce à un userform. Dans les faits, lorsque l'agent clique sur une case de la colonne A, un userform apparaît et propose ces deux options à l'utilisateur chacune avec des cases à cocher :

  • Je suis l'utilisateur : XXXXXX (XXXX = identifiant de la session windows)
  • Je suis quelqu'un d'autre : ________ (zone de texte à remplir par l'utilisateur)

Son fonctionnement : si l'utilisateur est celui indiqué par l'ID de la session, il clique sur la case à cocher précédant l'identifiant et clique sur OK. Dans la cellule de la colonne A où il avait précédemment cliqué, son ID s'y inscrit.

Dans le cas où c'est un autre utilisateur, il clique sur la case à cocher de la zone de texte, inscrit son nom puis clique sur OK. Comme précédemment, on ID personnalisé s'inscrit dans la case correspondante.

Je vous joints mon fichier test, si vous n'avez des questions n'hésitez pas à me demander.

Bien cordialement, Baptiste.

Bonjour Horusbk, bonjour le forum,

Fichier xlsm à la place du fichier xlsx !...

Bonjour ThauThème,

Veuillez m'excuser, voici le bon format par PJ.

Cordialement,

Baptiste.

Re,

Arf ! If faut carrément tout faire!...

Bonjour,

Entre-temps j'ai trouvé une autre technique, mais c'est moins beau.

J'ai créé une inputbox qui est lancée au clique sur la cellule, l'utilisateur met son nom et clique sur OK : son nom s'inscrit dans la cellule.

C'est un peu laborieux mais ça fonctionne. Merci.

Bonjour horusbk, le forum,

A tester et adapter à tes besoins :

Dans la feuille nommée ID , tu complètes ou modifies la liste d'ID_Users enregistrés.

Dans le userform, si tu sélectionne la combobox "ID enregistré", tu peux choisir un nom de la liste (elle est dynamique, si tu rajoutes ou retire un nom, elle en tient compte).

Si tu sélectionne la textbox "nouvel ID", il faut taper le nom.

Cordialement,


Re,

Une version TEST2 sans cases à cocher ,

Bonjour xorsankukai,

Merci de ton aide, je vais reprendre la base de ton userform pour construire mon fichier.

Dans mon cas, je lance le userform au clic sur une cellule d'une colonne bien définie. Tu peux me confirmer que c'est bien ce code :

Dim Y as Boolean
Y = Target.Column = 1

Où 1=colonne A, 2=colonne B ....

Encore merci.

Baptiste.

Re,

Nouvelle version, tu cliques sur une cellule de la colonne A ou de la colonne B pour ouvrir l'Userform...

Je ne sais pas faire mieux....

Code dans la Feuil1:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:B")) Is Nothing Then
UserForm1.Show
End If
End Sub

Cordialement,

Wouah *-* super !

Est-ce que c'est possible de rendre optionnel les cases commande et commentaires du USERFORM ?

Est-ce que c'est possible de rendre optionnel les cases commande et commentaires du USERFORM ?

Oui, il faut supprimer les lignes suivantes dans le code du UserForm

ElseIf TextBox2.Value = "" Then
MsgBox "Numéro de commande manquant"
Exit Sub

ElseIf TextBox3.Value = "" Then
MsgBox "Saisissez un commentaire"
Exit Sub

Mais dans ton exemple, tu renseigneras donc uniquement l'ID si les autres cases restent vides

C'est exactement ce que j'attendais merci xorsankukai pour ton aide

Je passe en résolu !

Re xorsankukai,

Je suis en train de mettre les codes sur mon fichier test et je n'arrive pas à modifier l'emplacement de la liste des utilisateurs.

Elle se trouve dans une feuille nommée BUILD (feuil3 de base) dans la colonne E (sans en-tête).

De plus, j'ai déjà l'événement Private Sub Worksheet_SelectionChange dans ma feuille de calcul comment puis-je les fusionner ?

Merci encore pour ton aide.

Baptiste.

Bonjour horusbk, le forum,

je n'arrive pas à modifier l'emplacement de la liste des utilisateurs.

Elle se trouve dans une feuille nommée BUILD (feuil3 de base) dans la colonne E (sans en-tête).

Essaie ainsi:

Private Sub UserForm_Initialize()

   With Sheets(Feuil3.Name)
      ComboBox1.Clear
         ComboBox1.List = .Range("E1:E" & .Range("E" & Rows.Count).End(xlUp).Row).Value

   End With

End Sub

Cordialement,

j'ai déjà l'événement Private Sub Worksheet_SelectionChange dans ma feuille de calcul comment puis-je les fusionner ?

Quel évènement se produit déjà dans ton selectionchange ?

Tu veux ouvrir l'USF avant ou après l'évènement ?

@+

Bonjour xorsankukai,

Dans SelectionChange, j'ai déjà l'ouverture d'un calendrier pour choisir une date de commande dans mon fichier.

Je voudrais ouvrir l'userform avant l'événement du calendrier.

De plus j'ai une erreur après avoir modifié le code que tu m'as donné ci-dessus :

Erreur d'execution 9

indice n'apparaît pas a la selection

Et ça point sur ce bout de code :

Private Sub CommandButton1_Click()

            With Sheets("Feuil1")

num = Sheets("Feuil1").Range("A65535").End(xlUp).Row + 1

Merci de ton aide.

Bonjour horusbk,

Erreur d'execution 9

indice n'apparaît pas a la selection

Es-tu sûr d'avoir nommé correctement ta feuille ? "Feuil1" est bien la feuille sur laquelle tu inscris tes données via l'UserForm ?

Je voudrais ouvrir l'userform avant l'événement du calendrier

Intercale ces lignes

If Not Application.Intersect(Target, Range("A:B")) Is Nothing Then
UserForm1.Show
End If

entre

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

et le code servant à ouvrir le calendrier.

Donc, ça doit donner un code du genre

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:B")) Is Nothing Then
UserForm1.Show
End If
Ton autre code
End sub

Pas évident sans voir ton fichier, les réponses restent hasardeuses,

Cordialement,

Bonjour xorsankukai,

En effet j'avais mal nommé mes feuilles. C'est corrigé.

Maintenant lorsque je clique sur VALIDER l'utilisateur n'est pas inséré dans la cellule (tapé à la main ou choisi dans la liste).

Dans mon fichier ma feuil1 se nomme CONCEPTION et la première cellule modifiable (en dessous des en-têtes) est la A3.

J'ai modifié le nom de l'userform "userform1" par "users".

Voici comme j'ai modifié le code de ma feuil1 / Conception :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'("A:A") choisir la colonne de l'identifiant
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
Users.Show
End If
End Sub

Et de l'USERFORM :

Private Sub ComboBox1_Change()

If ComboBox1.Value <> "" Then
TextBox1.Value = ""
End If

End Sub

Private Sub CommandButton1_Click()

            With Sheets("CONCEPTION")

num = Sheets("CONCEPTION").Range("A65535").End(xlUp).Row + 1

If ComboBox1.Value = "" And TextBox1.Value = "" Then
MsgBox " Renseigner un ID"
Exit Sub

End If

If ComboBox1.Value <> "" And TextBox1.Value = "" Then
.Range("A" & num).Value = ComboBox1.Value
End If

If TextBox1.Value <> "" And ComboBox1.Value = "" Then
.Range("A" & num).Value = TextBox1.Value

End If

.Range("B" & num).Value = TextBox2.Value
.Range("C" & num).Value = TextBox3.Value

            End With

End Sub

Private Sub CommandButton2_Click()

Unload Users

End Sub

Private Sub TextBox1_Change()

If TextBox1.Value <> "" Then
ComboBox1.Value = ""
End If

End Sub

    Private Sub UserForm_Initialize()

       With Sheets(Feuil3.Name)
          ComboBox1.Clear
'Emplacement de la liste des utilisateurs
             ComboBox1.List = .Range("E1:E" & .Range("E" & Rows.Count).End(xlUp).Row).Value

       End With

    End Sub

Bonjour horusbk, le forum,

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '("A:A") choisir la colonne de l'identifiant
    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
    Users.Show
    End If
    End Sub

L'UserForm "Users" s'ouvre si tu cliques sur une cellule de la colonne A (et plus A et B).

Sinon, pour le reste, ton code semble correct, je ne vois pas ce qui cloche (mais j'ai bossé de nuit, je n'ai pas les idées claires ).

Si tu remplis "Commande" et "Commentaires" et que tu cliques sur Valider, ça écrit sur la feuille ?

Tu n'aurai pas renommé le bouton "CommandButton1" par hasard ?

Crdlt,

Bonjour xorsankukai,

Ça a été le boulot, pas trop dur de nuit ?

J'ai supprimé tous tes codes que j'avais sur mon fichier et je les ai remplacé par ceux que tu viens d'envoyer dans le test5.

Le formulaire se lance, on peut choisir un utilisateur + mettre un numéro de commande + un commentaire mais toujours rien lorsqu'on clique sur Valider.

Pour te faciliter la tâche, voici le fichier tel qu'il l'est configuré pour le boulot j'ai enlevé toutes les données/en-têtes/classeurs qui sont confidentiels et j'ai gardé uniquement les trois premières colonnes. (v5.1_test-ID-utilisateurs.xlsm)

Dans le cas où ça ne fonctionne pas, tu peux essayer de simplifier le formulaire en gardant uniquement choix de l'utilisateur liste / manuel et tu supprimes les cases commentaires et commandes.

Encore merci pour ton aide.

Baptiste.

Re,

J'ai testé ton fichier, effectivement, rien ne se passe en cliquant sur "Valider".

Il y a une erreur au niveau de l'éditeur VBA, dans le code--> num= pose problème (Erreur de compilation :projet ou bibliothèque introuvable) , ce qui n'était pas le cas jusqu'à présent.

Je ne sais pas comment t'aider , cela dépasse mes compétences

Faut demander aux pros....

Un début de piste https://forum.excel-pratique.com/excel/probleme-avec-petite-macro-t28865.html?hilit=r%C3%A9f%C3%A9rence%20manquante

Rechercher des sujets similaires à "choix utilisateur userform"