(vba) vérifier lancement application

Le
j-pascal
Bonjour,

Depuis un UF, je lance un programme externer comme ceci :

'-
Private Sub Progr_Click()
Shell ("C:MonProgramme.exe")
End Sub
'-

Question 1 :
Est-il possible d'ajouter une ou deux lignes de code pour vérifier si le
programme est déjà lancé ?

Question 2 :
Si le chemin d'accès au programme a été modifié, j'ai ajouté un "On error
resume Next", la forme qui suit est-elle correcte (j'ai un doute entre l'
ExitSub et le EndSub) ?

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou qqch du
genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que veut dire
CrLf (impossible à mémoriser pour moi !) ?

Merci d'avance pour vos lumières,

'--
Private Sub Progr_Click()

On Error Resume Next
Shell ("C:MonProgramme.exe")

MsgBox "Option invalide depuis votre session !" & Chr(10) & Chr(10) & _
"(Ouvrez MonProgramme autrement)", vbOKOnly + vbInformation,
"Echec"
Unload MenuPublic
Exit Sub

End Sub
'--

Cordialement,

JP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #5388461
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie aux
anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au début de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début de ligne
suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa valeur chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la mémorisation.

--
--
@+
;o)))

j-pascal
Le #5388441
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la grande
précision. Je pense avoir maintenant les moyens de me souvenir de ces
acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie aux
anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au début de
ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début de
ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa valeur
chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la mémorisation.

--
--
@+
;o)))





Philippe.R
Le #5387511
Bonsoir,
On peut aussi préférer à vbcrlf, vbnewline, comme équivalent plus explicite.
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la grande
précision. Je pense avoir maintenant les moyens de me souvenir de ces
acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie aux
anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au début de
ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début de
ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa valeur
chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la mémorisation.

--
--
@+
;o)))








j-pascal
Le #5387271
Bonjour Philippe,

Merci ! J'ai déjà mobilisé qq neurones pour mémoriser l'acronyme complet
depuis la réponse de Modeste, mais je note quand même ta proposition ;-)

Quand je pense que cela était la question "subsidiaire" :o)

@+

JP

PS : Quand il n'y a pas de réponse à une question (mes 3 derniers posts
n'ont pas eu bcp de succès ...), faut-il penser :
- Il n'y a pas de réponse.
- Il y en a une, mais, même les grosses pointures ne l'ont pas encore trouvé
...
- La question est tellement stupide qu'il est inutile d'ajouter une ligne au
fil pour le faire comprendre à l'auteur ...
- L'auteur a fait une remarque jugée "indélicate" à son dernier
interlocuteur ... et par solidarité ...

?

"Philippe.R"
Bonsoir,
On peut aussi préférer à vbcrlf, vbnewline, comme équivalent plus
explicite.
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la grande
précision. Je pense avoir maintenant les moyens de me souvenir de ces
acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie
aux anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf
ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au début
de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début de
ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa valeur
chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la mémorisation.

--
--
@+
;o)))











Philippe.R
Le #5091571
Bonsoir Jean-Pascal,
Dans le cas d'espèce, s'il n'y a pas eu de réponse aux 2 principales
questions de ton message originel, c'est peut être tout simplement parce que
l'un ou l'autre se sentait le neurone un peu trop fatigué pour se pencher
dessus avec le sérieux que ça mérite.

pour la question 2, si ton code est bien de ce type :
'--------
Private Sub Progr_Click()

On Error Resume Next
Shell ("C:MonProgramme.exe")

MsgBox "Option invalide depuis votre session !" & Chr(10) & Chr(10) & _
"(Ouvrez MonProgramme autrement...)", vbOKOnly + vbInformation,
"Echec"
Unload MenuPublic
Exit Sub

End Sub
'--------
l'instruction Exit Sub, parfaitement correcte par ailleurs pour sortir de la
procédure, est inutile puisqu'aucune ligne de code ne suit avant le End Sub.

pour le 1, je ne connais pas vraiment de réponse formelle, mais je
chercherai du côté de l'interception de l'erreur provoquée quand le chemin
n'est pas le bon (tu peux par exemple faire un essai en repérant le numéro
d'erreur indiqué dans le message et faire un test sur ce numéro pour ensuite
proposer un deuxième mode de traitement)
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:u0E$
Bonjour Philippe,

