Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problèmes xldialogOpen Excel 2007

7 réponses
Avatar
Rolando
J'ai un fichier avec un mot de passe à l'ouverture. En EXcel 2003 le code
ici-bas fonctionne parfaitement. Mais en Excel 2007 le chemin est reconnu
mais la boîte de dialogue Mot de passe s'affiche et je dois entrer un mot de
passe manuellement. C'est comme si l'argument prot_pwd l'argument 5 n'est pas
reconnu par 2007. Que faire?

If
Application.Dialogs(xlDialogOpen).Show(ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value, , , , "CVCFDPassword") = False Then

ou

If
Application.Dialogs(xlDialogOpen).Show(Arg1:=ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
arg5:="CVCFDPassword") = False Then

7 réponses

Avatar
michdenis
Bonjour Rolando,

Le paramètre "PassWord" de la méthode "Open" du Workbooks
dans l'aide d'Excel stipule ceci :
*******************
Chaîne qui contient le mot de passe requis pour ouvrir un classeur protégé. Si cet
argument est omis alors que le classeur requiert un mot de passe, l'utilisateur est invité
à fournir ce mot de passe.
********************

Tu peux utiliser une procédure comme celle-ci.
Elle doit être appelée absolument par l'interface de la
feuille de calcul et non déclenchée à partir de la fenêtre
de l'éditeur de code.
'---------------------------------------
Sub Ouvrir_Un_Fichier_Mot_DePasse()
Dim Filt As String, Title As String, msg As String
Dim FilterIndex As Integer, Filename As Variant
Dim MotDePasse As String

MotDePasse = "a" 'à définir

' File filters
Filt = "Excel Files (*.xls*),*.xls*,"
FilterIndex = 1
' Le titre de la fenêtre
Title = "Choisir fichier à ouvrir"
' Choix du fichier
Filename = Application.GetOpenFilename(FileFilter:=Filt, _
FilterIndex:=FilterIndex, Title:=Title, MultiSelect:úlse)
'Si l'usager annule la boîte de dialogue
If Format(Filename) = False Then
MsgBox "Opération annulée"
Exit Sub
End If
' Open Files
If Filename <> "" Then
msg = msg & Filename & vbCrLf ' Pas obligatoire
SendKeys MotDePasse & "~"
SendKeys MotDePasse & "~"
Workbooks.Open Filename
MsgBox msg, vbInformation, "Fichier ouvert" ' Pas obligatoire
End If
End Sub
'---------------------------------------


"Rolando" a écrit dans le message de groupe de
discussion :
J'ai un fichier avec un mot de passe à l'ouverture. En EXcel 2003 le code
ici-bas fonctionne parfaitement. Mais en Excel 2007 le chemin est reconnu
mais la boîte de dialogue Mot de passe s'affiche et je dois entrer un mot de
passe manuellement. C'est comme si l'argument prot_pwd l'argument 5 n'est pas
reconnu par 2007. Que faire?

If
Application.Dialogs(xlDialogOpen).Show(ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
, , , "CVCFDPassword") = False Then

ou

If
Application.Dialogs(xlDialogOpen).Show(Arg1:=ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
arg5:="CVCFDPassword") = False Then
Avatar
Daniel.C
Bonjour Denis,
Reste que la commande fonctionne avec XL2003 et pas avec XL2007...
Cordialement.
Daniel

Bonjour Rolando,

Le paramètre "PassWord" de la méthode "Open" du Workbooks
dans l'aide d'Excel stipule ceci :
*******************
Chaîne qui contient le mot de passe requis pour ouvrir un classeur protégé.
Si cet argument est omis alors que le classeur requiert un mot de passe,
l'utilisateur est invité à fournir ce mot de passe.
********************

Tu peux utiliser une procédure comme celle-ci.
Elle doit être appelée absolument par l'interface de la
feuille de calcul et non déclenchée à partir de la fenêtre
de l'éditeur de code.
'---------------------------------------
Sub Ouvrir_Un_Fichier_Mot_DePasse()
Dim Filt As String, Title As String, msg As String
Dim FilterIndex As Integer, Filename As Variant
Dim MotDePasse As String

MotDePasse = "a" 'à définir

' File filters
Filt = "Excel Files (*.xls*),*.xls*,"
FilterIndex = 1
' Le titre de la fenêtre
Title = "Choisir fichier à ouvrir"
' Choix du fichier
Filename = Application.GetOpenFilename(FileFilter:=Filt, _
FilterIndex:=FilterIndex, Title:=Title, MultiSelect:úlse)
'Si l'usager annule la boîte de dialogue
If Format(Filename) = False Then
MsgBox "Opération annulée"
Exit Sub
End If
' Open Files
If Filename <> "" Then
msg = msg & Filename & vbCrLf ' Pas obligatoire
SendKeys MotDePasse & "~"
SendKeys MotDePasse & "~"
Workbooks.Open Filename
MsgBox msg, vbInformation, "Fichier ouvert" ' Pas obligatoire
End If
End Sub
'---------------------------------------


