Bonjour,

Voila j'ai piqué un peu partout des éléments afin de créer ce que je désirais, mais visiblement j'ai quelques difficultés, votre aide est la bienvenu. Mon problème est celui-ci :

Dans la plage G1:R1 j'ai des dates (ces dates sont liées à d'autres onglets). Elles vont de Janvier à Décembre de l'année en cours ! Parmi les colonnes allant de G1 à R1 je veux affichés que 2 colonnes. Exemple si je suis en septembre je veux afficher juillet et aout soit range M1 et range N1.

Donc première étape boucle for dans cette plage et si je rencontre le mois système -1 et mois système -2 je les affiches, le reste je cache.

Seconde étape et la je suis encore un peu plus perdu. Sur les 2 colonnes affichées je veux mettre en place une « mise en forme conditionnelle ». C’est-à-dire si je continu sur l’exemple précédent :
Si la valeur en M2 supérieur à D2 la cellule devient rouge ;
Si la valeur en M3 supérieur à D3 idem ;
.... M4 et ainsi jusque M23 ;

Et idem pour N.

Actuellement j’ai écrit tout ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub Macro6()
 
 
    Dim MoisReel As Variant 'je déclare le mois système -1
    Dim MoisInf As Variant  'je déclare le mois système -2
    Dim madate As Variant   'je déclare la date des cellules G1 à R1
    Dim ColCache As Integer 'je déclare les colonnes à cacher
    Dim Plage As Range
    Dim Cell As Range
 
    Set Plage = Range("G1:R1")
   ' Plage.NumberFormat = "@"  'j'ai vu sa ailleurs, mais j'avoue ne pas trop avoir compris le but ... dsl
    MoisReel = Month(Date) - 1 'valeur prise, je ne veux que le mois
    MoisInf = Month(Date) - 2
    MsgBox (MoisReel) 'hihi j'ai vérifié sa marche, j'ai bien (je suis en octobre) 09 ou septembre
    MsgBox (MoisInf)  'hihi j'ai vérifié sa marche, j'ai bien (je suis en octobre) 08 ou juillet
 
    For Each Cell In Plage   'dans la plage, je regarde chaque cellule
    madate = Cell.Value
 
         If Mid(madate, 2, 2) <> MoisReel Or MoisInf Then   'je veux qu'il ne fasse le test que sur le mois (mid... est la pour uniquement prendre le mois)
            ColCache = ActiveCell.Column    'ici je cache tout ce qui nest pas égal au mois système -1 et -2
            Columns(ColCache).Select
            Selection.EntireColumn.Hidden = True
         Else
            For i = 4 To 23 Step 1        'maintenant sur les 2 colonnes que je désire visualiser, je veux mettre le format
                Range("").Select          'mais j'ai du mal a faire le boucle sur les colonnes que je désire
                Selection.FormatConditions.Delete
                Selection.Formatcontitions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=$" & i
                Selection.FormatConditions(1).Interior.ColorIndex = 3
            Next
         End If
 
    Next
 
    Set Plage = Nothing
 
End Sub

je suis dispo pour tout renseignement, n'hésitez pas à me donner des idées, suis un peu novice en vba!

Merci par avance