Macro pour liste de personne obligatoire

27classeur1.xlsm (522.43 Ko)

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

sans titre

Bonsoir,

Un fichier épuré ou non, avec des données significatives et non confidentielles :--> une chance de plus d'avoir des réponses.

@+

Bonsoir Bernard,

A moins que je ne sois trompé mais j'ai mis le fichier en haut de mon message.

Je le remet ici.

Merci par avance si vous pouviez me dépatouiller .

https://www.cjoint.com/doc/17_03/GCliZPfARxv_Classeur1.xlsm

Bonne soirée

Rechercher des sujets similaires à "macro liste personne obligatoire"