Format condtionnel VBA

Résolu
ptiramissu -  
 ptiramissu -
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 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
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 9042 Statut Contributeur 1 191
 
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 912 Statut Contributeur 245
 
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
ptiramissu
 
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 912 Statut Contributeur 245
 
re:
regarde le post 3, ma reponses
et au lieu de mettre A65536").end(xlup) tu mets A2").end(xldown)
0
ptiramissu
 
Génial, ça marche !
Je vois que j'ai encore bcp de progrès à faire ...
merci à tous
0