Trier des données

A

Alain

Guest
j'ai un tableau de prix de différents transporteurs par catégorie de poids.
J'ai attribué a chaque transporteur une couleur.
Je voudrais que le prix le plus faible prenne la couleur attribuée au transporteur concerné.

je travaille avec office xp.

Merci pour votre aide.
 
A

andré

Guest
Salut Alain,

Si tu as un maximum de 3 transporteurs, tu peux le faire aisément par une mise en forme conditionnelle, au cas contraire il faut passer par une macro.

Mais la couleur doi-elle nécessairement être celle attribuée au transporteur le moins cher ?

Précise, et on te mettra sur la voie.

Ândré.
 
O

omicon

Guest
Bonjour Alain,

Tu trouveras en pièce jointe un petit exemple qui devrait t'aider à résoudre ton problème.

=====================================================
Private Sub Worksheet_Change(ByVal Target As Range)

Set TableauPrix = Range("B2:F10") 'Tableau des prix
ColonneTransporteurs = "A" 'Colonne des transporteurs

If Intersect(Target, TableauPrix) Is Nothing Then Exit Sub
For Each Col In TableauPrix.Columns
Minval = ""
For Each Cel In Intersect(Col, TableauPrix)
If Minval = "" And IsNumeric(Cel) And Cel <> "" Then Minval = Cel
If Cel <> "" And Cel < Minval Then Minval = Cel
Next Cel
For Each Cel In Intersect(Col, TableauPrix)
If IsNumeric(Cel) And Cel = Minval Then _
Cel.Interior.ColorIndex = _
Cel.EntireRow.Cells(1, ColonneTransporteurs).Interior.ColorIndex
Next Cel
Next Col

End Sub

=====================================================

Cordialement.

Omicron
 

Pièces jointes

  • ColorierMinima.zip
    8.8 KB · Affichages: 23
O

omicron

Guest
Re Bonjour Alain,

Petit correctif à mon précédent message. Il manquait une instruction pour réinitialiser toutes les couleurs à chaque réévaluation :

TableauPrix.Interior.ColorIndex = xlNone '<<<< instruction à rajouter

=====================================================

Private Sub Worksheet_Change(ByVal Target As Range)

Set TableauPrix = Range("B2:F10") 'Tableau des prix
ColonneTransporteurs = "A" 'Colonne des transporteurs

If Intersect(Target, TableauPrix) Is Nothing Then Exit Sub
TableauPrix.Interior.ColorIndex = xlNone '<<<< instruction à rajouter
For Each Col In TableauPrix.Columns
Minval = ""
For Each Cel In Intersect(Col, TableauPrix)
If Minval = "" And IsNumeric(Cel) And Cel <> "" Then Minval = Cel
If Cel <> "" And Cel < Minval Then Minval = Cel
Next Cel
For Each Cel In Intersect(Col, TableauPrix)
If IsNumeric(Cel) And Cel = Minval Then _
Cel.Interior.ColorIndex = _
Cel.EntireRow.Cells(1, ColonneTransporteurs).Interior.ColorIndex
Next Cel
Next Col

End Sub

=====================================================

Mes excuses pour cette omission.

Omicron
 

Discussions similaires

Réponses
8
Affichages
176

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87