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
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