Bonjour à tous,

J'ai fait une macro pour ouvrir un fichier protégé par un mot de passe (1234). Je souhaite copier coller une plage mais elle se trouve sur un tableau croisé dynamique, je dois donc modifier les champs avant de sélectionner la plage, c'est pour ça que j'ai besoin que le fichier ne soit plus protégé lorsqu'il est ouvert.

J'ai fait une Application.InputBox pour pouvoir sélectionner manuellement la plage.

Puisque je dois effectuer cette opération une dizaine de fois, je ne peux pas mettre le nom du fichier exact.

J'ai mis en commentaire les deux lignes qui ne fonctionnent pas

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim MonFichier As Variant
Dim rng As Range
 
MonFichier = Application.GetOpenFilename("Fichiers Excel avec macro (*.xlsm)& Fichiers Excel sans macro (*xls),*.xlsm & *xls")
 
Workbooks.OpenXML Filename:=MonFichier , , , , "1234"  'j'ai essayé cette ligne mais elle ne fonctionne pas
 
Set rng = Application.InputBox(prompt:="Sélectionner la plage:", Type:=8)
 
rng.SpecialCells(xlCellTypeVisible).Copy                          
Windows("template import données.xlsm").Activate
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = "Base DI "
Worksheets("Base DI").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
Workbooks("MonFichier").Close savechanges:=False  'pour fermer ce fichier j'ai également essayé cette ligne mais ne fonctionne pas non plus
 
End Sub
Avez-vous des idées ?

merci d'avance pour votre aide !