Merci ! J'ai déjà mobilisé qq neurones pour mémoriser l'acronyme complet
depuis la réponse de Modeste, mais je note quand même ta proposition ;-)

Quand je pense que cela était la question "subsidiaire" :o)

@+

JP

PS : Quand il n'y a pas de réponse à une question (mes 3 derniers posts
n'ont pas eu bcp de succès ...), faut-il penser :
- Il n'y a pas de réponse.
- Il y en a une, mais, même les grosses pointures ne l'ont pas encore
trouvé ...
- La question est tellement stupide qu'il est inutile d'ajouter une ligne
au fil pour le faire comprendre à l'auteur ...
- L'auteur a fait une remarque jugée "indélicate" à son dernier
interlocuteur ... et par solidarité ...

?

"Philippe.R"
Bonsoir,
On peut aussi préférer à vbcrlf, vbnewline, comme équivalent plus
explicite.
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la grande
précision. Je pense avoir maintenant les moyens de me souvenir de ces
acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie
aux anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf
ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au début
de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début de
ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa valeur
chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la
mémorisation.

--
--
@+
;o)))














j-pascal
Le #5090761
Bonsoir Philippe,

Merci ;-)

Je note ta réponse concernant le "Exit Sub" (je me doutais qu'il y avait
qqch qui n'allait pas dans mon code peut-être parce qu'en général je traite
la deuxième condition !).

Pour la gestion d'erreur, j'ai effectivement inséré un test conditionnel
vérifiant la validité du chemin d'accès. Je ne l'ai pas mis pour faire plus
"léger"...
Par contre, je ne comprends pas ta proposition d'identifier le numéro
d'erreur !
Initialement j'avais mis un "on error resume next" mais j'ai eu un doute,
car je voulais mettre 2 instructions derrière (Un MsgBox et un Exit Sub) et
finalement j'ai opté pour un On error GoTo ... Il paraît que c'est plus
lourd et que ça complique la lecture du code ??

Pour revenir à ton numéro d'erreur, si le chemin n'existe pas, ça génère une
erreur, donc pour moi, un On Error "devrait" suffire !?

@+

JP

"Philippe.R"
Bonsoir Jean-Pascal,
Dans le cas d'espèce, s'il n'y a pas eu de réponse aux 2 principales
questions de ton message originel, c'est peut être tout simplement parce
que l'un ou l'autre se sentait le neurone un peu trop fatigué pour se
pencher dessus avec le sérieux que ça mérite.

pour la question 2, si ton code est bien de ce type :
'--------
Private Sub Progr_Click()

On Error Resume Next
Shell ("C:MonProgramme.exe")

MsgBox "Option invalide depuis votre session !" & Chr(10) & Chr(10) & _
"(Ouvrez MonProgramme autrement...)", vbOKOnly + vbInformation,
"Echec"
Unload MenuPublic
Exit Sub

End Sub
'--------
l'instruction Exit Sub, parfaitement correcte par ailleurs pour sortir de
la procédure, est inutile puisqu'aucune ligne de code ne suit avant le End
Sub.

pour le 1, je ne connais pas vraiment de réponse formelle, mais je
chercherai du côté de l'interception de l'erreur provoquée quand le chemin
n'est pas le bon (tu peux par exemple faire un essai en repérant le numéro
d'erreur indiqué dans le message et faire un test sur ce numéro pour
ensuite proposer un deuxième mode de traitement)
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:u0E$
Bonjour Philippe,

Merci ! J'ai déjà mobilisé qq neurones pour mémoriser l'acronyme complet
depuis la réponse de Modeste, mais je note quand même ta proposition ;-)

Quand je pense que cela était la question "subsidiaire" :o)

@+

JP

PS : Quand il n'y a pas de réponse à une question (mes 3 derniers posts
n'ont pas eu bcp de succès ...), faut-il penser :
- Il n'y a pas de réponse.
- Il y en a une, mais, même les grosses pointures ne l'ont pas encore
trouvé ...
- La question est tellement stupide qu'il est inutile d'ajouter une ligne
au fil pour le faire comprendre à l'auteur ...
- L'auteur a fait une remarque jugée "indélicate" à son dernier
interlocuteur ... et par solidarité ...

?

