VBA : Revenir au classeur à la fin de la macro
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un classeur excel qui me permet à chaque fois que je scanne un produit, d'afficher sur un deuxième écran la photo (le lien est en case D2) de ce dernier via l'application photo. Jusque là nickel.
Sauf que la fenêtre qui reste active à la fin de la macro (VBA) c'est celle de la photo et non le classeur excel, j'ai fait plusieurs recherches mais aucune solution que j'ai trouvée ne fonctionne.
Précisions :
J'ai ajouté un timout de 5 seconde car je me suis dit que le temps que l'image ne s'ouvre le VBA avait terminé, mais non. J'ai aussi testé la dernière ligne sur un autre excel et un simple bouton cela me redirige bien vers le classeur comme j'aimerai que cela le fasse avec le code d'origine.
Shell "taskkill /f /im Microsoft.Photos.exe", vbHide 'on ferme la précédente photo ouverte
Application.Wait (Now + TimeValue("00:00:01")) 'on attend 1 seconde
On Error GoTo OuvertureFichierErreur
Dim MonApplication As Object
Dim MonFichier As String
Set MonApplication = CreateObject("Shell.Application")
MonFichier = Range("D2").Value 'à remplacer par votre fichier
MonApplication.Open (MonFichier)
Set MonApplication = Nothing
Exit Sub
OuvertureFichierErreur:
Set MonApplication = Nothing
MsgBox "Erreur lors de l'ouverture de fichier..."
Application.Wait (Now + TimeValue("00:00:05"))
Workbooks("Vente-des-variétés-VERSION LOCALE.xlsm").Worksheets("Données").Activate
Merci d'avance.
- VBA : Revenir au classeur à la fin de la macro
- Excel compter cellule couleur sans vba - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
6 réponses
Bonjour à tous les deux
Une petite fonction qui évite le/s "on error goto" dans le code
Function FichierOuvert(F As String) As Boolean
On Error Resume Next
FichierOuvert = Not Workbooks(F) Is Nothing
End Function
Cdlmnt
Merci pour votre réponse !
Malhreusement rien ne se passe toujours malgré les modifs, j'ai enlevé la partie qui gère l'erreur juste pour tester ce qui fait que j'ai ceci :
Dim MonApplication As Object
Dim MonFichier As String
Set MonApplication = CreateObject("Shell.Application")
MonFichier = Range("D2").Value 'à remplacer par votre fichier
MonApplication.Open (MonFichier)
Application.Wait (Now + TimeValue("00:00:02"))
Workbooks("Vente-des-variétés-VERSION LOCALE.xlsm").Activate
Mais cela ne fonctionne toujours pas, rien ne se passe avec la dernière ligne (testée encore une fois avec un autre fichier excel qui me fait bien revenir sur le fichier).
Bonjour,
testée encore une fois avec un autre fichier excel qui me fait bien revenir sur le fichier).
Ben, je serai tente de vous conseiller de prendre ce dit fichier, mais peut-etre un peu leger comme reponse.
Dans le fichier qui "fonctionne", vous n'avez mis que le code du test?
Vous avez deux ecrans, comment est faite la projection?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour, En fait quand je dis que cela fonctionne c'est juste la dernière ligne, pour revenir sur le fichier
Mais des que j'ajoute le morceau qui ouvre l'image cela ne fonctionne plus. L'image s'ouvre mais je ne reviens pas dans le excel.
Pour l'histoire des 2 écrans, c'est un détail car tous ces tests sont effectués sur un seul et même écran en attendant.
Mais l'idée, qui fonctionne, est que le fichier Excel ouvre un photo et cette dernière se fait au niveau de l'autre écran qui est celui par défaut, pendant que sur l'écran secondaire je continue à travailler dessus, sauf que comme le excel ne se réactive pas la fin je suis obligé manuellement de cliquer pour revenir dessus. Ce qui est très embêtant car j'utilise ce fichier avec une doucette à code barre donc si je dois cliquer sur le fichier pour le réactiver à chaque scannage (des milliers en quelques jours) c'est peu optimisé et même une sacré perte de temps. C'est dans le cadre d'une exposition vente.