Masquer des colonnes et imprimer après un clic droit

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.

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

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

A+

3fichierb.xlsx (10.94 Ko)
2fichiera.xlsm (17.03 Ko)

OK merci pour vos réponses je vais adapter vos conseils à mon fichier.

bon dimanche.

Rechercher des sujets similaires à "masquer colonnes imprimer clic droit"