VB condition couleur recherche v

Résolu/Fermé
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 - 23 juil. 2009 à 16:54
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 - 24 juil. 2009 à 10:35
Bonjour,
C'est un peu compliqué, il faut suivre... Alors je copie une feuille dans un classeur, et je souhaiterai mettre en couleur, les même cellules que la feuille précédentes. Il s'agit d'en cours mis à jour chaque semaine, si le responsable a mis du vert, (manuellement), c'est que ça va être livré, donc je veux qu'après avoir créer la nouvelle feuille à la même image que l'autre (ça c bon), il regarde si c'est en vert dans l'autre feuille.
La première colonne est un code affaire, me permettant de faire le lien, et ce sont les couleurs des cellules à côté qu'ils faut que je vérifies.
Je tri dans un premier temps le tableau de la feuille 2 en ordre croissante.
Puis, je recherches dans la fueille 2 la 6ème cellule de la ligne ayant le même code (cellule A) que la cellule de la feuille 1. Si celle-ci est verte (code couleur 4), alors il me colore la cellule de la feuille 1 en vert.
Voici ce que j'ai écris. j'avoue me débrouille, mais là je sais pas trop, et ça marche pas :
If ((Application.WorksheetFunction.VLookup(Sheets(1).Range("A6"), Sheets(2).Range("A5:F201"), 6).Interior.ColorIndex = 4)) Then Sheets(1).Range("F6:I6").Interior.ColorIndex = 4

Si vous avez une idée.

Merci !!!
A voir également:

12 réponses

bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
23 juil. 2009 à 16:54
:)
0
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
24 juil. 2009 à 08:49
Je pense que la fonction de recherche Verticale renvoi sûrement plus à la valeur de la cellule, alors que mois il s'agit du nom de la cellule qu'il me faut pour indiquer la couleur
Tableau 1 feuille 1
Colonne A Colonne B
023 MACRO à trouver pour mettre en vert
044
019
020
Tableau 2 feuille 2 (cellui ou je vais chercher la couleur - Tableau trié en ordre croissant)
Colonne A Colonne B
019
020
023 en fond VERT
029 en fond vert
Il faudrait que dans le colonne B du tableau 1 soit colorées les cellules correspondantes. Je ne vois rien d'autre qu'une recherche puisque seuls certains chiffres de la colonne A sont en commun, certains sont nouveaux et n'existe pas dans la feuille 2, d'autres n'y sont plus (existant dans la feuille2mais plus dans la 1).

Merci de votre aide
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 08:59
inspire toi de ce code pour comparer ta feuille 1 & 2

http://www.commentcamarche.net/forum/affich 13501092 vba excel 2k comparaison?#8

Au final, si je resume, tu as des valeur en feuille 1 qui peuvent correspondre avec celle de feuille 2, si ca correspond, il faut mettre le fond de la cellule en feuille 1 de la meme couleur que sa correspondance qui est en feuille 2 , c'est ca ?
0
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
24 juil. 2009 à 09:04
OUI, mais les cellules colorés sont en colonne B, et pas dans la colonne A où il y a les valeurs correpsondantes, mais c ça !!!!!!!
Je vais regarder le lien que tu m'as donné
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
24 juil. 2009 à 09:11
là j'avoue après avoir lu le lien 3 fois, que j'ai du mal à traduire...
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 09:26
ok ok..

Dans mon ex ci dessous : Feuil1 A1=> A6 = 1 à 6 ; Feuil2 A1=2 coloré vert, A2=4 coloré bleu, A3=5 coloré jaune

B = 1

Set Cherche = Worksheets("Feuil2").Cells(B, 1)
Do While Cherche <> ""
With Worksheets("Feuil1").Range("a1:a500")
Set trouvé1 = .Find(Cherche, LookIn:=xlValues)
If Not trouvé1 Is Nothing Then
Worksheets("Feuil1").Cells(trouvé1.Row, 1).Interior.ColorIndex = Cherche.Interior.ColorIndex
End If
End With
B = B + 1
Set Cherche = Worksheets("Feuil2").Cells(B, 1)

Loop


=> Feuil1 A2 coloré vert ; A4 coloré bleu ; 15 coloré jaune

Dis moi quel partie du code tu comprend pas....
0
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
24 juil. 2009 à 09:41
C'est super ce truc, j'avoue m'être assez bien débrouillée jusque là en ce qui concerne les formules ou calculs ou manip de fichiers, mais pour ce qui est mise en page, je suis nulle! j'ai pas encore pigé la logique. En ce qui concerne ton code (merveilleux que je viens de tester).
J'ai modifié Workssts(1).Celles(trouvé1.row,2).Interior.......
J'ai mis 2 pour que ça me colore la colonne 2, car la cellule à colorer est dans la deuxième colonne. Donc ça c'est bon.
J'suis épatée c'est génial !!!!!!

