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

Une solution à peaufiner
VB:
Private Sub Worksheet_Change(ByVal R As Range)
If R.Column = 3 Then
If Application.CountIf(Range("C:C"), R) > 1 And Application.CountIf(Range("F:F"), Cells(R.Row, "F")) > 1 Then
MsgBox "Doublons!", vbCritical, "ERREUR!"
R.Offset(, 1) = Format(Now, "dd-mm-yyyy | hh:mm:ss")
R.ClearContents
End If
End If
End Sub
J'ai ajouter une formule de ce type en colonne F
=CONCATENER(Tableau1[@ID];Tableau1[@REPAS];GAUCHE(Tableau1[@DATE];10))

Cela fonctionne en situation de test.

NB: Tu remarques donc que j'ai utilisé la fonction Tableau
 
Re

1) As-tu transformé ton tableau en Tableau Excel?
(Dans mon exemple, le tableau est nommé Tableau1, nom attribué automatiquement par Excel)
https://support.office.com/fr-fr/ar...ux-excel-f5ed2452-2337-4f71-bed3-c8ae6d2b276e

2) Ensuite il faut mettre la formule en colonne F (à partir de F2 et recopier vers le bas)
Pour l'esthétisme, on mettra la couleur de police en blanc.

3) Je ne joins plus de fichier Excel sur le forum.
Normalement, les explications que je poste et l'implication du demandeur à résoudre sa question doivent suffire. 😉
(Ce que j'appelle la philosophie "Mélam1ndanlekamboui" 😉)
 
Re

Je rajoute cette macro qui devrait finir de t'aider 😉
(à ne lancer qu'une seule fois, c'est pour créer le Tableau)

VB:
Sub MiseEnTableau()
Dim objTable As ListObject, rng As Range
Set rng = Feuil1.Range("$A$1:$D$20")
Set objTable = Feuil1.ListObjects.Add(xlSrcRange, rng, , xlYes)
objTable.Name = "Tableau1"
objTable.TableStyle = "TableStyleLight16"
Range("F2:F20").FormulaR1C1 = "=CONCATENATE(Tableau1[@ID],Tableau1[@REPAS],LEFT(Tableau1[@DATE],10))"
End Sub

NB: Le nom des entêtes du tableau seront:
ID NOM REPAS DATE
 
Re

@Yusuke
Quand tu auras réussi à mettre ton tableau sous forme de Tableau, çà devrait déjà mieux fonctionner
(comme cela a fonctionné chez moi, mais ce n'est là qu'une ébauche qui fonctionne en mode test)

PS: Il y a surement de meilleures façons de faire 😉
Je laisse la place à mes petits camarades de jeux pour cela 😉
 
- 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
Retour