doublons et validation par liste

nonsolum

XLDnaute Nouveau
Bonjour à tous,

Cette question a dû déjà être posée.
Veuillez m'en excuser.

Comment interdire des doublons dans une colonne dont les entrées se font par validation sur liste?

Et ce si possible sans macro en utilisant "Données/Validation"

Si macro nécessaire, comment faire?

Ci-joint fichier excel explicitant la chose.

Cordialement
 

Pièces jointes

  • Doublons_Liste.xls
    26.5 KB · Affichages: 125

Monique

Nous a quitté
Repose en paix
Re : doublons et validation par liste

Bonjour,

Par un format conditionnel

Ou par une liste des noms non encore choisis en feuille "Score"
Pour faire cette liste : formule matricielle, à valider par ctrl, maj et entrée
 

Pièces jointes

  • ListeWonderNonsolum.zip
    6.6 KB · Affichages: 110

nonsolum

XLDnaute Nouveau
Re : doublons et validation par liste

Bonjour,

Merci Monique.
Toujours aussi rapide et efficace.
Je pense qu'effectivement c'est la solution à mon problème.
Je maîtrise difficilement les fonctions matricielles.
Mais j'ai compris l'essentiel de ta proposition.
Je vais donc m'employer à appliquer tout cela dans mon application.

Juste une question.
Voici ta fonction matricielle:
=INDEX(C$1:C$10;MIN(SI(NB.SI(ChoixFait;alias)=0;SI(NB.SI(K$1:K1;alias)=0;LIGNE(alias)))))&""

Pourquoi ne pas utiliser la plage nommée "alias" en début de fonction; soit:
=INDEX(alias;MIN(SI(NB.SI(ChoixFait;alias)=0;SI(NB.SI(K$1:K1;alias)=0;LIGNE(alias)))))&""

Bien cordialement.
 

Monique

Nous a quitté
Repose en paix
Re : doublons et validation par liste

Bonjour,

C'est pour raccourcir la formule en évitant de la mettre au conditionnel

Fais un essai en L2 avec celle-ci :
=INDEX(alias;MIN(SI(NB.SI(ChoixFait;alias)=0;SI(NB.SI(L$1:L1;alias)=0;LIGNE(alias))))-2)&""

Index() part de 1 (ligne 1)
la formule renvoie 0 quand la liste est épuisée
Si la cellule de la ligne 1 est vide,
index(Plage;0) renvoie le contenu de la ligne 1
Index(Plage ; 0) renvoie donc 0
Index(Plage;0)&"" renvoie ""

Pour les nombres, on enlève le &"" et on met un format personnalisé suivi de ;;
On peut aussi le faire pour des cellules contenant du texte
Standard;;
 

nonsolum

XLDnaute Nouveau
Re : doublons et validation par liste

Bonjour Monique,

je reviens sur ta dernière suggestion avec un peu de retard.
Ai appliqué ta suggestion
utilisation 2ème formule matricielle:
=INDEX(alias;MIN(SI(NB.SI(ChoixFait2;alias)=0;SI(NB.SI(L$1:L1;alias)=0;LIGNE(alias))))-2)&""
dans la liste en L (ListeReste2)

Juste petit problème (non bloquant):
Lorsque la formule matricielle index() n'a plus rien à renvoyer elle renvoie le code erreur #VALEUR!
Peut-être est-ce normal bien que je ne comprenne pas pourquoi.

Toutefois, qu'à cela ne tienne, j'ai modifié la plage nommée ListReste2 par la formule:
'=DECALER($L$2;;;NB.SI($L:$L;"><"&"#VALEUR!")-3)
de manière que la liste déroulante en score!choixFait2 n'affiche que les entrées valides.

Merci pour ta collaboration.
Je vais appliqué l'un ou l'autre choix.

Ci-joint fichier excel explicitant les diverses solutions.

Cordialement
 

Pièces jointes

  • ListeWonderNonsolum2.xls
    36 KB · Affichages: 83

Monique

Nous a quitté
Repose en paix
Re : doublons et validation par liste

Bonjour,

Je crois que j'ai mal expliqué

Ce n'était pas une suggestion pour une autre formule possible.
Je te demandais de faire un essai
Une fois l'essai fait, tu devais voir (oui, tu as vu) que cette formule n'était pas super.
Ou bien il faut la mettre au conditionnel,
ou bien il faut un format conditionnel,
ou bien on nomme la plage en tenant compte des valeurs d'erreur (ce que tu as fait.

L'explication, tu l'avais :
partir de la ligne 1 (C1 restant vide ou avec une zone de texte si tu veux y mettre un titre)
La formule Min() renvoie 0 quand la liste est épuisée
Et Index(Plage;0)&"" renvoie ""
Cette formule est courte et na pas besoin de conditionnel.

