Signaler

VBA - Classification listes <= />= [Résolu]

Posez votre question CELudoF 2Messages postés mardi 10 janvier 2017Date d'inscription 10 janvier 2017 Dernière intervention - Dernière réponse le 10 janv. 2017 à 11:09 par CELudoF
Bonjour,

Depuis quelques jours maintenant je tente d'écrire une macro mais en vain.
Je dispose d'une liste ordonnée de 42 nombres que je souhaite comparer avec 3 autres listes ordonnées, de la même manière, afin de catégoriser la première.

Mes catégories représentent des limites de sorte :

Liste 1 : A=1, B=2, C=3
Liste 2 : A=2, B=3, C=4
Liste 3 : A= 3, B=4, C=5 ...

Je souhaiterais, par comparaison, que ma liste échantillon soit catégorisée en "Liste " si 1<A<3, 2<B<4 et 3<C<5.

Une fois la liste catégorisé il s'agirait de le mentionner par un boîte de dialogue ou sur une case et d'identifier la catégorie des nombres individuellement.

Voilà ce que j'ai tenté :
(mes listes sont écrites en ligne sur excel : ligne 4 pour la liste 1 jusqu'à la ligne 7 pour la liste 4. Mon échantillon est placé ligne 9 et la cellule (10,10) me sert à écrire le résultat global).

Sub Macro1()
Dim i As Integer

For i = 2 To 41


If Cells(9, i) > Cells(7, i) And Cells(9, i) > Cells(6, i) Then
Cells(9, i).Interior.ColorIndex = 3
Cells(10, 2).Interior.ColorIndex = 3
Cells(10, 2) = "Hors Catégorie"

ElseIf Cells(9, i).Value <= Cells(4, i).Value Then 'Liste 1
Cells(9, i).Interior.ColorIndex = 6
Cells(10, 2).Interior.ColorIndex = 6
Cells(10, 2) = "Liste1"

ElseIf Cells(4, i) < Cells(9, i).Value <= Cells(5, i).Value Then 'Liste2
Cells(9, i).Interior.ColorIndex = 44
Cells(10, 2).Interior.ColorIndex = 44
Cells(10, 2) = "Liste 2"

ElseIf Cells(5, i) < Cells(9, i) <= Cells(6, i) Then 'Liste 3
Cells(9, i).Interior.ColorIndex = 45
Cells(10, 2).Interior.ColorIndex = 45
Cells(10, 2) = "Liste3"

ElseIf Cells(6, i) < Cells(6, i) < Cells(9, i) <= Cells(7, i) Then 'Liste4
Cells(9, i).Interior.ColorIndex = 46
Cells(10, 2).Interior.ColorIndex = 46
Cells(10, 2) = "Liste4"

End If
Next
End Sub


Chaque élément est bien identifié individuellement selon sa liste (grâce à la mise en couleur de la cellule correspondant).
Mais le résultat globalement n'est déterminé que par le dernier élément de la liste et non l'ensemble. Je n'ai donc pas de résultat fiable.


En espérant avoir été assez clair.

Merci d'avance.
Afficher la suite 
Utile
+0
moins plus
J'ai trouvé une solution en ajoutant une étape de manière à savoir quelle est la liste de valeur la plus grande à laquelle mon échantillon correspond.

Merci
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !