VBA : Traiter données suivant des valeurs et couple colonne

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 C.

D et F contiennent des valeurs (suite de chiffres/lettres).

Pour chaque valeur de C correspond plusieurs possibilité dans F.

C contient des dates.

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:

J'aimerai "highlight" lorsqu'un un couple D et F apparaît 2 fois consécutives sur une période de 12 mois (pas forcément une ligne après l'autre) en orange. c'est à dire, il faut qu'il y ait moins d'1 an entre la première et la deuxième apparition du couple.

-highlight" lorsqu'un un couple D et F apparaît 3 fois consécutives sur une période de 12 mois (pas forcément une ligne après l'autre) en rouge. c'est à dire, il faut qu'il y ait moins d'1 an entre la première et la troisième apparition du couple.

Si on reprend l'exemple au dessus:

je voudrais highlight les lignes ou on a le couple si leurs dates respectives dans C sont comprises dans un intervalle < 1 an :

04644 9023

donc là ce couple devrait être highlight 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,

Bonjour et bienvenue sur le forum

Sans fichier, ce sera difficile.

Et puis, que veut dire "highlight " ?

Bye !

Salut et merci.

Highlight signifie surligner ou mettre en évidence.

J'ai mis un exemple rapide en PJ. Le vrai tableau contient environ 5000 lignes.

Donc ici le couple 940-0351 TPA06440 (respectivement dans D&F) apparaît 3 fois en moins d'un an. J'aimerai le colorer en rouge.

J'aimerai lorsqu'un un couple D et F apparaît 2 fois consécutives sur une période de 12 mois (pas forcément une ligne après l'autre) le colorer en orange. c'est à dire, il faut qu'il y ait moins d'1 an entre la première et la deuxième apparition du couple.

-lorsqu'un un couple D et F apparaît 3 fois consécutives sur une période de 12 mois (pas forcément une ligne après l'autre) le colorer en rouge. c'est à dire, il faut qu'il y ait moins d'1 an entre la première et la troisième apparition du couple.

Est ce plus clair?

Merci pour ton aide,

Cdlt

15exemple.xlsx (9.98 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

24exemple-v1.xlsm (29.59 Ko)

Salut,

merci pour ta réponse, ca à l'air pas mal ! je vais tester ton code.

Merci,

A+

Salut Gmb et merci pour ton aide.

J'ai testé ton code sur un fichier taille réel ( + 4000 lignes).

La macro identifie bien les apparitions consécutives de couples pour une période < 12 mois et les met en évidence avec la bonne couleur.

J'utilise ton code en enlevant l'écriture dans la colonne K car mon tableau a des colonnes contenant des valeurs jusqu'à la colonne V.

Cependant j'ai un problème.

En effet lorsque j'applique la macro, celle-ci échange des numéros de lignes.

Par exemple un couple D&F qui apparaissent consécutivement lignes 156 et 157, après la macro se retrouvent lignes 14&19.

De plus, les valeurs dans les colonnes à partir de la colonne L sont fausses et ne correspondent plus au couple.

Je pense que la macro intervertit des lignes.

Y'a t il moyen de palier à ce problème ? Peut être sais tu déjà ou est le pb.

Si tu ne vois pas, je m'arrange pour bricoler un fichier qui met en évidence le problème.

Merci pour ton aide,

A+

Bonjour

Sisco a écrit :

Si tu ne vois pas, je m'arrange pour bricoler un fichier qui met en évidence le problème.

Non, désolé, je ne vois pas.

Ce qui me serait utile serait de travailler avec ton vrai fichier...

Et s'il est trop gros, passe par http://www.cjoint.com

Bye !

je vais essayer d' envoyer un fichier sans données impotantes.

Question : à quoi sert la ligne suivante :

Range("B11:J" & derLn).Sort key1:=Range("C11"), order1:=xlAscending, Header:=xlNo

Je crois que c'est cette ligne qui me change mon fichier.

Cdlt,

Sisco a écrit :

Question : à quoi sert la ligne suivante :

Range("B11:J" & derLn).Sort key1:=Range("C11"), order1:=xlAscending, Header:=xlNo

Réponse :

A classer la plage ''Range("B11:J" & derLn)." selon l'ordre ascendant de la colonne "C" en considérant que cette plage ainsi définie n'inclut pas de titres.

Bye !

Rechercher des sujets similaires à "vba traiter donnees suivant valeurs couple colonne"