Format condtionnel VBA

Résolu/Fermé
ptiramissu - 19 oct. 2008 à 21:17
 ptiramissu - 20 oct. 2008 à 08:49
Bonjour,

j'ai préparé une macro qui retraite des fichiers xls que je reçois tous les jours : le nombre de lignes de ce fichier varie d'un jour sur l'autre. Or, je voudrais mettre en évidence par un format condtionnel le "max" d'une colonne. J'ai beau chercher, je ne trouve pas ce qui ne marche pas . Est-ce que quelqu'un pourrait m'aider ?

Range("A2", [A2].End(xlDown)).Select

plage_A = Range("A2", [A2].End(xlDown)).Address

Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=[A2]=MAX(plage_A)"

Selection.FormatConditions(1).Interior.ColorIndex = 3



merci d'avance
A voir également:

6 réponses

Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
19 oct. 2008 à 23:39
Bonjour,
Votre code sélectionne toute la colonne A depuis A2 .... étrange, ne correspond pas avec votre texte !
Pouvez-vous décrire exactement se que vous désirez obtenir ?
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
20 oct. 2008 à 06:51
Bonjour,

Dim Plage_A As Range
Set Plage_A = Range("A2:A" & Range("A65536").End(xlUp).Row)

Avec xlDown s'arrète à la première cellule vide.
Et je ne vois pas comment arriver au résultat demander avec FormatConditions, mais avec une boucle !!
Sub MaxDeColonne()
Dim Plage_A As Range
Dim Lig As Integer
Dim Buff
Dim AD As String
    Sheets("Feuil1").Select
    Set Plage_A = Range("A2:A" & Range("A65536").End(xlUp).Row)
    Plage_A.Interior.ColorIndex = xlNone
    For Lig = 2 To Range("A65536").End(xlUp).Row
        If Cells(Lig, 1) > Buff Then
            Buff = Cells(Lig, 1): AD = Cells(Lig, 1).Address
        End If
    Next Lig
    Range(AD).Interior.ColorIndex = 33
End Sub

A+
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
20 oct. 2008 à 07:42
Bonjour

le probleme avec les formats-condition, c'est que si tu utilises les adresses variables, il te faut te positionner au bon endroit dans ton cas en A2

Voici la macro
Sub Bouton1_QuandClic()
    Dim plage As Range ' declaration de la variable
    Range("A2").Select 'Positionnement sur 1ere ligne, bonne colonne
    Set plage = Range("A2:A" & Range("A65536").End(xlUp).Row) ' Reprise de la plage
    plage.FormatConditions.Delete ' Suppression des formats condition
    plage.FormatConditions.Add xlExpression, , "=A2=Max(" & plage.Address & ")" ' Mise en place de la formule
    plage.FormatConditions(1).Interior.ColorIndex = 3 ' Mise en place de la couleur de fonds
End Sub

0
Excusez-moi, mes explications ne devaient pas être claires :

tous les jours, je reçois un fichier xls ; dans la colonne A, le lundi le fichier que je reçois peut comporter 100 lignes de données, le mardi 125, le mercredi 98, etc....

Je voudrais que ma macro sélectionne le contenu de la plage comprise entre A2 (dans la cellule A1, il y a le titre de la colonne) et xlDown (la dernière celllule de la plage "du jour" : le lundi "A2:A101", le mardi : "A2:A126", le mercredi : "A2:A99"), puis opère un format conditionnel pour mettre en évidence le "MAX du jour".

En pratique, mes tests sont un peu plus compliqués, mais je bute uniquement pour que le "formatcondition" s'applique sur une plage qui varie d'un jour sur l'autre (je ne voudrais pas qu'il s'applique sur l'ensemble de la colonne car ma macro ajoute à la fin de mon tableau d'autres données statistiques : la moyenne, le min, l'écart type ....

Merci encore
0

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

Posez votre question
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
20 oct. 2008 à 07:58
re:
regarde le post 3, ma reponses
et au lieu de mettre A65536").end(xlup) tu mets A2").end(xldown)
0
Génial, ça marche !
Je vois que j'ai encore bcp de progrès à faire ...
merci à tous
0