XL 2013 Pas de calcul avec hide

nicroq

XLDnaute Occasionnel
Bonjour a tous,

Voici ma problématique, je souahiterai via le bouton "pas de calcul" cacher le nombre de colonne correspondantes au pas de calcul. Par exemple dans le fichier joint, si l'on choisit un pas de calcul =3 il faudrait cacher les cellules tous les 3 jours et ainsi apparaitrait uniquement les colonnes 05/06/2019 09/06/2019 13/06/2019 etc...

la deuxième chose serait verifier si un jalon est present dans ce pas de calcul et ainsi ne pas cacher cette colonne dans l'exemple ci joint si un jalon se trouve dans le pas de calcul il faudrait ne pas le cacher. Par exemple avec un pas de calcul de 3jours, on aurait les colonnes 05/06/2019 08/06/2019 09/06/2019 11/06/2019 13/06/2019 etc...

Merci pour votre aide vraiment.

Cordialement
 

Pièces jointes

  • test pas de calcul date.xlsm
    20.1 KB · Affichages: 9
Solution
Bonjour nicroq, mapomme, JHA,

Une solution VBA qui utilise une formule Excel :
VB:
Private Sub CommandButton1_Click()
Dim n%
n = Int(Val(TextBox1))
If n < 2 Then Exit Sub
Application.ScreenUpdating = False
With [D5].CurrentRegion 'à adapter
    .Rows(1).Insert xlDown 'ligne auxiliaire
    .Rows(0) = "=LN((MOD(COLUMN()-4," & n & ")=0)+COUNTIF(R[1]C:R65536C,""Jalon*""))"
    .Rows(0).EntireColumn.Hidden = True
    On Error Resume Next 'si aucune SpecialCell
    .Rows(0).SpecialCells(xlCellTypeFormulas, 1).EntireColumn.Hidden = False
    .Rows(0).Delete xlUp
End With
Unload Me
End Sub
A+

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour nicroq,
si l'on choisit un pas de calcul =3 il faudrait cacher les cellules tous les 3 jours et ainsi apparaitrait uniquement les colonnes 05/06/2019 09/06/2019 13/06/2019 etc...
Si les colonnes visibles sont celles que vous citez, alors le pas est de 4.
Une colonne visible, 3 colonnes masquées puis on recommence -> Le motif qui se répète est d'une taille de 4 colonnes.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
Bonjour @JHA :)

Voici une version VBA.

le code est dans module1 :
VB:
Private Sub CommandButton1_Click()
Dim LePas&, derlig&, dercol&, i&, j&, afficher As Boolean

   Application.ScreenUpdating = False
   LePas = Val(TextBox1)
   If LePas <= 0 Then MsgBox "Pas Incorrect": Exit Sub
   With Sheets("Feuil1")
      .Columns.Hidden = False
      If .FilterMode Then .ShowAllData
      derlig = .Cells(.Rows.Count, "a").End(xlUp).Row
      dercol = .Cells(5, .Columns.Count).End(xlToLeft).Column
      For j = 4 To dercol
         afficher = ((j - 4) Mod LePas) = 0
         For i = 6 To derlig
            If .Cells(i, j).MergeCells Then afficher = True: Exit For
         Next i
         .Cells(1, j).EntireColumn.Hidden = Not afficher
      Next j
      Unload UserForm1
   End With
End Sub
 

Pièces jointes

  • nicroq- pas de calcul date- v1.xlsm
    24.3 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour nicroq, mapomme, JHA,

Une solution VBA qui utilise une formule Excel :
VB:
Private Sub CommandButton1_Click()
Dim n%
n = Int(Val(TextBox1))
If n < 2 Then Exit Sub
Application.ScreenUpdating = False
With [D5].CurrentRegion 'à adapter
    .Rows(1).Insert xlDown 'ligne auxiliaire
    .Rows(0) = "=LN((MOD(COLUMN()-4," & n & ")=0)+COUNTIF(R[1]C:R65536C,""Jalon*""))"
    .Rows(0).EntireColumn.Hidden = True
    On Error Resume Next 'si aucune SpecialCell
    .Rows(0).SpecialCells(xlCellTypeFormulas, 1).EntireColumn.Hidden = False
    .Rows(0).Delete xlUp
End With
Unload Me
End Sub
A+
 

Pièces jointes

  • test pas de calcul date(1).xlsm
    24.4 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
311 732
Messages
2 081 995
Membres
101 857
dernier inscrit
mt60400