Macro pour liste déroulante obligatoire avec double clic

Résolu/Fermé
xaviermagdelaine Messages postés 20 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 14 mars 2017 - 11 mars 2017 à 09:37
xaviermagdelaine Messages postés 20 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 14 mars 2017 - 14 mars 2017 à 08:14
B


Bonsoir à tous,
J'ai un fichier excel (créer par une autre personne) qui me permet d'enregistrer des mouvements de matériels.
Le fonctionnement est le suivant:
Je double clic par ex en C4; une fenêtre s’ouvre et je scanne un code barre correspondant au nom d'une personne identique à la liste se trouvant sous l'onglet "personnel" (ex.pierre, paul, alain, julie) mais pas Daniel car il ne se trouve pas dans la liste.
Mon problème est que je voudrais que nous puissions pas mettre n'importe quelques nom dans cette fenêtre mais UNIQUEMENT les noms se trouvant dan l'onglet "Personnel" (actuellement , ils peuvent écrire n'importe quoi et cela fonctionne sauf que s'ils ne font de double clic le mouvement n'est pas enregistrer dans l'onglet "historique" et que cela doit aller obligatoirement dans l'historique).




Voici le code actuel créer par une autre personne car je n'y connais pas grand chose à ce niveau mais j'aurais besoin de votre savoir afin d'améliorer ce petit fichier.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C3:C50")) Is Nothing Then
Cancel = True
'Récupération des données de la ligne choisie
xDesigna = Cells(Target.Row, "A")
xReferen = Cells(Target.Row, "B")
xNomAjus = Cells(Target.Row, "C")
xDatePre = Cells(Target.Row, "D")
xManquan = Cells(Target.Row, "F")
xStatut = Cells(Target.Row, "E")
'Test si un ajusteur est déja indiqué
If xNomAjus <> Empty Then
xMess = Empty
xMess = xMess & "L'ajusteur " & xNomAjus & " est déjà indiqué" & Chr(13)
xMess = xMess & "Cela veut-il dire qu'il à rendu le matériel" & Chr(13) & Chr(13)
xMess = xMess & " - Si OUI, matériel rendu, donc effacement des données" & Chr(13)
xMess = xMess & " - Si NON, erreur de ligne" & Chr(13)
xRep = MsgBox(xMess, vbQuestion + vbYesNo, "TOTO")
If xRep = vbYes Then
Cells(Target.Row, "C") = Empty
Cells(Target.Row, "D") = Empty
xStatut = "Rendu"
Cells(Target.Row, "E") = ""
GoTo EnregistreHistorique
Else
Exit Sub
End If
Else
xNomAjus = InputBox("Nom de l'ajusteur", "AJUSTEUR")
Cells(Target.Row, "C") = xNomAjus
Cells(Target.Row, "D") = Now
xDatePre = Cells(Target.Row, "D")
xStatut = "Emprunté"
Cells(Target.Row, "E") = xStatut
End If
EnregistreHistorique:
With Sheets("HistoriquePrêt")
xDerLig = .Range("A65536").End(xlUp).Row
xNewlig = xDerLig + 1
.Cells(xNewlig, "A") = xDesigna 'Désignation
.Cells(xNewlig, "B") = xReferen 'Référence
.Cells(xNewlig, "C") = xNomAjus 'Nom ajusteur
.Cells(xNewlig, "D") = Now 'Date pret
.Cells(xNewlig, "F") = xManquan 'Manquant
.Cells(xNewlig, "E") = xStatut 'Statut
End With
End If
End Sub

J'espère avoir été assez clair dans mes explications et je vous remercie par avance de votre aide.
Bonne soirée



A voir également:

5 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 11/03/2017 à 11:28
Bonjour,

Mon problème est que je voudrais que nous puissions pas mettre n'importe quelques nom dans cette fenêtre mais UNIQUEMENT les noms se trouvant dan l'onglet "Personnel"
Certes. Un fichier avec des donnees bidons(mais coherantes) serait le bienvenu

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
xaviermagdelaine Messages postés 20 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 14 mars 2017
11 mars 2017 à 11:55
Bonjour,
Voici mon fichier correspondant.
Merci par avance de votre aide.

https://www.cjoint.com/c/GClk11TUAYv
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
11 mars 2017 à 15:37
Bonjour,

J'ai recupere le fichier
une fenêtre s’ouvre et je scanne un code barre correspondant
Moi je vois une inputbox pour saisie manuelle du nom, pas de scan code a barre !!!!!!!!!!!!!!!!!!!!
0
xaviermagdelaine Messages postés 20 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 14 mars 2017
11 mars 2017 à 15:56
Bonjour,
Oui je pense que cela s'appelle une inputbox pour entrée des noms manuellement ou bien à partir de code barre que j'ai créer pour lire avec une douchette et le problème se trouve à ce niveau.Il faudrait que l'on puisse entrer dans cette inpubox uniquement les noms des personnes.En fait les personnes porte un badge avec leur code barre identique à la liste se trouvant dans mon fichier sous l'onglet "personnel"et je ne veux pas que l'on puisse entrer autre chose que ce qui se trouve dans cette liste.

Ai-je été plus clair.

Ex:de code barre
https://www.cjoint.com/c/GClo3kgHKnv
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
14 mars 2017 à 07:26
0
xaviermagdelaine Messages postés 20 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 14 mars 2017
14 mars 2017 à 08:14
Bonjour,
Je te remercie pour ta réponse qui correspond parfaitement à ce que souhaitais.
Il me reste juste à regarde ton code afin de le comprendre et de le dupliquer sur toutes les autres feuilles du classeur.
Je te souhaite une bonne journée.
0