"Philippe.R" news:
Bonsoir,
On peut aussi préférer à vbcrlf, vbnewline, comme équivalent plus
explicite.
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la
grande précision. Je pense avoir maintenant les moyens de me souvenir
de ces acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie
aux anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf
ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au début
de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début de
ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa valeur
chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la
mémorisation.

--
--
@+
;o)))

















Philippe.R
Le #5088371
Bonsoir,
Voici un exemple de gestion d'erreur sur son numéro :

Sub Macro1()
'
On Error Resume Next
Workbooks.Open Filename:= _
"C:RauletDocumentsExcelMPFE71205_essais.xls"
If Err() = 1004 Then

MsgBox "y'a de la mille quatre dans l'air"

End If
End Sub

Le chemin et le fichier n'existant pas, je génère une erreur 1004 (c'est le
message standard d'Excel qui le dit en l'absence de l'instruction On Error
Resume Next)
On neutralise ce message standard avec la fameuse instruction On Error
Resume Next, puis on indique au programme quoi faire dans le cas où cette
erreur est générée.

Pour les GoTo, AMHA, ce sont surtout les instructions de type imbriquées qui
sont redoutables ; un GoTo ça va, deux GoTo, commencent les dégâts !
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonsoir Philippe,

Merci ;-)

Je note ta réponse concernant le "Exit Sub" (je me doutais qu'il y avait
qqch qui n'allait pas dans mon code peut-être parce qu'en général je
traite la deuxième condition !).

Pour la gestion d'erreur, j'ai effectivement inséré un test conditionnel
vérifiant la validité du chemin d'accès. Je ne l'ai pas mis pour faire
plus "léger"...
Par contre, je ne comprends pas ta proposition d'identifier le numéro
d'erreur !
Initialement j'avais mis un "on error resume next" mais j'ai eu un doute,
car je voulais mettre 2 instructions derrière (Un MsgBox et un Exit Sub)
et finalement j'ai opté pour un On error GoTo ... Il paraît que c'est plus
lourd et que ça complique la lecture du code ??

Pour revenir à ton numéro d'erreur, si le chemin n'existe pas, ça génère
une erreur, donc pour moi, un On Error "devrait" suffire !?

@+

JP

"Philippe.R"
Bonsoir Jean-Pascal,
Dans le cas d'espèce, s'il n'y a pas eu de réponse aux 2 principales
questions de ton message originel, c'est peut être tout simplement parce
que l'un ou l'autre se sentait le neurone un peu trop fatigué pour se
pencher dessus avec le sérieux que ça mérite.

pour la question 2, si ton code est bien de ce type :
'--------
Private Sub Progr_Click()

On Error Resume Next
Shell ("C:MonProgramme.exe")

MsgBox "Option invalide depuis votre session !" & Chr(10) & Chr(10) &
_
"(Ouvrez MonProgramme autrement...)", vbOKOnly + vbInformation,
"Echec"
Unload MenuPublic
Exit Sub

End Sub
'--------
l'instruction Exit Sub, parfaitement correcte par ailleurs pour sortir de
la procédure, est inutile puisqu'aucune ligne de code ne suit avant le
End Sub.

pour le 1, je ne connais pas vraiment de réponse formelle, mais je
chercherai du côté de l'interception de l'erreur provoquée quand le
chemin n'est pas le bon (tu peux par exemple faire un essai en repérant
le numéro d'erreur indiqué dans le message et faire un test sur ce numéro
pour ensuite proposer un deuxième mode de traitement)
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:u0E$
Bonjour Philippe,

Merci ! J'ai déjà mobilisé qq neurones pour mémoriser l'acronyme complet
depuis la réponse de Modeste, mais je note quand même ta proposition ;-)

Quand je pense que cela était la question "subsidiaire" :o)

@+

JP

PS : Quand il n'y a pas de réponse à une question (mes 3 derniers posts
n'ont pas eu bcp de succès ...), faut-il penser :
- Il n'y a pas de réponse.
- Il y en a une, mais, même les grosses pointures ne l'ont pas encore
trouvé ...
- La question est tellement stupide qu'il est inutile d'ajouter une
ligne au fil pour le faire comprendre à l'auteur ...
- L'auteur a fait une remarque jugée "indélicate" à son dernier
interlocuteur ... et par solidarité ...

?

"Philippe.R" news:
Bonsoir,
On peut aussi préférer à vbcrlf, vbnewline, comme équivalent plus
explicite.
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la
grande précision. Je pense avoir maintenant les moyens de me souvenir
de ces acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie
aux anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf
ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au
début de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début
de ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa valeur
chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la
mémorisation.

