Masquage conditionnel de colonne

iop81 -  
 iop81 -
Bonjour,

J'ai un petit soucis avec une macro excel qui devrait pas être difficile mais j'avoue être débutante en VBA.
J'ai un planning sur 2 ans (1 colonne=1jour).
Je souhaiterai créer une macro qui permette de n'afficher que les 6 prochains mois et une autre qui affiche les 2 ans pour pouvoir satisfaire les besoins de tous mes collègues.

En fait j'ai créé un champ référence "date du jour".
J'ai créé un champ qui évalue si les dates de mon planning sont comprises dans la fourchette (1 mois avant et 6 mois après la date du jour), si oui, cela renvoi 1, sinon 0.
Ensuite j'ai créé une macro qui va lire ces valeurs et le but est que si la valeur est à 0 la colonne soit masquée sinon elle apparaît. Voici ma macro rebelle ...:

Dim col As Range
Dim nb As Integer

nb = CInt(Worksheets![Feuil2].Range("G5:AWG5").Value)
col = Range("G5:AWG5")

For Each cell In Range(col)
If nb = 0 Then
Worksheets![Feuil2].Cells(5, col).EntireColumn.Hidden = True
Else: Worksheets![Feuil2].Cells(5, col).EntireColumn.Hidden = False
Next cell
End Sub

Merci de votre aide

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    et ainsi ?

    If cell = 0 Then
    0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Un exemple de code.

    Sub test()
    Dim col As Range
    Dim cell As Range

    Application.ScreenUpdating = False
    With Worksheets![Feuil2]
    Set col = .Range("G5:AWG5")

    For Each cell In col
    If cell = 0 Then
    .Cells(5, cell.Column).EntireColumn.Hidden = True
    Else
    .Cells(5, cell.Column).EntireColumn.Hidden = False
    End If
    Next cell
    End With
    Application.ScreenUpdating = True

    End Sub

    Bonne suite
    0
    1. iop81
       
      Merci de votre aide et de votre réactivité, j'ai finalement trouvé la solution...
      0