Comment créer une boucle de mise en forme des cellules

Résolu/Fermé
lechtigars59 - 12 déc. 2012 à 19:35
 lechtigars59 - 16 déc. 2012 à 23:07
Bonjour,
Je me prends pas tête depuis des jours sur une macro que j'aimerais savoir faire. En faite, j'ai une liste de produit et j'aimerais mettre en couleur la valeur la moins chère.

Dans mon tableau j'aimerais faire la boucle suivante :
si a3=13 alors a3=couleur vert, si b3=i3 alors b3=couleur violet, si c3=i3 alors c3=couleur orange...et ceci pour les 150 lignes suivantes

....comment faire? je m'y perds moi avec les for..next


6 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
12 déc. 2012 à 21:29
Bonsoir lechtigars59,

tu dit: si a3=13 alors a3=couleur vert, si b3=i3 alors b3=couleur violet, si c3=i3 alors c3=couleur orange...et ceci pour les 150 lignes suivantes
Q1 : pour la cellule "A3" = i3 ou 13 ?
Q2 : comment vas-t-on trouver 150 couleurs différentes sur Excel ?
Q3 : Version d'Excel ?
0
lechtigars59
12 déc. 2012 à 22:13
oups j'ai fait une erreur je rectifie :
si a3=i3 alors a3=couleur vert, si b3=i3 alors b3=couleur violet, si c3=i3 alors c3=couleur orange..
pour la ligne suivante je veux la même chose.si a4=i4 alors a4=couleur vert, si b4=i4 alors b4=couleur violet, si c4=i4 alors c4=couleur orange...
et ceci pour les 150 lignes suivantes
Donc je n'ai que 3 couleurs différentes au choix selon la valeur de ma cellule.
La version d'excel...2007
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
12 déc. 2012 à 22:54
En macro VBA ça te va ?
0
lechtigars59
12 déc. 2012 à 22:57
oui, c'est justement ce que je voulais, merci
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
12 déc. 2012 à 23:03
Voilà ce que tu veux lechtigars59,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Ligne As Integer, Colonne As Integer
    Dim i As Long, j As Long
    Dim LigneMin As Integer, LigneMax As Integer
    '
    LigneMin = 1: LigneMax = 150
    '
    For i = LigneMin To LigneMax
        If (Cells(i, 1).Value = Cells(i, 9).Value) Then
            Range(Cells(i, 1), Cells(i, 1)).Font.ColorIndex = 4 ' vert
        End If
        If (Cells(i + 1, 1).Value = Cells(i, 9).Value) Then
            Range(Cells(i + 1, 1), Cells(i, 1)).Font.ColorIndex = 39 ' violet
        End If
        If (Cells(i + 2, 1).Value = Cells(i, 9).Value) Then
            Range(Cells(i + 2, 1), Cells(i, 1)).Font.ColorIndex = 46 ' orange
        End If
    Next i
End Sub

A placer dans le code de la feuille, dans la procedure dont le nom figure ci-dessus.
0
lechtigars59
12 déc. 2012 à 23:20
génial ça marche nickel ! merci beaucoup ! la prochaine fois je viendrais directement ici avant de me prendre la tête pendant de longues heures
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
12 déc. 2012 à 23:23
Peux-tu mettre en résolu, merci et bonne continuation, Heliotte
0
lechtigars59
13 déc. 2012 à 08:48
d'accord..problème résolu ! lol comment on fait pour l'indiquer?
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
13 déc. 2012 à 10:03
Aucune idée, je n'ai pas encore posé de question .. mais ça viendra car il y a quelques spécialistes ici.
0
lechtigars59
16 déc. 2012 à 19:26
je rajoute un problème. Le code fonctionne très bien ! je l'ai même changé pour qu'il corresponde mieux à mon attente. Maintenant si je change la valeur d'une cellule, la mise en forme reste celle de la valeur précédente. Il oublie de prendre en compte le changement de valeur. En résumé, une cellule qui devient verte, restera verte alors qu'elle devrait redevenir blanche au changement de valeur. Qui a une idée dans le code de ce qui bloque ce changement?
0

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

Posez votre question
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
16 déc. 2012 à 21:59
1) Déjà, je ne comprend pas la première condition .. elle sera toujours fausse:
Colonne "A" contient un nom .. et colonne "I" contient des nombres,
c'est incompatible de comparer des pommes et des poires.

2) Dans la macro que tu avais acceptée, le problème est que l'on changeait de ligne et nom de colonne, alors c'est incorrect.

3) Ne dois-tu pas plutôt comparer les colonnes "D", "F" et "H" à la colonne "I" ?
0
lechtigars59
16 déc. 2012 à 22:04
si c'est exactement ça, je disais A et X pour reprendre l'exemple de la macro donné. Mais les colones exact à comparer sont bien les colones D-F-H avec I Désolé pour le quiproquo
0
lechtigars59
16 déc. 2012 à 22:13
mais là j'ai réussi. Alors je ne sais pas si c'est une bonne solution mais j'ai pris la macro et je l'ai copié en changeant les signes et en lui demandant de reprendre sa couleur de départ et là ça marche. Le code est plus grand mais pour le moment ça marche :)
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
16 déc. 2012 à 22:30
Dépose le code sur "www.cjoint.com" et j'y regarderai .. si tu veux, bien sûr.
0
lechtigars59
16 déc. 2012 à 22:32
voilà le code tel que je l'ai mis sur mon classeur
http://cjoint.com/?3LqwGxv7BcK
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
16 déc. 2012 à 22:57
Salut lechtigars59,

Donc, tu travailles avec 2 procédures "achat" et "prix" qui ne fonctionne que quand on les appelles, c'est ça ?
Si oui, quand tu changeras une valeur dans ta feuille, les cellules ne seront pas mises à jour de façon automatique !

Bonne soirée.
0
lechtigars59
16 déc. 2012 à 23:01
non effectivement, c'est pourquoi j'ai fait une macro inverse pour retomber sur un format de départ quand j'appelle la macro et que des valeurs change. Là j'essaie de faire pareil pour la première macro pour qu'il fasse : si valeur cellule (D;3) différent de valeur ( I;3) alors couleur blanc
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
16 déc. 2012 à 23:05
Le problème c'est qu'on arrive pas à se mettre au même diapason.
J'essaie de trouver un code qui fonctionne et tu changes tout, tu me donne des codes qui n'ont plus rien à voir.

Comme cela, on peut passer des mois et ça sans avancer d'un poil.

Soit je ne pige pas (c'est possible) soit on ne se comprend pas !

Je cède ma place ...
0
lechtigars59
16 déc. 2012 à 23:07
ce n'est pas grave, tu m'as énormément aidé en me trouvant le code de départ. Maintenant je bidouille dessus mais j'ai ce qu'il me faut :) encore un grand merci à toi
0