Probleme Fonction Unique

Bonjour à tous,

J'ai créé un fichier pour des prestataires qui n'ont pas la même version d'Excel que moi, j'utilise la fonction unique mais celle-ci n'existe donc ne fonctionne pas.

Je l'utilise seulement sur une plage de 7 lignes voici la formule d'origine " =UNIQUE(Q22:Q28) "

Merci d'avance pour votre aide

Bonjour @Zarro ,

Pour les anciennes versions d'Excel, peut-être une "vieille" formule matricielle en R22 à recopier vers le bas :

=SIERREUR(INDEX(Q:Q;PETITE.VALEUR(SI(SIERREUR(EQUIV($Q$22:$Q$28;$Q$22:$Q$28;0);0)=LIGNE($Q$22:$Q$28)-LIGNE($Q$22)+1;LIGNE($Q$22:$Q$28));LIGNES(Q$22:Q22)));"")

image

Si les fichiers contenant du VBA ne posent pas de problème, pour faire face à ce problème j'avais écrit une petite UDF dont je vous met le code ci-après.

Suivant le principe indiqué par MaFraise, cette fonction a besoin d'etre entrée en Formule Matricielle puisqu'elle renvoie une liste.

Actuellement vous devez également utiliser TRANSPOSE car par défaut la fonction renvoie les valeurs en ligne (et non colonne), mais cela je peux vous l'adapter facilement si vous souhaitez.

Exemple d'usage :

Liste

{=TRANSPOSE(uniq(L19:L27))}

1

1

4

4

7

7

1

#N/A

4

#N/A

7

#N/A

1

#N/A

4

#N/A

7

#N/A

L'UDF :

Function uniq(rng As Range) As Variant
  Dim list As Object
  Set list = CreateObject("System.Collections.ArrayList")

  For Each cell In rng.Cells
    If Not (list.contains(cell.Value2)) Then list.Add cell.Value2
  Next cell

  uniq = list.ToArray          ' a remplacer par uniq = Application.Transpose(list.ToArray) pour renvoyer le résultat en colonne directement
End Function

Bonjour,
Une autre piste matricielle à explorer.
Sur base du fichier de mafraise, que je salue.
Cdlt.

=IFNA(INDEX(Prénoms_;MATCH(0;COUNTIF(C$1:C1;Prénoms_);0));"")
=SI.NON.DISP(INDEX(Prénoms_;EQUIV(0;NB.SI(C$1:C1;Prénoms_);0));"")

merci beaucoup mafraise ta première formule a été la plus adequate.

Merci aussi aux autres pour votre réactivité

Rechercher des sujets similaires à "probleme fonction unique"