Bonjour,
moi j'aime bien les formules en plus du VBA ! Tout dépend de la situation.
Ici pour cette formule j'utilise comme l'avait indiqué BeGood le NBVAL(Plage) qui permet de tester le nombre de valeur contenue dans la Plage, donc je regarde dans la plage A_ligne:C_ligne si ce nombre de valeur est supérieur à 0, donc s'il y a une date et/ou un nom et /ou un prénom alors la formule affiche le résultat de la fonction SI, sinon cela affiche rien c'est à dire un double guillemet. D'ailleurs on pourrait faire un test à =3 puisque le numéro de dossier dépend des trois valeur !
Ensuite il y a la fonction SI qui permet de faire une action ou une autre en fonction du résultat d'un test logique.
Ce test je le fait avec NB.SI.ENS(plage1; critère plage1; Plage2 ; Critère Plage 2; etc)
Donc en fait le regarde si dans une des lignes "au dessus" de la ligne où se trouve la formule, on peut retrouver l'ensemble des trois critères date nom et prénom.
Je fixe donc la ligne de départ à 2 avec le $, mais pour la "fin" de plage je ne met pas de $ comme cela en tirant la formule vers le bas, la ligne basse de la plage évoluera de la même manière, la première formule est en ligne 3, on regarde donc la plage de cellule du dessus allant de la ligne 2 "fixe" à la ligne 2 "variable", comme cela la formule copiée en ligne 4 la plage de cellule ira de la ligne 2 "fixe" à la ligne 3 (maintenant). Les critères étant respectivement la date, le nom et le prénom se trouvant sur la même ligne que la formule.
Si ce test d'égalité sur les valeurs des trois colonnes est supérieur à 0 c'est que le contrat existe déjà, donc si test logique = VRAI on fait ceci sinon on fait cela, ce qui donne on affiche "Oui", sinon on affiche "Non".
On retrouve bien : =SI(NBVAL(A3:C3)>0;SI(NB.SI.ENS(A$2:A2;A3;B$2:B2;B3;C$2:C2;C3)>0;"Non";"Oui");"")
@ bientôt
LouReeD