Format condtionnel VBA

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