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
 

Fichiers joints

Paf

XLDnaute Barbatruc
Bonjour,

pas été plus loin que la correction de la ligne:
VB:
For Each c In .Range("$I2$2:$NI$2")
en
VB:
 For Each c In .Range("$I$2:$NI$2")
A+
 

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+
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas