lolo2869
Messages postés9Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention 3 mai 2007
-
3 mai 2007 à 08:59
lolo2869
Messages postés9Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention 3 mai 2007
-
3 mai 2007 à 10:35
Bonjour,
J'ai un problème avec l'instruction "on error resume next", je dois mal l'utiliser ou je n'ai pas la bibliothéque je ne sais pas ...
Où que je place l'instruction dans mon code elle n'est pas prise en compte
Exemple:
On Error Resume Next
Workbooks.Open "le chemin du fichier à ouvrir"
Si le fichier n'esiste pas, il me met l'erreur qd meme.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 mai 2007 à 09:37
Re,
Pour en revenir au problème regarde cette petite procédure.
Elle parcours les Classeurs ouvert et cherche celui que tu veux (CheminAVerifier)
Si il est déjà ouvert on l'active sinon on l'ouvre
Private Sub CommandButton1_Click()
Call ActiveClasseur("C:\Test.xls")
End Sub<hr />
Private Sub ActiveClasseur(CheminAVerifier As String)
Dim Wb As Workbook
Dim Trouve As Boolean
'pour chaque classeur ouvert
For Each Wb In Application.Workbooks
'on verifie le chemine
If Wb.Path & "\" & Wb.Name = CheminAVerifier Then
Wb.Activate
Trouve = True
Exit For
End If
Next
'si il n'a pas été trouver on l'ouvre
If Not Trouve Then Call Application.Workbooks.Open(CheminAVerifier)
End Sub , ----
[code.aspx?ID=41455 By Renfield]
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 mai 2007 à 10:18
Salut,
Utilise Dir (comme je l'avais dit dans mon premier post)
Private Sub CommandButton1_Click()
Call ActiveClasseur("C:\Test.xls")
End Sub<hr />
Private Sub ActiveClasseur(CheminAVerifier As String)
Dim Wb As Workbook
Dim Trouve As Boolean
'on verifie que le chemin existe
If Dir(CheminAVerifier) = vbNullString Then
Call MsgBox("Le chemin n'existe pas", vbCritical Or vbOKOnly)
Exit Sub
End If
'pour chaque classeur ouvert
For Each Wb In Application.Workbooks
'on verifie le chemine
If Wb.Path & "\" & Wb.Name = CheminAVerifier Then
Wb.Activate
Trouve = True
Exit For
End If
Next
'si il n'a pas été trouver on l'ouvre
If Not Trouve Then Call Application.Workbooks.Open(CheminAVerifier)
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 3 mai 2007 à 10:27
J'ai une autre piste. Peut etre n'est ce pas le code mais simplement la configuration de ton IDE. Est ce la seule erreur que tu aies gérer car tu pourrais essayé de provoquer une erreur autre part et la gérer pour voir si l'erreur est générer quand meme.
Ceque je veux dire, c'est quand si tu vas dans Outils, options... puis dans l'onglet général, dans la zone récupération d'erreur, es tu bien sur Arret sur les erreurs non gérées ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 mai 2007 à 09:16
Salut,
je rejoints [auteurdetail.aspx?ID=615490 jmfmarques](salut) pour dire qu'une gestion d'erreur pour verifier l'existence d'un fichier est un peu
pourquoi ne pas se servir de Dir ou des autres fonctions proposées . A moins que cela ne cache autre chose qu'il aurait été utile de préciser. (l'erreur aurait été utilie aussi)
@+: Ju£i?n Pensez: Réponse acceptée
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 3 mai 2007 à 09:20
Bonjour,
pour sa défense je dirais qu'apres 2-3 recherches, je vois que des exemples avec on error, je continue mais quand meme pour le trouver seul.
D'ailleurs jmf, est-il possible de "stopper" l'application de l'instruction on error. Pour etre plus clair, est ce que l'on peut spécifier la zone de code concernée par cette instruction (comme un try en java et .net je crois) et la délimité par un genre de end ou autre.
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 3 mai 2007 à 09:24
Je viens de trouver une solution de Reinfield sans le gestion d'erreur:
Langage : VB6, VBA Date ajout : 28/03/2006
Posté par Renfield[Liste]
DateMAJ : 18/01/2007
Public Declare Function
GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal lpFileName As String) As LongPublic Const INVALID_FILE_ATTRIBUTES As Long = &HFFFFFFFF
Public Function DoesExist(ByRef vsPath As String) As Boolean
DoesExist = (GetFileAttributes(vsPath) <> INVALID_FILE_ATTRIBUTES)
End Function
lolo2869
Messages postés9Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention 3 mai 2007 3 mai 2007 à 09:25
Déja, merci de vos réponses aussi rapide !
Je tiens à préciser que je suis débutant,
La différence est où entre VBA et pilotage de VBA depuis VB6?
Je travail sous excel et le logiciel VB fourni avec (ALT F11)... avec des "Forms" et du code dans des "Module".
Dans ce cas, je souhaite ouvrir un ficher s'il n'est pas déja ouvert ou alors l'activer s'il est ouvert. J'ai fait qq recherches de code sur le net et j'ai trouvé ce genre d'instructions avec trés souvant "On Error Resume Next"... et il est dit que ça permet qd meme de continuer le code en "ingnorant" l'erreur, mais moi ça me la met tjr
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 mai 2007 à 09:29
Salut,
> [auteurdetail.aspx?ID=999867 Nicko11]
Pour délimiter la zone des On Error , tu peux utiliser On Error Goto 0
Petit exemple
Dim i As Integer
On Error Resume Next
i = 60000
On Error GoTo 0
MsgBox i
i = 60000, ----
[code.aspx?ID=41455 By Renfield]
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 3 mai 2007 à 09:39
Merci jrivet, j'ai regardé l'aide pour plus d'explication sur le goto 0 parce que je voyais pas à quoi ca correspondait. Je le saurai maintenant.
Pour le pb de notre ami, as tu essayé la solution de renfield (j'espere que ca passera bien cette fois):
Public Declare Function
GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal lpFileName As String) As LongPublic
Const INVALID_FILE_ATTRIBUTES As Long = &HFFFFFFFF
Public Function DoesExist(ByRef vsPath As String) As Boolean
DoesExist = (GetFileAttributes(vsPath) <> INVALID_FILE_ATTRIBUTES)
End Function
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 3 mai 2007 à 09:47
Tu ne nous a pas dit quelle était le message d'erreur (puisque tu en reçois un malgré tout) ni précisé si tu développais directement sous VBA EXcel ou si tu pilotaire VBA Excel depuis VB6
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 mai 2007 à 09:53
Re,
> [auteurdetail.aspx?ID= 615490 jmfmarques]Désolé mais pour ca défense il a dit "Je travail sous excel et le logiciel VB fourni avec (ALT F11)"
Donc VBA
@+: =89254 Ju£i?n Pensez: Réponse acceptée
lolo2869
Messages postés9Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention 3 mai 2007 3 mai 2007 à 10:04
Je développe en VBA
Erreur:
Erreur d'éxécution '1004'
Et il dit qu'il n'arrive pas a ouvrir le fichier ....
Mais qe ce soit cette erreur ou une autre je ne comprend pas pourquoi lors de l'éxécution il ne prende pas en compte l'instruction qui lui dit de passer à la ligne suivante meme s'il y a une erreur (si l'intruction signifie bien cela)
lolo2869
Messages postés9Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention 3 mai 2007 3 mai 2007 à 10:12
jrivet, ton code fonctionne super bien, encore merci !
Je vousdrais savoir si il est possible
de ne pas avoir d'erreur si le fichier n'existe vraiment pas
et dans ce cas de dire un truc du genre: "Le fichier n'existe pas" ?