VBA : Revenir au classeur à la fin de la macro

Fermé
Benji60 - Modifié le 25 août 2022 à 07:35
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 - 26 août 2022 à 17:07

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.

6 réponses

f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
25 août 2022 à 10:06

Bonjour,

Dans votre code, vous ne revenez a votre classeur Excel que si vous avez une erreur.

1
ccm81 Messages postés 10824 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 février 2024 2 400
25 août 2022 à 15:14

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

0

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).

0
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
Modifié le 26 août 2022 à 10:33

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?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

Bonjour, 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. 

0
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
26 août 2022 à 17:07

Bonjour,

A tester avec votre nom de fichier. Chez moi, je lance le code avec un bouton sur feuil1, le fichier photo s'ouvre et 5 secondes plus tard j'ecrit la date dans une cellule en changeant de feuille

Windows("Photo.xlsm").Activate
0