Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Choix unique pour le même utilisateur

  • Initiateur de la discussion Initiateur de la discussion Yusuke
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Yusuke

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur ce forum, et j'aimerais bien en profiter pour saluer tous les contributeurs et les remercier pour leur aide précieuse.

J'ai créé un tableau Excel avec 4 colonnes:

ID | Nom | Repas | Date/Heure
01 X Déj
02 Y Petit-déj
03 Z Collation
01 X Déj

La colonne Repas est une liste de choix contenant: Petit-déjeuner, Déjeuner, Collation et Dîner. A chaque nouvelle entrée, on doit sélectionner un repas pour un utilisateur (ID).
Je souhaite savoir comment interdire la sélection d'un repas s'il est déjà pris par un utilisateur (ID).

Merci à vous.
 
Re, EDITION(2) Bonsoir JHA

Une solution sommaire
(mais à tester en inhibant la procédure déjà présente dans ThisWorkBook)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
If Application.CountIf(Range("C:C"), Target) > 1 Then
MsgBox "Doublons!", vbCritical, "ERREUR!"
Target.ClearContents
End If
End If
End Sub
A mettre dans le code de la feuille nommée Feuil1

EDITION(1): Une version plus aboutie
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
If Application.CountIf(Range("C:C"), Target) > 1 Then
MsgBox "Doublons!", vbCritical, "ERREUR!"
Target.Offset(, 1) = Format(Now, "dd-mm-yyyy | hh:mm:ss")
Target.ClearContents
End If
End If
End Sub
NB: Tu aurais avantage à transformer ton tableau en Tableau Excel (Insertion/Tableau)
Cela permets pas mal de choses
 
Dernière édition:
Bonsoir Yusuke et bienvenue sur XLD,
Bonsoir JHA 🙂, Staple1600 😉, à toutes et tous,

Une piste avec une MFC indiquant les doublons : MFC sur la colonne C de formule :
VB:
=SOMMEPROD( --($A$2:$A$999=A2)*($C$2:$C$999<>"")*($C$2:$C$999=C2 )*(ENT($D$2:$D$999)=ENT(D2)))>1

La base est bizarre. La colonne C à mon avis est liée à la colonne D. Qu'est ce qui empêche un utilisateur de marquer une collation comme petit-déjeuner ?
 

Pièces jointes

Dernière édition:
Re,

Une autre piste avec une MFC uniquement sur les horaires de la colonne D sans tenir compte de la colonne C.
Deux repas sont supposés identiques s'ils sont distants d'1h30 ou moins.
VB:
=SOMMEPROD(--($A$2:$A$999=A2)*(ABS($D$2:$D$999-D2)<=1,5/24)*($D$2:$D$999<>""))>1
On pourrait faire cohabiter les deux MFC si on le voulait.
 

Pièces jointes

Bonjour à tous et merci pour vos réponses,

Toutes les solutions proposées sont opérationnelles. Peut être que je me suis mal exprimé au début, donc je reformule:

Un utilisateur n'a droit qu'à un et un seul repas par jour:
Petit déjeuner, déjeuner, collation(casse-croûte), et dîner.

La proposition de @Staple1600 me convient, puisque je souhaite appliquer la restriction via le code VB... Les deux critères qui m'importent sont l'unique ID et le Repas. Puis-je améliorer ce code :
VB:
If Application.CountIf(Range("C:C"), Target) > 1
pour effectuer une vérification sur la colonne ID et la colonne Repas, ensuite afficher un message et effacer les entrées de la même ligne en cas de doublon?

Merci encore une fois de votre aide.
 
Re

@Yusuke
Re
A la relecture:
Ne serait-ce pas plutôt d’empêcher pour un même utilisateur la saisie d'un même repas le même jour ?

Ah bah, voila on se rejoint 😉
Bonjour à tous et merci pour vos réponses,
Un utilisateur n'a droit qu'à un et un seul repas par jour:
Petit déjeuner, déjeuner, collation(casse-croûte), et dîner.


PS: Quid de ma suggestion à propos de l'utilisation de la fonctionnalité Tableau d'Excel ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…