Avec ton -2 parce que tu ne pars pas de la ligne 1, le Min() renvoie 0-2 et... la ligne n° -2 n'existe pas d'où le résultat #VALEUR!
 

nonsolum

XLDnaute Nouveau
Re : doublons et validation par liste

Bonjour Monique,
Et merci pour ta patience.

1) OK J'ai compris que c'était un test pour me tester :eek:
Mais je n'ai pas trouvé la solution pour modifier la deuxième formule matricielle au conditionnelle avec quelque chose comme:

SI (ESTERREUR(L1);"")
(suis un peu perdu dans les imbrications de SI)

J'ai donc utilisé le format conditionnel afin de masquer l’affichage de l'erreur (#VALEUR !) en ListReste2.
Cela n'élimine pas l’erreur mais ça fait plus propre.

2) Plus sérieux

Lorsqu’on transforme les plages de données statiques ChoixFait (en E) et ChoixFait2 (en G) en « liste » par l’opération :

Données/Liste/Créer une liste

une erreur est générée dans les cellules validées :
« erreur de validation des données »
Cette erreur n’est pas bloquante et l’affichage des données dans les cellules se fait correctement.
Toutefois cela fait désordre et peut être handicapant pour l’utilisateur.
Certes on peut régler radicalement le problème en n’affichant pas la signalisation de l’erreur en arrière plan par le paramétrage du logiciel :

Outils/options/vérification des erreurs
Décocher « Activer la vérification des erreurs d’arrière plan »

Mais ceci impacte tout l’environnement d’ Excel et ne règle pas le problème sur le fond.
Aussi je souhaiterais trouver une solution plus élégante.

Encore une fois : merci, Monique, pour ta collaboration.

Cordialement

Ci-joint fichier expicatif
 

Pièces jointes

  • ListeWonderNonsolum3.xls
    48.5 KB · Affichages: 73

Monique

Nous a quitté
Repose en paix
Re : doublons et validation par liste

Bonjour,

Pourquoi prendre la formule la plus embêtante ?
Si tu ne veux pas laisser vide la ligne 1, tu mets ton titre de colonne dans une zone de texte en C1 au lieu de le saisir en C2
(j'ai mis une zone de texte en G1, ça ressemble étrangement au titre saisi en C2)

La formule mise au conditionnel :
=SI(MIN(SI(NB.SI(ChoixFait2;alias)=0;SI(NB.SI(L$1:L1;alias)=0;LIGNE(alias))))=0;"";INDEX(alias;MIN(SI(NB.SI(ChoixFait2;alias)=0;SI(NB.SI(L$1:L1;alias)=0;LIGNE(alias))))-2))

C'est le 0-2 qui provoque l'erreur
Pour la condition, le critère est Min(etc)=0
Si(Min(etc)=0;"";LaFormule)

Lorsqu'on transforme la plage fixe en liste par l'opération
Données/Liste/Créer une liste
les cellules validées affichent une erreur:
erreur de validation des données
Tu as trouvé ça où ? Connais pas
Créer une liste personnalisée, oui (dans Outil - Options - List Pers)
Pour créer la liste qui servira à la liste de validation, c'est comme tu as fait (Insertion - Nom - Définir)

Pour ne pas afficher cette erreur on peut paramétrer le logiciel par:
Outils/options/vérification des erreurs
Décocher
"Activer la vérification des erreurs d'arrière plan"
Tu trouves ça gênant ? Moi pas, au contraire
 

Pièces jointes

  • ListeWonderNonsolum4.zip
    10 KB · Affichages: 85

nonsolum

XLDnaute Nouveau
Re : doublons et validation par liste

Bonjour,

Et merci pour ta contribution, Monique.
J’ai pris bonne note des suggestions de ta dernière missive.
Je pense effectivement qu’il faut aller au plus simple.
J’utiliserais donc la première mouture de la formule matricielle en Références !K
que j’ai déjà appliquée avec succès dans mon fichier excel.
J’ai donc la réponse à ma question initiale (Comment interdire les doublons dans une liste de validation ?)


Merci, Monique, pour tout.

Ci-joint fichier pour ton information.

Cordialement
 

Pièces jointes

  • excel2003.zip
    38.3 KB · Affichages: 65
  • À propos des listes.zip
    11 KB · Affichages: 57
  • excel2003.zip
    38.3 KB · Affichages: 72
  • excel2003.zip
    38.3 KB · Affichages: 70
Dernière édition:

Discussions similaires

Réponses
18
Affichages
799

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 611
Messages
2 090 226
Membres
104 453
dernier inscrit
benjiii88