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
Partager