XL 2016 Choix unique pour le même utilisateur

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.
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Formule à essayer
Code:
=NB.SI.ENS($A$2:$A2;$A2;$C$2:$C2;$C2;$D$2:$D2;$D2)

MFC pour avertir d'un double

Edit: Bonsoir Staple1600, mapomme

JHA
 

Pièces jointes

  • Classeur Yusuke.xlsx
    10.7 KB · Affichages: 17
  • Classeur Yusuke bis.xlsx
    11.3 KB · Affichages: 15
Dernière édition:

Staple1600

XLDnaute Barbatruc
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:

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • Yusuke- TestMeal- v1.xlsm
    18.3 KB · Affichages: 19
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • Yusuke- TestMeal- v2.xlsm
    18.3 KB · Affichages: 18

Yusuke

XLDnaute Nouveau
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.
 

Staple1600

XLDnaute Barbatruc
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 ?
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 458
dernier inscrit
Vulgaris workshop