masquer des colonnes et imprimer après un clic droit.

Y compris Power BI, Power Query et toute autre question en lien avec Excel
C
Cluedo
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 10 juin 2018
Version d'Excel : 2016

Message par Cluedo » 27 septembre 2018, 17:36

Bonjour,
Pouvez-vous m'aider à résoudre mon petit souci qui est le suivant:
Je reçois régulièrement un fichier que je dois imprimer, mais avant l'impression je dois masquer certaines colonnes. Pour mes essais j'ai créer un classeur qui lance l'impression avec un bouton ce qui fonctionne trés bien (voir pèce jointe). Mais mon problème est qu'il est impossible d'avoir ce bouton dans le fichier que je reçois donc je voudrais crééer une sorte de macro qui sera executable avec chaque classeur que je recevrai.
Je voudrai le même fonctionnement que MDF XLcalandar par exemple que j'ai installé dans un classeur comme "complément" et qui peut s'exécuter sur tous mes classeurs en faisant un clic droit, est-ce possible ?

merci d'avance.
macro impression.xlsm
(16.5 Kio) Téléchargé 4 fois
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'658
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 28 septembre 2018, 11:20

bonjour

ne pas toucher au fichier A
créer un fichier B, en A1 mettre = et cliquer dans A1 du fichier A
étendre cette mini-formule vers la droite et le bas,
B est devenu une image de A
supprimer les colonnes indésirables

travailler et imprimer dans B
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'706
Appréciations reçues : 217
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 28 septembre 2018, 13:54

Salut Cluedo,
Salut jmd,

Solution VBA...
- d'abord charger les fichiers que tu veux imprimer (FichierB joint);
- charger ensuite le FichierA joint. Celui-ci est vide ;
- au démarrage, il scanne les fichiers ouverts et te demande si tu veux travailler avec ;
- si oui, il ouvre chaque feuille de ces fichiers, les copie avec formats et largeurs colonnes originaux et te demande quelles colonnes tu veux masquer :
- réponse vide = pas de colonnes à effacer ;
* en minuscule, les colonnes à masquer, séparées d'un "/" : ex : a/h:j avec demande de confirmation ;
* si erreur et donc refus de la modification précédente, en majuscule, les colonnes à afficher : ex : A/H:J ;
* tu peux combiner : ex : A/H:J/b/d:h
- impression avec preview ;
- effacement de la copie.

Le fichier original n'est donc pas affecté par ces manipulations.
Private Sub Workbook_Open()
'
Dim sWkB As Workbook, sWkS As Worksheet
Dim tSplit, iRep%, sRep$, sWBook$
'
sWBook = ThisWorkbook.Name
For Each sWkB In Workbooks
    If sWkB.Name <> sWBook Then
        If MsgBox("Voulez-vous travailler avec le fichier " & sWkB.Name & " ?", vbQuestion + vbYesNo + vbDefaultButton2, "Impression") = 6 Then
            With sWkB
                For x = 1 To .Sheets.Count
                    .Sheets(x).UsedRange.Copy
                    Range("A1").PasteSpecial Paste:=xlPasteAll
                    Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
                    Range("A1").PasteSpecial Paste:=xlPasteFormats
                    Do
                        sRep = InputBox("Veuillez sélectionner les colonnes à masquer à l'impression?", "Impression")
                        If sRep <> "" Then
                            tSplit = Split(sRep, "/")
                            For y = 0 To UBound(tSplit)
                                Columns(tSplit(y)).Hidden = IIf(Asc(Left(tSplit(y), 1)) > 95, True, False)
                            Next
                        End If
                        iRep = MsgBox("Le résultat est-il conforme ?", vbQuestion + vbYesNo + vbDefaultButton2, "Impression")
                    Loop Until iRep = 6
                    ActiveSheet.PrintPreview
                    Columns.Hidden = False
                    Cells.Delete
                Next
                .Close
            End With
        End If
    End If
Next
'
End Sub
:btres:

8-)
A+
FichierA.xlsm
(17.03 Kio) Téléchargé 2 fois
FichierB.xlsx
(10.94 Kio) Téléchargé 3 fois
C
Cluedo
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 10 juin 2018
Version d'Excel : 2016

Message par Cluedo » 30 septembre 2018, 10:24

OK merci pour vos réponses je vais adapter vos conseils à mon fichier.
bon dimanche.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message