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 ;
* 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+
OK merci pour vos réponses je vais adapter vos conseils à mon fichier.
bon dimanche.