--
--
@+
;o)))




















j-pascal
Le #5084941
Bonsoir Philippe,

Merci pour cette explication. Néanmoins je reviens à ma remarque précédente
: A quoi sert de gérer une erreur en particulier (1004 en l'occurence) alors
que, sauf erreur de ma part, le code se comporte de la même façon si on
supprime : "If Err() = 1004 Then" (et le "End If" !) ?
J'imagine que si par hasard un code génére plusieurs erreurs (??), il doit y
avoir une préséance dans le traitement de ces dernières donc ne vaut-il pas
mieux traiter l'erreur à sa "racine" (je veux dire : pas par rapport à un
numéro précis, pas avec un test conditionnel sur le 1004 ...) ?

@+

JP


"Philippe.R" Oa%
Bonsoir,
Voici un exemple de gestion d'erreur sur son numéro :

Sub Macro1()
'
On Error Resume Next
Workbooks.Open Filename:= _
"C:RauletDocumentsExcelMPFE71205_essais.xls"
If Err() = 1004 Then

MsgBox "y'a de la mille quatre dans l'air"

End If
End Sub

Le chemin et le fichier n'existant pas, je génère une erreur 1004 (c'est
le message standard d'Excel qui le dit en l'absence de l'instruction On
Error Resume Next)
On neutralise ce message standard avec la fameuse instruction On Error
Resume Next, puis on indique au programme quoi faire dans le cas où cette
erreur est générée.

Pour les GoTo, AMHA, ce sont surtout les instructions de type imbriquées
qui sont redoutables ; un GoTo ça va, deux GoTo, commencent les dégâts !
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonsoir Philippe,

Merci ;-)

Je note ta réponse concernant le "Exit Sub" (je me doutais qu'il y avait
qqch qui n'allait pas dans mon code peut-être parce qu'en général je
traite la deuxième condition !).

Pour la gestion d'erreur, j'ai effectivement inséré un test conditionnel
vérifiant la validité du chemin d'accès. Je ne l'ai pas mis pour faire
plus "léger"...
Par contre, je ne comprends pas ta proposition d'identifier le numéro
d'erreur !
Initialement j'avais mis un "on error resume next" mais j'ai eu un doute,
car je voulais mettre 2 instructions derrière (Un MsgBox et un Exit Sub)
et finalement j'ai opté pour un On error GoTo ... Il paraît que c'est
plus lourd et que ça complique la lecture du code ??

Pour revenir à ton numéro d'erreur, si le chemin n'existe pas, ça génère
une erreur, donc pour moi, un On Error "devrait" suffire !?

@+

JP

"Philippe.R" news:
Bonsoir Jean-Pascal,
Dans le cas d'espèce, s'il n'y a pas eu de réponse aux 2 principales
questions de ton message originel, c'est peut être tout simplement parce
que l'un ou l'autre se sentait le neurone un peu trop fatigué pour se
pencher dessus avec le sérieux que ça mérite.

pour la question 2, si ton code est bien de ce type :
'--------
Private Sub Progr_Click()

On Error Resume Next
Shell ("C:MonProgramme.exe")

MsgBox "Option invalide depuis votre session !" & Chr(10) & Chr(10) &
_
"(Ouvrez MonProgramme autrement...)", vbOKOnly + vbInformation,
"Echec"
Unload MenuPublic
Exit Sub

End Sub
'--------
l'instruction Exit Sub, parfaitement correcte par ailleurs pour sortir
de la procédure, est inutile puisqu'aucune ligne de code ne suit avant
le End Sub.

pour le 1, je ne connais pas vraiment de réponse formelle, mais je
chercherai du côté de l'interception de l'erreur provoquée quand le
chemin n'est pas le bon (tu peux par exemple faire un essai en repérant
le numéro d'erreur indiqué dans le message et faire un test sur ce
numéro pour ensuite proposer un deuxième mode de traitement)
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:u0E$
Bonjour Philippe,

Merci ! J'ai déjà mobilisé qq neurones pour mémoriser l'acronyme
complet depuis la réponse de Modeste, mais je note quand même ta
proposition ;-)

Quand je pense que cela était la question "subsidiaire" :o)

@+

JP

