[Résolu] Macro pour limiter la plage d'impression (colonnes)

Webperegrino

XLDnaute Impliqué
Supporter XLD
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
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Macro pour limiter la plage d'impression (colonnes)

Bonsoir le Forum,

Ouf !
J'ai réussi à trouver une parade pour obtenir le moyen de cacher des colonnes non utilisées (au fur et à mesure que je remplis le tableau vers la droite).

Le fichier joint a pour mot de passe : toto

Pour faire fonctionner la macro de compression des colonnes non utilisées (les cacher pour l'impression) j'ai été contraint de procéder sur les deux cellules A54 et A53.
A54 donne la première colonne à cacher en fonction du jour choisi dans la cellule A53.
Le bouton vert voisin montre l'aperçu avant impression.

L'essentiel était que cela fonctionne...

Voici une solution pour ceux qui sont intéresssés...
Mais peut-être avez-vous le moyen de simplifier la chose (cascade de SI... dans la cellule A54 dépendante de la cellule A53) ?
Et n'agir que sur la cellule A53 pour faire fonctionner la macro ?

Mon autre problème : A53 affiche bien des jours en Français, alors que le déroulant correspondant affiche des jours en Anglais.
Comment faire en sorte que le déroulant donne aussi les jours en Français ?

Bonne soirée,
Webperegrino
 

Pièces jointes

  • COMPRESSION COLONNES.xls
    66.5 KB · Affichages: 41
  • COMPRESSION COLONNES.xls
    66.5 KB · Affichages: 44
  • COMPRESSION COLONNES.xls
    66.5 KB · Affichages: 46
Dernière édition:

bbb38

XLDnaute Accro
Re : Macro pour limiter la plage d'impression (colonnes)

Bonjour Webperegrino, le forum,

Un début de solution, dans l’hypothèse ou j’ai compris ta demande.
Cordialement,
Bernard
 

Pièces jointes

  • COMPRESSION COLONNES.xls
    77.5 KB · Affichages: 56
  • COMPRESSION COLONNES.xls
    77.5 KB · Affichages: 56
  • COMPRESSION COLONNES.xls
    77.5 KB · Affichages: 52

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Macro pour limiter la plage d'impression (colonnes)

Le Forum,
Bernard,
J'ai étudié plus en profondeur l'exécution de la macro commande.
Il me faut maiantenant conserver les colonnes BA à BF (synthèse du tableau à garder à l'impression)
J'ai aussi ajouté ceci dans Private Sub Cmdusf1valider_Click() :
.../...
For k = xcol To 59
.../...
Next i
Unload Me
ActiveWindow.SelectedSheets.PrintPreview
Columns("H:AZ").EntireColumn.Hidden = False 'affiche toutes les colonnes

Application.ScreenUpdating = True
Sheets("BD").Range("A1").Select
End Sub
 

bbb38

XLDnaute Accro
Re : Macro pour limiter la plage d'impression (colonnes)

Bonjour Webperegrino, le forum,

J’ai modifié la macro pour conserver les colonnes BA à BF.
Bon Week-end.
Cordialement,
Bernard
 

Pièces jointes

  • COMPRESSION COLONNES.xls
    85.5 KB · Affichages: 42
  • COMPRESSION COLONNES.xls
    85.5 KB · Affichages: 42
  • COMPRESSION COLONNES.xls
    85.5 KB · Affichages: 40

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Macro pour limiter la plage d'impression (colonnes)

Bonjour le Forum, Bernard,
Je suis un peu désepéré.
J'ai appliqué à la lettre ton fichier corrigé.
J'ai une erreur d'exécution '9'
L'indice n'appartient pas à la sélection.
Un débogage sur la partie de commande du bouton cliqué donne un blocage sur :
UserForm1.Show
C'est identique si je baptise mon UserForm en Usf1
Et l'userform est les macro correspondantes sont pourtant bien présentes...

Asvez-vous une solution ?
Merci
Je transmets ici mon fichier complet, je l'utilise dans une association comme bénévole.
Webperegrino
 

bbb38

XLDnaute Accro
Re : Macro pour limiter la plage d'impression (colonnes)

Bonjour Webperegrino, le forum,

Je regarde ton problème cet après-midi.
Le classeur est protégé par un mot de passe ?
Cordialement,
Bernard
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Macro pour limiter la plage d'impression (colonnes)

Le Forum,
Bernard, surtout ne te presse pas : j'ai tout mon temps ; j'ai déjà trouvé que tu avais été très réactif.

Protection du classeur ? a priori non du fait que je ne le fais pas d'habitude, ne sachant pas bien gérer cela.
Quant aux feuilles du fichier, si elles ne sont pas déprotégées :
La feuille SAISIE et la feuille paramètres ont comme mdp : tikyt
La feuille où doit fonctionner ta macro et l'userform1 (ou Usf1) a comme mdp : toto

Explique-moi aussi d'où vient le blocage et pourquoi l'userform ne s'affiche pas, et comment tu y remédieras car je veux aussi progresser et comprendre.
Cordialement à toi et à tous les amis du Forum : vous m'êtes bien sympas de partager ainsi vos connaissances.
Webperegrino
 
Dernière édition:

bbb38

XLDnaute Accro
Re : Macro pour limiter la plage d'impression (colonnes)

Bonjour Webperegrino, le forum,

Quel est le mot de passe qui protège le classeur ? (Révision/Ôter la protection du classeur).
Petite remarque : Dans la macro « REPORT_Click », les feuilles « SAISIE » et « BD » ont le même mdp : tikyt. Sur la macro « UserForm_Initialize » le mdp est : toto pour la feuille « BD ». Conflit en perspective.
Je suppose que l’erreur provient d’une mauvaise affectation de la macro au bouton de commande (formulaire) « Afficher/Masquer ».
Changement de programme pour cet après-midi.
Cordialement,
Bernard
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Macro pour limiter la plage d'impression (colonnes)

Le Forum, Bernard,
J'avance de mon côté !
L'onglet 3 contient l'expression Paramètres.
Dans Private Sub UserForm_Initialize() j'ai modifié :
With Sheets("Parametres")
et
Me.LB1.RowSource = "Parametres!A1:A10"
en remplaçant par Paramètres.
J'ai aussi unifié le mdp, donc cette fois-ci unique, tant sur les trois feuilles que dans les commandes macro.
L'UserFom apparaît cette fois-ci.

Je continue mes recherches car ça coince encore sur la ligne suivante :
Columns(k).EntireColumn.Hidden = True
avec le message :
Erreur d'exécution '1004' :
Impossible de définir la propriété Hidden de la Classe Range

Bon après-midi,
Webperegrino
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Macro pour limiter la plage d'impression (colonnes)

Le Forum,
Bernard,
Je vous remercie pour vos interventions,
Avec le contenu du message précédent et avec une correction finale dans Private Sub UserForm_Initialize(), en bloquant la dernière ligne ' Sheets("BD").Protect ("tikyt") entre
Sheets("BD").Activate
' et
End Sub
j'arrive enfin à faire fonctionner ce fichier comme je le désirais.
Encore merci à toi Bernard.
Bon week-end à vous tous,
Webperegrino
 

Discussions similaires

Réponses
3
Affichages
574

Statistiques des forums

Discussions
312 178
Messages
2 085 982
Membres
103 079
dernier inscrit
sle