VBA : Traiter données suivant des valeurs et "couple colonnes"

siscale

XLDnaute Nouveau
Bonjour,

Je me permets de solliciter votre aide pour construire une macro permettant de traiter des informations dans un tableau excel.

Je ne peux pas mettre en PJ un tableau avec données. Si c'est nécessaire je ferai une ébauche..

Objectif : Il s'agit d'appliquer un code couleur en fonction de 3 colonnes. D,F et Q.

D et F contiennent des valeurs (suite de chiffres/lettres).
Pour chaque valeur de D correspond plusieurs possibilité dans F.
Q contient des chiffres de 0 à infini.

Exemple colonnes D et F


04644 9023
04644 10523
04644 9023
581HL 30139

Dans l'opération à réaliser les deux colonnes D et F doivent être considérées comme un couple:

Tant que Q.value < 500

J'aimerai "highlight" lorsqu'un un couple D et F apparaît 2 fois consécutives (pas forcément une ligne après l'autre) en orange. et 3 fois consécutive en rouge.

Si on reprend l'exemple au dessus:

Tant que Q < 500

je voudrais highlight les lignes ou on a le couple :


04644 9023

Le couple est apparu deux fois dans le tableau donc ce serait en orange.


J'ai tenté des choses via VBA mais le raisonnement par couple me parait très difficile.

Je vous remercie pour votre aide,

Cordialement,
 

pierrejean

XLDnaute Barbatruc
Re : VBA : Traiter données suivant des valeurs et "couple colonnes"

Bonjour siscale

A tester:

Code:
Sub test()
Set dico = CreateObject("Scripting.dictionary")
For n = 3 To Range("D" & Rows.Count).End(xlUp).Row
  If Range("Q" & n) < 500 Then
     x = Range("D" & n) & Range("F" & n)
     dico(x) = dico(x) & n & ";"
   End If
Next
b = dico.items
For n = LBound(b) To UBound(b)
   x = Split(b(n), ";")
   If UBound(x) = 2 Then
     Cells(x(0), "D").Interior.ColorIndex = 40
     Cells(x(1), "D").Interior.ColorIndex = 40
     Cells(x(0), "F").Interior.ColorIndex = 40
     Cells(x(1), "F").Interior.ColorIndex = 40
   End If
   If UBound(x) = 3 Then
     Cells(x(0), "D").Interior.ColorIndex = 3
     Cells(x(1), "D").Interior.ColorIndex = 3
     Cells(x(2), "D").Interior.ColorIndex = 3
     Cells(x(0), "F").Interior.ColorIndex = 3
     Cells(x(1), "F").Interior.ColorIndex = 3
     Cells(x(2), "F").Interior.ColorIndex = 3
   End If
Next
End Sub
 

siscale

XLDnaute Nouveau
Re : VBA : Traiter données suivant des valeurs et "couple colonnes"

Bonjour PierreJean,

Merci pour ta réponse, ca marche bien !
J'ai également une deuxième action à réaliser sur mon fichier:

Cette fois suivant les valeurs de la colonne C qui comporte des dates.

J'aimerai "highlight" lorsqu'un un couple D et F apparaît 2 fois consécutives (pas forcément une ligne après l'autre) en orange sur une période d'un an ( Il faut qu'il y ai moins d'un an entre la première occurrence et la deuxième)
et 3 fois consécutive en rouge(moins d'un an entre la première occurrence et la troisième).

Merci pour ton aide,

Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345