VBA - tous différents

Excel-lent

XLDnaute Barbatruc
Bonjour à tous,

En VBA, je souhaite faire une action si Nb1, Nb2 et Nb3 sont différents!

Voici le code que j'utilise actuellement :

Code:
If Nb1 <> Nb2 And Nb1 <> Nb3 And Nb2 <> Nb3 Then ...

Cela fonctionne très bien, mais si j'ai 40 nombres, je serais coincé car le nombre de "and" est limité!

J'ai cherché, essayé plusieurs codes mais je n'ai pas trouvé

Quelqu'un à une idée plus simple et qui fonctionne?

Merci d'avance pour vos réponses.
 

Excel-lent

XLDnaute Barbatruc
Re : VBA - tous différents

Bonjour Bhbh,

Merci de te pencher sur ma question.

J'ai trouvé une piste, mais ne sachant pas bien maitriser la fonction nb.si() en VBA, je suis coincé.

Voici ci-joint un exemple qui illustre une piste possible.

Merci d'avance
 

Pièces jointes

  • Question.xls
    16.5 KB · Affichages: 102
  • Question.xls
    16.5 KB · Affichages: 104
  • Question.xls
    16.5 KB · Affichages: 104

Excel-lent

XLDnaute Barbatruc
Re : VBA - tous différents

Bonsoir,

Voici en gros un code qui me conviendrait :

If COUNTIF(nb1 nb2 nb3,nb1)+COUNTIF(nb1 nb2 nb3,nb2)+COUNTIF(nb1 nb2 nb3,nb3).Value > 3 Then
....
Else: ...
EndIf

En sachant que nb1, nb2 et nb3 dans mon cas réél ne sont pas des noms de cellules comme dans l'exemple laissé mais des VARIABLES.

Espèrant être compréhensible.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : VBA - tous différents

Bonsoir à tous.
En l'absence d'un classeur permettant de comprendre concrètement comment se pose le problème, je suggère à Excel-lent de créer un tableau contenant toutes les valeurs à tester :
table = Array (nb1, nb2, nb3, ... ,nbn).
Si cela est possible, le code :
Code:
Option Explicit

Sub test()
Dim table, a, i As Long, j As Long, s As String, tf As Boolean
    table = Array(1, 5, "A", 4, 9, "a", 7, 3, 6, -1)
    tf = True
    For i = 0 To UBound(table)
        a = table(i)
        For j = i + 1 To UBound(table)
            tf = tf And (table(j) <> a)
        Next j
        If Not tf Then Exit For
    Next i
    If tf Then s = "Tous différents" Else s = "Doublons !"
    MsgBox s
End Sub
propose une solution.​
Pour le tester, modifiez les valeurs dans :
Code:
Array(1, 5, "A", 4, 9, "a", 7, 3, 6, -1)
en y mettant des valeurs de votre choix. Le message final vous dira si les valeurs sont uniques ou s'il existe des doublons.​
Si cela peut aider, tant mieux !​
Bonne soirée !
ROGER2327
 

ROGER2327

XLDnaute Barbatruc
Re : VBA - tous différents

Re !
Complément au message précédent : le code
Code:
Sub test2()
Dim table, a, i As Long, j As Long, s As String, tf As Boolean
    table = Array(1, 5, "A", 4, 9, "a", 7, 3, 6, -1)
    For i = 0 To UBound(table)
        a = table(i)
        For j = i + 1 To UBound(table)
            tf = tf Or (table(j) = a)
        Next j
        If tf Then Exit For 'Facultatif
    Next i
    If tf Then s = "Doublons !" Else s = "Tous différents"
    MsgBox s
End Sub
fait exactement la même chose.​
 

Discussions similaires

Réponses
18
Affichages
505

Statistiques des forums

Discussions
311 729
Messages
2 081 970
Membres
101 852
dernier inscrit
dthi16088