Different pour tout i entre

Bonjour,

J'arrive pas à coder :

Pour tout i compris entre 1 et 10, je cherche à verifier si cells(i, 3) =/= cells(i,3 ), par exemple, je veux que cells(1,3) soit different de cells(5,3) mais aussi cells( 4,3) different de cells(6,3), etc

Je sais verifier uniquement si cells(1,3) est different à cells(1 +n, 3), mais pas pour toute les combinaison possible

Merci

Bonjour,

Tout d'abords, le signe de comparaison pour "différent" ce n'est pas "=/=" mais "<>"

tu dis :

je cherche à verifier si cells(i, 3) =/= cells(i,3 )

mais ça ne peut pas être différent puisque tu compares la même cellule !

Je pense qu'il te faut être plus précis dans ta demande.

Si tu veux savoir si une valeur est ou non présente dans une plage, tu as la fonction NB.SI(), COUNTIF() en Anglais :

nb si

Slt Nela,

Slt Theze

peut être qu'il faut aller dans ce sens, vérifier s'il n y a dans une plage que des valeurs uniques?

Sub Test()
Dim rng1 As Range

    Set rng1 = Range(Cells(1, 2), Cells(10, 2))

    If isUnique(rng1) Then
        MsgBox "La plage est  unique"
    Else
        MsgBox "La plage n'est   pas unique"
    End If

End Sub

Function isUnique(rg As Range) As Boolean

Dim dict As Scripting.Dictionary
Dim sngCell As Range

    Set dict = New Dictionary

    For Each sngCell In rg
        If Not dict.Exists(sngCell.Value) Then
            dict.Add sngCell.Value, sngCell.Value
        End If
    Next

    If rg.Cells.Count = dict.Count Then
        isUnique = True
    Else
        isUnique = False
    End If

End Function

@ ++

Salut m3ellem,

peut-tu m'expliquer l’écriture de ta fonction isUnique ?

Je ne comprend pas ce que tu fais dans cette fonction, peut tu me détailler ce que tu fais ? merci

c'est simple, il parcourt la plage de la première cellule jusqu'à la derniere, et à chaque fois il vérifie est ce que la valeur de la céllule active existe dans la liste des valeurs déjà stockées dans dict. Si elle n'existe pas il l'ajoute à dict et sinon il ne l'ajoute pas.

Une fois fini, il compare le nombre d'élements du dict avec le nombre de céllules de la plage.

Que tu peu simplifier de cette façon :

Function isUnique(rg As Range) As Boolean

    Dim dict As Object
    Dim sngCell As Range

    Set dict = CreateObject("Scripting.Dictionary")

    For Each sngCell In rg: dict(sngCell.Value) = "": Next

    isUnique = rg.Cells.Count = dict.Count

End Function
Rechercher des sujets similaires à "different tout entre"