Arrêt macro (GetOpenFilename)

  • Initiateur de la discussion Arrêt macro (GetOpenFilename)
  • Date de début
A

Arrêt macro (GetOpenFilename)

Guest
Bonjour à tout le forum, au milieu de macros, j'ouvre un fichier .xls à l'aide de 'GetOpenFilename'.
Si dans la fenêtre de sélection du fichier, je choisis 'Annuler', ma macro en cours continue et à la fin j'obtiens des erreurs d'exécution vu qu'aucun fichier n'a été choisi.
J'aimerais trouver une manière propre pour sortir et arrêter toutes les macros.
Quand je dis toutes mes macros, c'est ma macro de lancement qui déroule les autres macros les unes après les autres.
Je ne sais pas si j'ai été tellement clair.
Je vous remercie de me répondre.
Bon WE
Astyanax
 

michel_m

XLDnaute Accro
Bonsoir,

Lorsque tu appuies sur annuler la réponse de la méthode renvoie 'false'

nom_fichier=application.getopenfilename('*.xls')
ifnom_fichier=false then

msgbox ' aucun fichier sélectionné'
.....ta procédure Exit sub par exemple
end if

A+
Michel_M
 
A

Astyanax

Guest
Bonsoir, merci pour la réponse.
C'est effectivement ce que j'ai fait mais je retourne à ma macro de lancement qui lance la macro suivante et cette macro suivante doit traiter le fichier ouvert.
Comme il ne le trouve pas, j'obtiens une erreur d'exécution (1004)
Astyanax
 
M

Mytå

Guest
Bonsoir le forum

Sans tester avec un boolean

Public Annulation As Boolean

Sub Macro1()

Dim Nom_Fichier
Annulation = False

Nom_Fichier = Application.GetOpenFilename('Fichier Excel (*.xls), *.xls')
If Nom_Fichier = False Then Annulation = True

Call Macro2
Call Macro3

End Sub

Sub Macro2()
If Annulation = True Then Exit Sub
End Sub

Sub Macro3()
If Annulation = True Then Exit Sub
End Sub

Myta
 
A

Astyanax

Guest
Bonjour à tout le forum et merci Myta pour ta réponse.
Ou places-tu 'Public Annulation As Boolean' ? dans la macro de lancement ?
Ma macro d'ouverture de fichier est une macro lancée par la macro de lancement qui lancera normalement après récupération du fichier une autre macro pour traitement.
Idem pour le placement de 'Call Macro2' et 'Call Macro3', font-ils partie du If de Macro 1 ? ou sont-ils les suites logiques du fichier de lancement ?
Merci de me répondre
Bon WE à tous
Astyanax
 
A

Astyanax

Guest
Re-bonjour Myta et tout le forum
Je viens de relire ton mail et 'Annulation', je dois la déclarer comme 'Public' afin qu'elle soit vue par toutes les procédures suivantes.
Je pense que dans ce cas, je ne dois plus avoir de pb.
Bon WE
Astyanax
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Astyanax, mes chers vieux copains Mytå et Michel, le Forum

Non pas que la suggestion de Mytå n'est pas bonne, bien au contraire, mais je pense que la réponse de Michel suffit amplement pour gérer 'GetOpenFilename'.

La seule chose c'est que tu n'as pas du bien l'interpréter.

Mettre une Boolean Publique agissant en tant que verrou est un peu disproportionné à mon sens, un simple Exit Sub bien placé devrait suffir.


Sub GetOpenFileTesting()
Dim Nom_Fichier
Dim Wkb As Workbook

Nom_Fichier = Application.GetOpenFilename('Fichier Excel (*.xls), *.xls')
   
If Nom_Fichier = False Then Exit Sub

Set Wkb = Workbooks.Open(Nom_Fichier)
Call Macro1(Wkb)
Call Macro2(Wkb)

End Sub

Sub Macro1(Wkb As Workbook)
MsgBox 'Traitement Macro 1 sur ' & Wkb.Name
End Sub

Sub Macro2(Wkb As Workbook)
MsgBox 'Traitement Macro 2 sur ' & Wkb.Worksheets(1).Name
End Sub

(A noter que je passe l'Object WorkBook Wkb en argument pour les sous Sub)

Bon Week End
[ol]@+Thierry[/ol]

EDITION !!!

Petit souci de smileys impromptus dans la mise en page lol

Message édité par: _Thierry, à: 22/04/2006 16:21
 
A

Astyanax

Guest
Re-Re-Bonjour et merci _Thierry pour ta réponse.
Je venais sur ce forum pour signaler que la réponse proposée par Myta fonctionnait parfaitement.
J'essaierai ta solution quand je l'aurai digérée.
Ma macro de lancement est peut être mal faite mais son but est de lancer les différentes procédure les unes derriere les autres.
Dans ta solution _Thierry, je comprends que c'est la procédure 'GetOpenFileTesting' qui va lancer les macro 1 et macro 2.
Je ne sais pas si c'est une erreur d'interprétation mais dans mon cas, après récupération du fichier, je retourne à ma macro de lancement pour lancer la procédure suivante qui est une procédure de traitement du fichier récupéré. Traitement s'il y a lieu car si annulation, je veux tout arrêter.
Merci de m'avoir lu et merci pour vos réponses.
Bon WE
Astyanax
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia