Microsoft 365 Fonction UNIQUE qui me met des doublons

D.D.

XLDnaute Impliqué
Bonjour à tous,

J'utilise une fonction UNIQUE mais cette dernière me crée quand même des doublons. J'avoue ne pas comprendre pourquoi. Est ce que quelqu'un aurait une idée ?

1679988139024.png
 

Pièces jointes

  • Classeur1.xlsx
    17.2 KB · Affichages: 27

D.D.

XLDnaute Impliqué
Bonjour à tous,

Je n'ai pas 365 mais avec nb.si.ens() à essayer.
Tu peux le faire aussi avec Power Query

JHA
Merci. Mais ces formules ne construisent pas des tableaux dynamiques, et c'est gênant car la liste d'origine peut s'allonger.
Quand à Power query... Il faut actualiser, et c'est gênant aussi.

et surtout, je ne comprends pas pourquoi la formule UNIQUE ne fonctionne pas.
 

D.D.

XLDnaute Impliqué
Ah, super. Merci pour cette réponse.
C'est amusant parce que les colonnes sont déjà le résultat d'un arrondi:
VB:
=SIERREUR(ARRONDI.SUP(MAX(SUBSTITUE(E2;" M";"")*1;SUBSTITUE(F2;" M";"")*1);1);"")

Merci en tous cas.
 

D.D.

XLDnaute Impliqué
Bonjour à tous

@D.D.

Je n'ai pas la fonction unique sur mon PC (normal excel2010) donc je ne peux faire que des hypothèses je ne pense pas qu'il s'agit de doublon mais de valeurs légèrement différentes essaye pour voir de mettre 3 ou 4 chiffres après la virgule pour le voir.;)

@Phil69970


Hello

Merci pour ta réponse. Hélas, même beaucoup beaucoup de chiifres après la virgule ne change rien, ils semblent identiques. Même via VBA / activecell / value, je vois bien la même valeur. C'est étrange
 

job75

XLDnaute Barbatruc
Bonjour D.D., JHA, Phil69970,

Je ne comprends pas comment avec PQ JHA obtient des décimales différentes de zéro puisque sur le tableau source les nombres n'en ont qu'une (affichez 30 décimales).

@D.D. le résultat est-il le même si on limite la plage =UNIQUE(E1:F24) ?

A+
 

Cousinhub

XLDnaute Barbatruc
Bonjour,
Pour apporter un peu d'eau au moulin (ou de décimales...)
Avec PQ, en transformant directement en Texte, on obtient les données de JHA
Si on les transforme en Currency (i-e en "Devises"), la suppression des doublons se fait bien.
Et en formules, avec celle-ci, on obtient bien les bonnes données :

VB:
=UNIQUE(ARRONDI(E1:F24;1))

Bonne fin d'apm
 

job75

XLDnaute Barbatruc
Fichier du post #1 j'ai appliqué la commande Supprimer les doublons sur les colonnes E:F.

J'obtiens les mêmes résultats que sur le tableau de droite.

Y aurait-il des décimales cachées après la 30ème ?

Bonsoir bhbh, que donne =UNIQUE(ARRONDI(E1:F24;30)) ?
 

Cousinhub

XLDnaute Barbatruc
Fichier du post #1 j'ai appliqué la commande Supprimer les doublons sur les colonnes E:F.

J'obtiens les mêmes résultats que sur le tableau de droite.

Y aurait-il des décimales cachées après la 30ème ?

Bonsoir bhbh, que donne =UNIQUE(ARRONDI(E1:F24;30)) ?
Hello,
J'ai essayé avec 2000... Le résultat est toujours bon...
C'est à n'y rien comprendre...
 

job75

XLDnaute Barbatruc
Bon j'ai compris.

1) Excel n'affiche et ne traite * qu'un maximum de 15 chiffres significatifs.

* Sauf avec UNIQUE où les autres chiffres sont pris en compte.

2) Au delà de 15 on peut utiliser VBA, voyez le fichier joint et cette macro :
VB:
Sub Decimales()
Dim c As Range, signe$
For Each c In [E1:F24]
    signe = IIf(c - c.Text >= 0, " + ", " - ")
    MsgBox "Cellule " & c.Address(0, 0) & " => " & c.Text & signe & Abs(c - c.Text)
Next
End Sub
Les différences se font à partir des 16èmes et dix-septièmes décimales.
 

Pièces jointes

  • Classeur1.xlsm
    18.4 KB · Affichages: 3
Dernière édition:

D.D.

XLDnaute Impliqué
Merci pour ces réponses.
C'est vraiment étrange car à l'origine les données proviennent d'un fichier texte auquel j'applique une formule de substitue et d'arrondi.sup.

VB:
Exemple de données dans les cellules M2 et M3
'0,780 M
'0,800 M

et la formule
=ARRONDI.SUP(SUBSTITUE(M2;" M";"")*1;1)

Et là, je vois que la formule génère des virgules invisibles.

Voir le fichier.
 

Pièces jointes

  • Classeur1.xlsm
    22.7 KB · Affichages: 7

job75

XLDnaute Barbatruc
Bonjour D.D., le forum,

Oui curieusement l'arrondi en N2 se fait mal, exécutez la macro :
VB:
Sub Decimales()
Dim c As Range, signe$
For Each c In [N2:N3]
    signe = IIf(c - c.Text >= 0, " + ", " - ")
    MsgBox "Cellule " & c.Address(0, 0) & " => " & c.Text & signe & Abs(c - c.Text)
Next
End Sub
A+
 

Discussions similaires

Réponses
16
Affichages
477

Statistiques des forums

Discussions
312 213
Messages
2 086 302
Membres
103 174
dernier inscrit
OBUTT