Macro pour liste déroulante obligatoire avec double clic
Résolu
xaviermagdelaine
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
xaviermagdelaine Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
xaviermagdelaine Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
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

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:
- Macro pour liste déroulante obligatoire avec double clic
- Liste déroulante excel - Guide
- Double ecran - Guide
- Liste déroulante en cascade - Guide
- Whatsapp double sim - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
5 réponses
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...
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...
Bonjour,
Voici mon fichier correspondant.
Merci par avance de votre aide.
https://www.cjoint.com/c/GClk11TUAYv
Voici mon fichier correspondant.
Merci par avance de votre aide.
https://www.cjoint.com/c/GClk11TUAYv
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 !!!!!!!!!!!!!!!!!!!!
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 !!!!!!!!!!!!!!!!!!!!
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Au minimum:
https://www.cjoint.com/c/GCogz4MNfbf
Au minimum:
https://www.cjoint.com/c/GCogz4MNfbf