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

Le classeur ne s'ouvre pas (Par bouton sur Userform)

1 réponse
Avatar
?
Bonjour,

Voilà mon soucis : Je cherche à ouvrir un fichier par l'intermédiaire d'un
bouton sur un userform. Pour ceci, j'utilise ShellExecute.

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long

Puis : With Application.FileSearch
.NewSearch
.LookIn = chemapp
.SearchSubFolders = True
.Filename = "3" & Right(usrcatalogue.txtcodemana.Value, 4) &
Worksheets("Paramètres").Range("A5").Value & " " &
usrcatalogue.txtintitu.Value
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
.Execute
If .Execute() > 0 Then
For po = 1 To .FoundFiles.Count

Call ShellExecute(0&, vbNullString, .FoundFiles(po), vbNullString,
vbNullString, vbMaximizedFocus)
Next po
Else MsgBox "Il n'existe pas de fiche catalogue appartenant à cette
référence dans la base de données actuelle":Exit Sub
End If
End With

Aucun soucis tant que le fichier à ouvrir n'est pas un classeur Excel, mais
qu'il fait applel à un autre logiciel (Word, Powerpoint, etc...)
Mais dès que j'appelle un .xls, l'application se bloque et pas moyen d'en
sortir, comme si j'avais lancé une boucle sans fin.

Merci à celle ou celui qui aurait une piste afin de m'oter cette grosse
épine du pied.


Eric

1 réponse

Avatar
MichDenis
Bonjour ?,

Tu fais un test sur l'extension du fichier

'-------------------------
if Lcase(right(.FoundFiles(po),4)) = ".xls" then
workbooks.open .FoundFiles(po)
else
Call ShellExecute(0&, vbNullString, .FoundFiles(po), vbNullString, vbNullString, vbMaximizedFocus)
end if
'-------------------------


Salutations!



"?" <?@discussions.microsoft.com> a écrit dans le message de news:
Bonjour,

Voilà mon soucis : Je cherche à ouvrir un fichier par l'intermédiaire d'un
bouton sur un userform. Pour ceci, j'utilise ShellExecute.

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long

Puis : With Application.FileSearch
.NewSearch
.LookIn = chemapp
.SearchSubFolders = True
.Filename = "3" & Right(usrcatalogue.txtcodemana.Value, 4) &
Worksheets("Paramètres").Range("A5").Value & " " &
usrcatalogue.txtintitu.Value
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
.Execute
If .Execute() > 0 Then
For po = 1 To .FoundFiles.Count

Call ShellExecute(0&, vbNullString, .FoundFiles(po), vbNullString,
vbNullString, vbMaximizedFocus)
Next po
Else MsgBox "Il n'existe pas de fiche catalogue appartenant à cette
référence dans la base de données actuelle":Exit Sub
End If
End With

Aucun soucis tant que le fichier à ouvrir n'est pas un classeur Excel, mais
qu'il fait applel à un autre logiciel (Word, Powerpoint, etc...)
Mais dès que j'appelle un .xls, l'application se bloque et pas moyen d'en
sortir, comme si j'avais lancé une boucle sans fin.

Merci à celle ou celui qui aurait une piste afin de m'oter cette grosse
épine du pied.


Eric