"Rolando" a écrit dans le message de
groupe de discussion :
J'ai un fichier avec un mot de passe à l'ouverture. En EXcel 2003 le code
ici-bas fonctionne parfaitement. Mais en Excel 2007 le chemin est reconnu
mais la boîte de dialogue Mot de passe s'affiche et je dois entrer un mot de
passe manuellement. C'est comme si l'argument prot_pwd l'argument 5 n'est pas
reconnu par 2007. Que faire?

If
Application.Dialogs(xlDialogOpen).Show(ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
, , , "CVCFDPassword") = False Then

ou

If
Application.Dialogs(xlDialogOpen).Show(Arg1:=ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
arg5:="CVCFDPassword") = False Then


Avatar
michdenis
| Reste que la commande fonctionne avec XL2003 et pas avec XL2007...

J'ai dit autre chose moi,

Ok, Daniel, mais je t'avoue que je n'y suis pour rien pour ce changement !

Si tu fais un truc comme ceci, la méthode fonctionne aussi :
un pour la protection et l'autre pour l'écriture.
Cela dépend comme la manoeuvre a été faite lors de l'enregistrement.
'------------------------
Sub test()
Workbooks.Open "c:UsersDMDocumentsExemple.xlsm", Password:="a", writerespassword:="a"
End Sub
'------------------------
Avatar
Daniel.C
Reste à espérer que la correction sera faite dans la prochaine version
;-)))
Daniel

Reste que la commande fonctionne avec XL2003 et pas avec XL2007...



J'ai dit autre chose moi,

Ok, Daniel, mais je t'avoue que je n'y suis pour rien pour ce changement !

Si tu fais un truc comme ceci, la méthode fonctionne aussi :
un pour la protection et l'autre pour l'écriture.
Cela dépend comme la manoeuvre a été faite lors de l'enregistrement.
'------------------------
Sub test()
Workbooks.Open "c:UsersDMDocumentsExemple.xlsm", Password:="a",
writerespassword:="a" End Sub
'------------------------


Avatar
michdenis
Dans la fenêtre "enregistrer sous"

Lorsque l'on veut protéger le classeur, la petite fenêtre
"Options générales" affiche 2 lignes dont les intitulés :

Mot de passe pour la lecture

Mot de passe pour la modification

Si on désire seulement protéger le classeur, on doit remplir
seulement la case du haut... une autre fenêtre nous demandera
de confirmer le mot de passe.

On pourra alors utiliser ceci :
Workbooks.Open "c:UsersDMDocumentsExemple.xlsm", Password:="a"

Si on inscrit le motdepasse dans les 2 lignes de la fenêtre, il faudra ceci :
Workbooks.Open "c:UsersDMDocumentsExemple.xlsm", Password:="a",
writerespassword:="a"

Comme le demandeur laissait supposer que cette méthode ne fonctionnait pas
je lui ai suggéré une autre façon de faire...

J'espère que ce sera plus clair pour les lecteurs.










"Daniel.C" a écrit dans le message de groupe de discussion :
#
Reste à espérer que la correction sera faite dans la prochaine version
;-)))
Daniel

Reste que la commande fonctionne avec XL2003 et pas avec XL2007...



J'ai dit autre chose moi,

Ok, Daniel, mais je t'avoue que je n'y suis pour rien pour ce changement !

Si tu fais un truc comme ceci, la méthode fonctionne aussi :
un pour la protection et l'autre pour l'écriture.
Cela dépend comme la manoeuvre a été faite lors de l'enregistrement.
'------------------------
Sub test()
Workbooks.Open "c:UsersDMDocumentsExemple.xlsm", Password:="a",
writerespassword:="a" End Sub
'------------------------


Avatar
Rolando
Bonjour,

Merci énormément. Ceci répond en majeure partie à mon problème. Pour mon
application il faut que lorsque la boîte de dialogue s'ouvre elle s'ouvre
dans un répertoire défini. Est-ce possible avec GetOpenFileName? Si oui
comment. Si non quoi faire?

Merci à l'avance.

Rolando

"michdenis" a écrit :

Bonjour Rolando,

Le paramètre "PassWord" de la méthode "Open" du Workbooks
dans l'aide d'Excel stipule ceci :
*******************
Chaîne qui contient le mot de passe requis pour ouvrir un classeur protégé. Si cet
argument est omis alors que le classeur requiert un mot de passe, l'utilisateur est invité
à fournir ce mot de passe.
********************

Tu peux utiliser une procédure comme celle-ci.
Elle doit être appelée absolument par l'interface de la
feuille de calcul et non déclenchée à partir de la fenêtre
de l'éditeur de code.
'---------------------------------------
Sub Ouvrir_Un_Fichier_Mot_DePasse()
Dim Filt As String, Title As String, msg As String
Dim FilterIndex As Integer, Filename As Variant
Dim MotDePasse As String

MotDePasse = "a" 'à définir

' File filters
Filt = "Excel Files (*.xls*),*.xls*,"
FilterIndex = 1
' Le titre de la fenêtre
Title = "Choisir fichier à ouvrir"
' Choix du fichier
Filename = Application.GetOpenFilename(FileFilter:=Filt, _
FilterIndex:=FilterIndex, Title:=Title, MultiSelect:úlse)
'Si l'usager annule la boîte de dialogue
If Format(Filename) = False Then
MsgBox "Opération annulée"
Exit Sub
End If
' Open Files
If Filename <> "" Then
msg = msg & Filename & vbCrLf ' Pas obligatoire
SendKeys MotDePasse & "~"
SendKeys MotDePasse & "~"
Workbooks.Open Filename
MsgBox msg, vbInformation, "Fichier ouvert" ' Pas obligatoire
End If
End Sub
'---------------------------------------


"Rolando" a écrit dans le message de groupe de
discussion :
J'ai un fichier avec un mot de passe à l'ouverture. En EXcel 2003 le code
ici-bas fonctionne parfaitement. Mais en Excel 2007 le chemin est reconnu
mais la boîte de dialogue Mot de passe s'affiche et je dois entrer un mot de
passe manuellement. C'est comme si l'argument prot_pwd l'argument 5 n'est pas
reconnu par 2007. Que faire?

If
Application.Dialogs(xlDialogOpen).Show(ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
, , , "CVCFDPassword") = False Then

ou

If
Application.Dialogs(xlDialogOpen).Show(Arg1:=ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
arg5:="CVCFDPassword") = False Then



Avatar
michdenis
Dans le haut du module, déclaration de L'API
'---------------------------
Private Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long
'---------------------------
Sub ChDirNet(szPath As String)
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting path."
End Sub
'---------------------------

Et dans la procédure générale, tu ajoutes :

Dim CheminDuFichier As String
CheminDuFichier = "D:Documents and SettingsDMMes documents"

Et juste avant la ligne "Application.GetOpenFilename"
tu ajoutes :
ChDirNet CheminDuFichier




"Rolando" a écrit dans le message de groupe de
discussion :
Bonjour,

Merci énormément. Ceci répond en majeure partie à mon problème. Pour mon
application il faut que lorsque la boîte de dialogue s'ouvre elle s'ouvre
dans un répertoire défini. Est-ce possible avec GetOpenFileName? Si oui
comment. Si non quoi faire?

Merci à l'avance.

Rolando

"michdenis" a écrit :

Bonjour Rolando,

Le paramètre "PassWord" de la méthode "Open" du Workbooks
dans l'aide d'Excel stipule ceci :
*******************
Chaîne qui contient le mot de passe requis pour ouvrir un classeur protégé. Si cet
argument est omis alors que le classeur requiert un mot de passe, l'utilisateur est
invité
à fournir ce mot de passe.
********************

Tu peux utiliser une procédure comme celle-ci.
Elle doit être appelée absolument par l'interface de la
feuille de calcul et non déclenchée à partir de la fenêtre
de l'éditeur de code.
'---------------------------------------
Sub Ouvrir_Un_Fichier_Mot_DePasse()
Dim Filt As String, Title As String, msg As String
Dim FilterIndex As Integer, Filename As Variant
Dim MotDePasse As String

MotDePasse = "a" 'à définir

' File filters
Filt = "Excel Files (*.xls*),*.xls*,"
FilterIndex = 1
' Le titre de la fenêtre
Title = "Choisir fichier à ouvrir"
' Choix du fichier
Filename = Application.GetOpenFilename(FileFilter:=Filt, _
FilterIndex:=FilterIndex, Title:=Title, MultiSelect:úlse)
'Si l'usager annule la boîte de dialogue
If Format(Filename) = False Then
MsgBox "Opération annulée"
Exit Sub
End If
' Open Files
If Filename <> "" Then
msg = msg & Filename & vbCrLf ' Pas obligatoire
SendKeys MotDePasse & "~"
SendKeys MotDePasse & "~"
Workbooks.Open Filename
MsgBox msg, vbInformation, "Fichier ouvert" ' Pas obligatoire
End If
End Sub
'---------------------------------------


"Rolando" a écrit dans le message de groupe de
discussion :
J'ai un fichier avec un mot de passe à l'ouverture. En EXcel 2003 le code
ici-bas fonctionne parfaitement. Mais en Excel 2007 le chemin est reconnu
mais la boîte de dialogue Mot de passe s'affiche et je dois entrer un mot de
passe manuellement. C'est comme si l'argument prot_pwd l'argument 5 n'est pas
reconnu par 2007. Que faire?

If
Application.Dialogs(xlDialogOpen).Show(ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
, , , "CVCFDPassword") = False Then

ou

If
Application.Dialogs(xlDialogOpen).Show(Arg1:=ThisWorkbook.Sheets(Feuil10.Name).Range("CN_MenuDefaultFolderSelect").Value,
arg5:="CVCFDPassword") = False Then