Bonsoir Le Forum,
Après avoir fureté sur le Forum pour trouver une solution, je suis arrivé à appliquer la macro suivante.
La solution 1 choisie : c'est la lettre de colonne qui provoque la sélection à imprimer (cacher des colonnes non remplies à partir de cette lettre).
Cette solution fonctionne parfaitement. Les 'compressions' de colonnes se réalisent à convenance.
L'inconvénient c'est que la solution 2 m'intéresse vraiment :
En agissant non pas à partir de la lettre de colonne mais à partir d'une date définie dans un déroulant (paramètres) : cette date définit alors la lettre de la colonne pour la 'sélection sur la droite' à cacher.
Je ne comprends pas comment faire pour faire fonctionner cette partie de macro.
J'essaie avec CASE 1, CASE 2 ou bien avec Case Feuil3.[A2], Case Feuil3.[A3] : message d'erreur dans ces deux présentations.
Si l'un d'entre vous pouvait m'aider je pourrais limiter la macro uniquement à la partie SOLUTION 2 car ce serait plus conversationnelle avec le choix de date plutôt que le nom de colonne, surtout quand le titre de colonne est caché...
Merci d'avance,
Webperegrino
Code :
Option Explicit
Private Sub BoutonBascule_Click() 'Masquer/Afficher Colonne H / Colonne AZ
'SOLUTION 1
Application.ScreenUpdating = False
Sheets("BD").Unprotect ("toto")
Dim LetrCol
LetrCol = Range("A2")
Range(Columns(LetrCol), Columns("AZ")).EntireColumn.Hidden = True
Sheets("BD").PageSetup.PrintArea = "B1:BF52"
ActiveWindow.SelectedSheets.PrintPreview
Range(Columns(LetrCol), Columns("AZ")).EntireColumn.Hidden = False 'affiche toutes les colonnes
Range("E3").Select
Sheets("BD").Protect ("toto")
Application.ScreenUpdating = True
' SOLUTION 2
Application.ScreenUpdating = False
Sheets("BD").Unprotect ("toto")
Select Case Range("A3").Value
' exemple Range("A3").Value : Samedi 03 août liste de validation : Samedi 03 août à dimanche 12 août pris entre Feuil3.[A2] et Feuil3.[A10]
Dim ColDeb
Case 1 'Case Feuil3.[A2] soit Samedi 03 août
ColDeb = "H"
Case 2 'Feuil3.[A3] soit Dimanche 04 août
ColDeb = "M"
Case 3 'Feuil3.[A4] soit Lundi 04 août
ColDeb = "R"
Case 4 'Feuil3.[A5]
ColDeb = "W"
Case 5 'Feuil3.[A6]
ColDeb = "AB"
Case 6 'Feuil3.[A7]
ColDeb = "AG"
Case 7 'Feuil3.[A8]
ColDeb = "AL"
Case 8 'Feuil3.[A9]
ColDeb = "AQ"
Case 9 'Feuil3.[A10]
ColDeb = "AV"
Case Else
MsgBox "Erreur"
End Select
Sheets("BD").PageSetup.PrintArea = "B1:BF52"
ActiveWindow.SelectedSheets.PrintPreview
Columns("H:AZ").EntireColumn.Hidden = False 'affiche toutes les colonnes
Range("E3").Select
Sheets("BD").Protect ("toto")
Application.ScreenUpdating = True
End Sub
Après avoir fureté sur le Forum pour trouver une solution, je suis arrivé à appliquer la macro suivante.
La solution 1 choisie : c'est la lettre de colonne qui provoque la sélection à imprimer (cacher des colonnes non remplies à partir de cette lettre).
Cette solution fonctionne parfaitement. Les 'compressions' de colonnes se réalisent à convenance.
L'inconvénient c'est que la solution 2 m'intéresse vraiment :
En agissant non pas à partir de la lettre de colonne mais à partir d'une date définie dans un déroulant (paramètres) : cette date définit alors la lettre de la colonne pour la 'sélection sur la droite' à cacher.
Je ne comprends pas comment faire pour faire fonctionner cette partie de macro.
J'essaie avec CASE 1, CASE 2 ou bien avec Case Feuil3.[A2], Case Feuil3.[A3] : message d'erreur dans ces deux présentations.
Si l'un d'entre vous pouvait m'aider je pourrais limiter la macro uniquement à la partie SOLUTION 2 car ce serait plus conversationnelle avec le choix de date plutôt que le nom de colonne, surtout quand le titre de colonne est caché...
Merci d'avance,
Webperegrino
Code :
Option Explicit
Private Sub BoutonBascule_Click() 'Masquer/Afficher Colonne H / Colonne AZ
'SOLUTION 1
Application.ScreenUpdating = False
Sheets("BD").Unprotect ("toto")
Dim LetrCol
LetrCol = Range("A2")
Range(Columns(LetrCol), Columns("AZ")).EntireColumn.Hidden = True
Sheets("BD").PageSetup.PrintArea = "B1:BF52"
ActiveWindow.SelectedSheets.PrintPreview
Range(Columns(LetrCol), Columns("AZ")).EntireColumn.Hidden = False 'affiche toutes les colonnes
Range("E3").Select
Sheets("BD").Protect ("toto")
Application.ScreenUpdating = True
' SOLUTION 2
Application.ScreenUpdating = False
Sheets("BD").Unprotect ("toto")
Select Case Range("A3").Value
' exemple Range("A3").Value : Samedi 03 août liste de validation : Samedi 03 août à dimanche 12 août pris entre Feuil3.[A2] et Feuil3.[A10]
Dim ColDeb
Case 1 'Case Feuil3.[A2] soit Samedi 03 août
ColDeb = "H"
Case 2 'Feuil3.[A3] soit Dimanche 04 août
ColDeb = "M"
Case 3 'Feuil3.[A4] soit Lundi 04 août
ColDeb = "R"
Case 4 'Feuil3.[A5]
ColDeb = "W"
Case 5 'Feuil3.[A6]
ColDeb = "AB"
Case 6 'Feuil3.[A7]
ColDeb = "AG"
Case 7 'Feuil3.[A8]
ColDeb = "AL"
Case 8 'Feuil3.[A9]
ColDeb = "AQ"
Case 9 'Feuil3.[A10]
ColDeb = "AV"
Case Else
MsgBox "Erreur"
End Select
Sheets("BD").PageSetup.PrintArea = "B1:BF52"
ActiveWindow.SelectedSheets.PrintPreview
Columns("H:AZ").EntireColumn.Hidden = False 'affiche toutes les colonnes
Range("E3").Select
Sheets("BD").Protect ("toto")
Application.ScreenUpdating = True
End Sub
Dernière édition: