Bonjour à tous,

Je vous soumets le problème suivant pour lequel je bloque totalement depuis deux jours.

Dans une feuille Excel, j'explore (au moyen d'un contrôle ActiveX SpinButton) les fichiers photos se trouvant dans un répertoire. En cliquant sur un contrôle ActiveX Button sur la feuille, j'ouvre la photo affichée sur la feuille dans la visionneuse Microsoft pour me permettre de la modifier (rognage, modifier la luminosité,...) et d'enregistre les modifications. Je souhaite qu'à la fermeture du processus de la visionneuse Microsoft, apparaisse sur la feuille Excel la photo modifiée.

Vous trouverez ci-dessous le code que j'ai rédigé:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub BTN_VISIONNEUSE_IMAGE_Click()
Dim Fichier_Image As String
 
    Fichier_Image = Tbl_Photos(SPIN_PHOTOS.Value) '---> Les chemins des fichiers images sont stockés dans un Array
 
    If Dir(Fichier_Image) <> "" And Fichier_Image Like "*jpg*" Then ShellExecute FindWindow("", Application.Caption), "Open", Fichier_Image, "", "", 1
 
    Image1.Picture = LoadPicture(Fichier_Image): Image1.PictureSizeMode = fmPictureSizeModeZoom
End Sub
Hors le code VBA et le processus Shell sont asynchrones: le code VBA poursuit donc son exécution après l'ouverture de la visionneuse. Les modifications apportées à la photo ne seront donc pas mises à jour lors de la dernière ligne du code ci-dessus.

La documentation de Microsoft apporte une solution générale au problème rencontré avec l'utilisation de l'API CreateProcessA mais ne semble pas fonctionner avec la visionneuse photo (la commande ExecCmd Fichier_Image n'ouvre pas la visionneuse):


J'ai poursuivi mes recherches y compris sur des sites anglophones mais à cette heure, je n'ai pas trouver la solution.

Je vous remercie tous par avance pour l'aide que vous pourrez m'apporter.

Bon week-end à tous.

Frédéric