XL 2010 Problème de MACRO VBA

Younnssssss

XLDnaute Nouveau
Bonjour,

Cela fait 2 jours que je tente de faire fonctionner une macro VBA sans succés, je connais pas grand chose à la programmation.

Dans un planning je tente de masquer automatiquement les colonnes afin de lasser visible uniquement les dates dans l'intervalle souhaité. Je ne parviens pas à éxécuter cette macro sur ma fFeuil1.

Quelqu'un peut-il m'aider? Svp

Code en question:

Sub merging()
Dim i As Long

With Feuil1 'Feuil1


For i = .Cells(5, .Columns.Count).End(xlToLeft).Column To 2 Step -1
If .Cells(5, i) = .Cells(5, i - 1) Then
.Cells(5, i - 1) = ""
.Range(Cells(5, i), Cells(5, i - 1)).Merge
End If
Next i

End With
End Sub
…………………………………………………………………………………………………………………………………………………………………….
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$3" Or Target.Address = "$B$4" Then CacherMasquerColonnes
End Sub
...………………………………………………………………………………………………………………………..
Sub CacherMasquerColonnes()
Dim c As Range
Dim dateInf As Date 'Date inf?rieure
Dim dateSup As Date 'Date sup?rieure

'Si la macro l?ve une erreur (toujours possible) aller ? la fin pour r?tablir l'affichage ?cran
On Error GoTo FinMAsquage

'D?sactiver l'afichage ?cran (?vite le flashage)
Application.ScreenUpdating = False

'Travailler sur la Feuil1 (?ventuelement ? changer ult?rieurement)
With Sheets("Feuil1")

'Si une date est entr?e en B3 et B4
If IsDate(Range("B3")) And IsDate(Range("B4")) Then

'Conserver ses dates dans les variables (plus rapide)
dateInf = .Range("B3"): dateSup = .Range("B4")

'Boucler sur chaque cellule de la plage I2:NI2
For Each c In .Range("$I2$2:$NI$2")

'faut-il cacher la colonne?
c.EntireColumn.Hidden = c < dateInf And c > dateSup

Next c 'prochaine cellule

Else

'Si aucune date n'est entr?e en B3:B4 ou une seule -> afficher tout
.Range("$I$2:$NI$2").EntireColumn.Hidden = False

End If

End With

FinMAsquage:

'r?activer l'affichage ?cran
Application.ScreenUpdating = True
End Sub

Merci d'avance pour votre aide
 

Pièces jointes

  • Planning COMAI-LR.xlsm
    471.1 KB · Affichages: 4

Paf

XLDnaute Barbatruc
La date ne peut pas être à la fois supérieure à la date max et inférieure à la date min; c < dateInf And c > dateSup sera donc toujours faux.
essayer avec Or
VB:
c.EntireColumn.Hidden = c < dateInf Or c > dateSup

A+
 

Discussions similaires

Réponses
6
Affichages
202
Réponses
7
Affichages
292

Statistiques des forums

Discussions
311 729
Messages
2 081 966
Membres
101 852
dernier inscrit
dthi16088