Par contre La couleur à retrouver est dans la colonne 2 de la feuille. C'est à dire, dans la feuille 2 j'ai A1 = 2 & B1 est coloré en vert A2=4 et B2 est coloré en bleu, A3 = 5 et B5 est coloré en jaune.
Je n'arrive pasà voir où je peux faire la modif. (merci d'avance)
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 09:46
B = 1

Set Cherche = Worksheets("Feuil2").Cells(B, 1)
Set CellCouleur=Worksheets("Feuil2").Cells(B, 2)
Do While Cherche <> ""
With Worksheets("Feuil1").Range("a1:a500")
Set trouvé1 = .Find(Cherche, LookIn:=xlValues)
If Not trouvé1 Is Nothing Then
Worksheets("Feuil1").Cells(trouvé1.Row, 1).Interior.ColorIndex = CellCouleur.Interior.ColorIndex
End If
End With
B = B + 1
Set CellCouleur=Worksheets("Feuil2").Cells(B, 2)
Set Cherche = Worksheets("Feuil2").Cells(B, 1)

Loop
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 09:52
tu dis : j'ai pas encore pigé la logique....

Sais tus que si tu te positionne dans vb au debut de la procedure...( click sur la ligne b=1 par ex) et que tu appui sur la touche F8.. tu lance la procedure en mode pas a pas.. appui encore sur F8 pour passer à l instruction suivante...ect... si tu pointe la sourie sur une de tes variables, il te donnera en menu contextuel sa valeur..

Sinon, ben demande, je t expliquerais en détail la ou les lignes que tu pige pas ;).. (cf mon dicton :p )
0
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
24 juil. 2009 à 09:57
Oui, du coup j'avais trouvé mais j'avais oublié de mettre à la fin. MERCI BEAUCOUP. j'ai un autre exercice du même genre à faire, je vais m'en inspirer.
J'essaie de comprendre .
Set (je ne connaissais pas) = te permet de donner un nom et ainsi pas à avoir à recopier
.Find (chercher, LookIn:=xlValues) = permet de rechercher les valeurs de la cellule nommée par "chercher"

Que veut dire le Row de trouve1.row ?
Est-ce que B=B+1 veut dire qu'après on passe à la ligne suivante?
Pourkoi à la fin remettre les info des Set ?
Loop veut dire koi? la fin de la boucle?

Merciiiii
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 10:12
Set (je ne connaissais pas) = te permet de donner un nom et ainsi pas à avoir à recopier

non, set sert à attriubuer un objet à ta variable et non une valeur...
en l occurence :
Set Cherche = Worksheets("Feuil2").Cells(B, 1) attribut l objet 'cellule(b,1) de la feuille "Feuil2"
alors que si tu n avait pas mis le set Cherche vaut la valeur de Feuil2!cells(b,1)

Pour ne pas avoir à recopier le nom.. c'est with XXX c'est ainsi qu'apres j'ais .find.. qui sous entend XXX.Find Le '.' revoit sur l'objet sélectionné avec "with"

.Find (Cherche, LookIn:=xlValues) = permet de rechercher les valeurs de la cellule nommée par "chercher"
pas exactement, permet de rechercher la valeur ( grace à xlValues, ce qui veut dire que meme si c'est une formule dans la case, il prendra le résultat de cette formule) de Cherche (et non Chercher comme tu l a ecrit)
... Cherche vaut : Worksheets("Feuil2").Cells(B, 1) cf ligne 2 : Set Cherche = Worksheets("Feuil2").Cells(B, 1)

Que veut dire le Row de trouve1.row ?
Row = ligne => trouvé1.rom te donne en quel ligne ce situ trouvé1 donc la valeur recherchée

Est-ce que B=B+1 veut dire qu'après on passe à la ligne suivante?
exactement mais c'est pas b qui passe à la ligne suivante, c'est le fait que j'utilise cette variable dans Cells(B, 1)

Pourkoi à la fin remettre les info des Set ?
Pour mettre à jour sur quelle ligne il doit faire la prochaine recherche

Loop veut dire koi? la fin de la boucle?
oui.. enfin, plus exactement 'revient au debut de la boucle'.. donc il repart sur Do While Cherche <> "" et donc test Cherche si <> "" d'où l utilité de mettre à jour le Set pour mettre dans Cherche l'objet de la prochaine recherche.

Voila, j espere que j'ai été assez claire, ben sinon.. continu à demander ;)
0
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
24 juil. 2009 à 10:35
c'est parfait, merci beuacoup !
0