PS : Quand il n'y a pas de réponse à une question (mes 3 derniers posts
n'ont pas eu bcp de succès ...), faut-il penser :
- Il n'y a pas de réponse.
- Il y en a une, mais, même les grosses pointures ne l'ont pas encore
trouvé ...
- La question est tellement stupide qu'il est inutile d'ajouter une
ligne au fil pour le faire comprendre à l'auteur ...
- L'auteur a fait une remarque jugée "indélicate" à son dernier
interlocuteur ... et par solidarité ...

?

"Philippe.R" news:
Bonsoir,
On peut aussi préférer à vbcrlf, vbnewline, comme équivalent plus
explicite.
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la
grande précision. Je pense avoir maintenant les moyens de me souvenir
de ces acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par
analogie aux anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf
ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au
début de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début
de ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa
valeur chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la
mémorisation.

--
--
@+
;o)))























Philippe.R
Le #5383871
Bonjour,
L'erreur 1004 n'est prise ici qu'à titre d'exemple (facile à produire).
L'utilisation du numéro de l'erreur n'a bien sur d'intérêt par rapport à une
simple instruction On Error Resume Next que si différentes erreurs sont
susceptibles de se produire lors du déroulement de la procédure et qu'on
entends appliquer un traitement particulier à chacune d'elles.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"j-pascal" news:
Bonsoir Philippe,

Merci pour cette explication. Néanmoins je reviens à ma remarque
précédente : A quoi sert de gérer une erreur en particulier (1004 en
l'occurence) alors que, sauf erreur de ma part, le code se comporte de la
même façon si on supprime : "If Err() = 1004 Then" (et le "End If" !) ?
J'imagine que si par hasard un code génére plusieurs erreurs (??), il doit
y avoir une préséance dans le traitement de ces dernières donc ne vaut-il
pas mieux traiter l'erreur à sa "racine" (je veux dire : pas par rapport à
un numéro précis, pas avec un test conditionnel sur le 1004 ...) ?

@+

JP


"Philippe.R" Oa%
Bonsoir,
Voici un exemple de gestion d'erreur sur son numéro :

Sub Macro1()
'
On Error Resume Next
Workbooks.Open Filename:= _
"C:RauletDocumentsExcelMPFE71205_essais.xls"
If Err() = 1004 Then

MsgBox "y'a de la mille quatre dans l'air"

End If
End Sub

Le chemin et le fichier n'existant pas, je génère une erreur 1004 (c'est
le message standard d'Excel qui le dit en l'absence de l'instruction On
Error Resume Next)
On neutralise ce message standard avec la fameuse instruction On Error
Resume Next, puis on indique au programme quoi faire dans le cas où cette
erreur est générée.

Pour les GoTo, AMHA, ce sont surtout les instructions de type imbriquées
qui sont redoutables ; un GoTo ça va, deux GoTo, commencent les dégâts !
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonsoir Philippe,

Merci ;-)

Je note ta réponse concernant le "Exit Sub" (je me doutais qu'il y avait
qqch qui n'allait pas dans mon code peut-être parce qu'en général je
traite la deuxième condition !).

Pour la gestion d'erreur, j'ai effectivement inséré un test conditionnel
vérifiant la validité du chemin d'accès. Je ne l'ai pas mis pour faire
plus "léger"...
Par contre, je ne comprends pas ta proposition d'identifier le numéro
d'erreur !
Initialement j'avais mis un "on error resume next" mais j'ai eu un
doute, car je voulais mettre 2 instructions derrière (Un MsgBox et un
Exit Sub) et finalement j'ai opté pour un On error GoTo ... Il paraît
que c'est plus lourd et que ça complique la lecture du code ??

Pour revenir à ton numéro d'erreur, si le chemin n'existe pas, ça génère
une erreur, donc pour moi, un On Error "devrait" suffire !?

@+

JP

"Philippe.R" news:
Bonsoir Jean-Pascal,
Dans le cas d'espèce, s'il n'y a pas eu de réponse aux 2 principales
questions de ton message originel, c'est peut être tout simplement
parce que l'un ou l'autre se sentait le neurone un peu trop fatigué
pour se pencher dessus avec le sérieux que ça mérite.

pour la question 2, si ton code est bien de ce type :
'--------
Private Sub Progr_Click()

On Error Resume Next
Shell ("C:MonProgramme.exe")

