VBA - vérification d'ordre de valeurs

Bonjour à tous !

Je cherche à comparer deux séries de données pour valider ou non une hypothèse.

Cela se placera dans le cadre d'une boucle qui vérifie la condition pour des valeurs de teta1, 2, 3, 4 qui varient à chaque fois.

J'ai 4 valeurs de teta : teta1, teta2, teta3, teta4, qui varient pour chaque itération de la boucle.

J'ai 4 valeurs de T fixes : T1, T2, T3, T4.

J'ai besoin de vérifier que l’ordre de grandeur des teta est identique à celui des T.

Exemple : Si T1 < T3 < T4 <T2, alors teta1 < teta3 < teta4 <teta2 => TRUE , sinon FALSE.

J'ai beau me creuser la tete je ne trouve pas de solution.

Merci d'avance !

Bonjour,

Tries le nom des teta dans l'ordre croissant ou décroissant de leurs valeurs, idem pour les T

Vérifies que l'ordre est le même.

Patrice,

Merci de ta réponse.

Le nombre d'itération de la boucle étant important, j'aurai voulu faire cette comparaison dans chaque boucle, sans passer par la feuille de calcul. Pense tu que ce soit possible ?

edit : par ailleurs, je ne vois pas comment "vérifier que l'ordre est le même"; pour cela, il faudrait que faire en sorte que excel associe T1 à teta1, T2 à teta2 etc ...

Bonjour,

une proposition à adapter à tes besoins

21testtheta.xlsm (18.62 Ko)

Bonjour,

Je te propose 2 fonctions :

L'une pour trier chacune des 2 variables tableaux dans lesquelles tu as au préalable affecté tes TETA :

Private Function OrdreTableau(MonTableau)

Dim i As Integer, j As Integer, temp As Single, OrdreVal() 
ReDim OrdreVal(LBound(MonTableau) To UBound(MonTableau))

For i = LBound(MonTableau) To UBound(MonTableau) 
    OrdreVal(i) = i
Next i           
For i = LBound(MonTableau) To UBound(MonTableau) - 1
    For j = i To UBound(MonTableau)
        If MonTableau(i) > MonTableau(j) Then
            temp = MonTableau(j)
            MonTableau(j) = MonTableau(i)
            MonTableau(i) = temp
             temp = OrdreVal(j)
            OrdreVal(j) = OrdreVal(i)
            OrdreVal(i) = temp
        End If
     Next j
Next i

OrdreTableau = OrdreVal

End Function

L'autre pour comparer les 2 tableaux triés :

Private Function CompareTableaux(Tableau1, Tableau2) As Boolean

Dim i As Integer

CompareTableaux = True
For i = LBound(Tableau1) To UBound(Tableau1)
    If Tableau1(i) = Tableau2(i) Then CompareTableaux = False
Next i

End Function

Pas besoin de comparer Téta et T.

Tu as 4 valeurs que tu appelles Téta 1, Téta 2, Téta 3 et Téta 4. Tu tries leur index dans l'ordre de leurs valeurs, par exemple 2, 1, 4, 3

Idem pour T1, T2, T3, T4, si tu obtiens le même résultat c'est qu'il respectent le même ordre.

Merci H2So4 et Pedro, je transfère le code sur mon PC (pas les mêmes réseaux et j'essaie tout ça).

Patrice, ta proposition est séduisante, mais je vois pas concrètement comment faire à vrai dire. Je ne suis pas novice en vba, mais pas un crack non plus....

Merci H2So4 et Pedro, je transfère le code sur mon PC (pas les mêmes réseaux et j'essaie tout ça).

Patrice, ta proposition est séduisante, mais je vois pas concrètement comment faire à vrai dire. Je ne suis pas novice en vba, mais pas un crack non plus....

C'est exactement ce qu'a fait H2SO4

Merci à tous, c'est très efficace.

Je suis bluffé par la compacité du code.

Il me reste à l'adapter à ma situation, si je peine je reviens vers vous, mais un grand merci à tous, en particulier à H2SO4 !

Rechercher des sujets similaires à "vba verification ordre valeurs"