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
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. ptiramissu
     
    Génial, ça marche !
    Je vois que j'ai encore bcp de progrès à faire ...
    merci à tous
    0