MsgBox "Option invalide depuis votre session !" & Chr(10) & Chr(10)
& _
"(Ouvrez MonProgramme autrement...)", vbOKOnly + vbInformation,
"Echec"
Unload MenuPublic
Exit Sub

End Sub
'--------
l'instruction Exit Sub, parfaitement correcte par ailleurs pour sortir
de la procédure, est inutile puisqu'aucune ligne de code ne suit avant
le End Sub.

pour le 1, je ne connais pas vraiment de réponse formelle, mais je
chercherai du côté de l'interception de l'erreur provoquée quand le
chemin n'est pas le bon (tu peux par exemple faire un essai en repérant
le numéro d'erreur indiqué dans le message et faire un test sur ce
numéro pour ensuite proposer un deuxième mode de traitement)
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:u0E$
Bonjour Philippe,

Merci ! J'ai déjà mobilisé qq neurones pour mémoriser l'acronyme
complet depuis la réponse de Modeste, mais je note quand même ta
proposition ;-)

Quand je pense que cela était la question "subsidiaire" :o)

@+

JP

PS : Quand il n'y a pas de réponse à une question (mes 3 derniers
posts n'ont pas eu bcp de succès ...), faut-il penser :
- Il n'y a pas de réponse.
- Il y en a une, mais, même les grosses pointures ne l'ont pas encore
trouvé ...
- La question est tellement stupide qu'il est inutile d'ajouter une
ligne au fil pour le faire comprendre à l'auteur ...
- L'auteur a fait une remarque jugée "indélicate" à son dernier
interlocuteur ... et par solidarité ...

?

"Philippe.R" news:
Bonsoir,
On peut aussi préférer à vbcrlf, vbnewline, comme équivalent plus
explicite.
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"j-pascal" news:
Bonjour Modeste,

Merci beaucoup pour cette réponse dont j'apprécie la clarté et la
grande précision. Je pense avoir maintenant les moyens de me
souvenir de ces acronymes et de leur sens.

Bonne journée.

JP

"Modeste"
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par
analogie aux anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf
ci-dessus)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au
début de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début
de ligne suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa
valeur chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres
PC

si tu es anglophone l'acronyme est évidement une aide à la
mémorisation.

--
--
@+
;o)))


























Michel Gaboly
Le #5383801
Bonjour Modeste,

Je réagis tardivement, mais je viens à peine de lire ta prose, en fin de citation du message de Philippe, aujourd'hui à
13h25.

Je ne suis pas d'accord pour la partie Mac (comme d'hab ;-)))

Sur Mac, Chr(10) ne s'emploie absolument pas, on n'utilise seulement Chr( 13) pour passer à la ligne. Pour avoir un code
compatible Mac et Win, il existe une constante, facile à mémoriser, e t que tu n'as pas citée, vbNewLine qui correspond à
Chr(13) sur un Mac et à Chr(10) avec Windows.

C'est celle-ci que j'utilise exclusivement. On peut oublier les 3 autres, dont l'unique intérêt en pratique est
l'économie de quelques caractères.

A bientôt.


Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Question subsidiaire : Je vois que vous utiliser souvent CrLf (ou
qqch du genre) à la place de Chr (10).
Avantages / Inconvénients d'une forme plutôt que de l'autre ? Que
veut dire CrLf... (impossible à mémoriser pour moi !) ?


en fait on utilise les constantes vbCR, vbLF ou vbCRLF
vbCR est l'acronyme pour Carriage Return (Retour Chariot par analogie a ux
anciennes machines à ecrire)
constante définie égale à chr(13)
vbLF est l'acronyme pour Line Feed (Saut de ligne analogie cf ci-dessu s)
constante définie égale à chr(10)
vbCRLF est la concaténation des deux (saut de ligne et retour au dé but de ligne)

en VBA le saut de ligne ramene systématiquement le curseur en début de ligne
suivante
c'est pourquoi on utilise souvent seulement vbLF (chr(10))
il n'y a pas de différence à utiliser la constante (vbXX ou sa vale ur chr(n))

pour les utilisateurs de MAC, seul vbCRLF reste compatible entres PC

si tu es anglophone l'acronyme est évidement une aide à la mémori sation.

--
--
@+
;o)))





--
Cordialement,

Michel Gaboly
www.gaboly.com


Publicité
Poster une réponse
Anonyme