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

Résolu
lechtigars59 -  
 lechtigars59 -
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

  1. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    1. lechtigars59
       
      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
  2. Heliotte Messages postés 1561 Statut Membre 92
     
    En macro VBA ça te va ?
    0
  3. lechtigars59
     
    oui, c'est justement ce que je voulais, merci
    0
  4. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    1. lechtigars59
       
      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
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      Peux-tu mettre en résolu, merci et bonne continuation, Heliotte
      0
    3. lechtigars59
       
      d'accord..problème résolu ! lol comment on fait pour l'indiquer?
      0
    4. Heliotte Messages postés 1561 Statut Membre 92
       
      Aucune idée, je n'ai pas encore posé de question .. mais ça viendra car il y a quelques spécialistes ici.
      0
    5. lechtigars59
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    1. lechtigars59
       
      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
    2. lechtigars59
       
      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
    3. Heliotte Messages postés 1561 Statut Membre 92
       
      Dépose le code sur "www.cjoint.com" et j'y regarderai .. si tu veux, bien sûr.
      0
    4. lechtigars59
       
      voilà le code tel que je l'ai mis sur mon classeur
      http://cjoint.com/?3LqwGxv7BcK
      0
  7. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    1. lechtigars59
       
      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
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      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
    3. lechtigars59
       
      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