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

Ouvrir plusieurs fichiers Excel de VB...

1 réponse
Avatar
+The_Taco+
Je tente présentement d'ouvrir plusieurs fichiers Excel à la fois avec VB en
utilisant la méthode ShellExecute. Le problème c'est qu'il ouvre tous mes
fichiers mais un par dessus l'autre. Résultat? À la place d'avoir 5 fichiers
Excel d'ouverts, j'en ai 1 qui est le dernier ouvert.
Quelqu'un peut m'aider?

Voici mon code:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Do While iCptOpen <= iCpt
'On cherche l'exécutable
Call FindExecutable(sTabFichier(iCptOpen), "", strEXE)

'Si le type de fichier s'ouvre avec un .exe
If InStr(1, strEXE, "\") > 0 Then
'On exécute le programme associé au fichier
Call ShellExecute(hwnd, "Open", (strPath), "", App.Path,
0)
Else
'Message d'erreur
MsgBox "Impossible d'ouvrir ce type d'extension"
End If

iCptOpen = iCptOpen + 1
Loop
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Merci

cheers

1 réponse

Avatar
Frédéric Sigonneau
Bonsoir,

Je ne comprends pas bien ton code. ShellExecute peut ouvrir (avec le paramètre
"open") un fichier sans avoir besoin de lui fournir l'exécutable (cette fonction
permet la même chose qu'un clic (ou double clic) sur un fichier quelconque dans
l'explorateur). Je ne vois donc pas bien à quoi te sert FindExecutable et je ne
comprends pas où est renseignée la variable "(strPath)" passée à ShellExceute.
Si le tableau sTabFichier contient, comme je crois le comprendre, une liste de
fichiers (avec leur chemin complet) qui sont ou non des classeurs Excel, et est
un tableau à une dimension, je pense que tu pourrais essayer qqchose comme ça
(non testé) :

For i=LBound(sTabFichier) To UBound(sTabFichier)
If Right(sTabFichier(i),3)="xls" Then
ShellExecute 0,"open",sTabFichier(i),"","",0)
End If
Next i

et si tu exécutes ton code depuis Excel (quand tu parles de VB, c'est Visual
Basic ou VBA ?) tu peux utiliser Workbooks.Open au lieu de ShellExecute (du
reste tu pourrais aussi avec VB, en utilisant une instance d'Excel existante ou
créée pour l'occasion).

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Je tente présentement d'ouvrir plusieurs fichiers Excel à la fois avec VB en
utilisant la méthode ShellExecute. Le problème c'est qu'il ouvre tous mes
fichiers mais un par dessus l'autre. Résultat? À la place d'avoir 5 fichiers
Excel d'ouverts, j'en ai 1 qui est le dernier ouvert.
Quelqu'un peut m'aider?

Voici mon code:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Do While iCptOpen <= iCpt
'On cherche l'exécutable
Call FindExecutable(sTabFichier(iCptOpen), "", strEXE)

'Si le type de fichier s'ouvre avec un .exe
If InStr(1, strEXE, "") > 0 Then
'On exécute le programme associé au fichier
Call ShellExecute(hwnd, "Open", (strPath), "", App.Path,
0)
Else
'Message d'erreur
MsgBox "Impossible d'ouvrir ce type d'extension"
End If

iCptOpen = iCptOpen + 1
Loop
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Merci

cheers