On Error Goto

cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004 - 7 juil. 2004 à 11:37
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010 - 8 juil. 2004 à 12:36
Bonjour,
en fait j'ai un tableau excel contenant dans la colonne A des noms de fichiers xls mettons 20 noms
J'ai un dossier contenant des fichiers excel mettons 10 fichiers.

Je fais un prog qui lit ligne par ligne le fichier excel et essaie d'ouvrir dans le dossier les fichiers excel. Mais vu qu'il en a 10, tous n'existent pas! (10<20)
je met donc un message d'erreur.
lequel me renvoie sous etiquette qui increment mon compteur et me renvoie juste avant le for...
La premier boucle, tout se passe bien, mais lors de la deuxieme boucle (avec for) la il m'inscrit l'erreur!

voici mon code

Sub TEST2()
Dim filepath, nomtapé, a As String
Dim i As Integer

suite:
For i = 0 To 20
nomtapé = Range("A1").Offset(i).Value
On Error GoTo re
Workbooks.Open ("c:\my music\stage\devis2" & nomtapé)
exit sub

re:
next i
goto suite

end sub

si quelqun a un coup de genie!

merci!!! :)
Valer

8 réponses

jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
7 juil. 2004 à 12:02
Salut Valer,

Ta solution me semble un peu tortueuse, moi j'aurais opté pour une solution du genre :

Sub TEST2()
    Dim filepath, nomtapé, a As String
    Dim i As Integer

    On Error Resume Next

    For i = 0 To 20
        nomtapé = Range("A1").Offset(i).Value
        Workbooks.Open ("c:\my music\stage\devis2" & nomtapé)
        If Err.Number > 0 Then
            MsgBox(nomtapé & " ne peut pas etre ouvert !")
            Err.Clear
        End If
    Next i

end sub


A+,
JP.
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
7 juil. 2004 à 12:19
merci ta solution est parfaite
Valer
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
7 juil. 2004 à 14:03
ah non g un pb!
le resume next ne vas pas car en fait si j'ouvre, apres j'ai un tas de truc a executer! et s il existe pas donc error, ben il me les execute sur le mauvais fichier!!
Valer
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
7 juil. 2004 à 14:37
Il suffit que ce que tu doit executer soit inclus dans la partie "else" du test sur l'erreur :

If Err.Number > 0 Then
MsgBox(nomtapé & " ne peut pas etre ouvert !")
Err.Clear
Else
'executer les fonctions sur le fichier ouvert !
End If

A+,
JP.
0

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

Posez votre question
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
7 juil. 2004 à 15:46
voila mon code:

Dim nomtapé, a As String

Dim i As Integer

On Error Resume Next

For i = 0 To 20
nomtapé = Range("A1").Offset(i).Value
Workbooks.Open ("c:\stage\devis" & nomtapé)
If Err.Number > 0 Then
MsgBox (nomtapé & " ne peut pas etre ouvert !")
Err.Clear

Else
la suite du progr

le probleme c que le truc arrive bien a gerer l'ouverture mais meme si le classeur que je dois traiter (donc que je vien d'ouvrir) est actif et ben ce con de prog fait toutes les operation sur l'autre fichier (celui contenant tout les noms de devis)!!
je capte vraiment pas!

Valer
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
7 juil. 2004 à 17:32
Salut,

Si tu veux faire des actions sur le nouveau workbook, il faut préciser sur quel wokbook tu travaille. Pour le faire, le plus simple est de recuperer la reference du workbook renvoyé par Workbooks.Open :

Set MonWorkbook = Workbooks.Open ("c:\stage\devis" & nomtapé)
If Err.Number > 0 Then
 MsgBox (nomtapé & " ne peut pas etre ouvert !")
 Err.Clear
Else

 ' faire qq chose avec MonWorkbook
 ' par exemple :
 MonWorkbook.Worksheets(1).Activate 

End If


Je ne suis pas très sur de ce que tu veux faire : Est-ce que tu ne voudrait pas poster un bout du code qui fait des actions sur le nouveau workbook ?
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
8 juil. 2004 à 08:14
ta solution ne tourne pas...
oui voila je veux appliquer la suite de mon programme au classeur que je vien d'ouvrir
Valer
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
8 juil. 2004 à 12:36
J'ai fait un test avec ce code et ca marche : je recupère la valeur de la cellule en A1 dans le nouveau fichier et je le place dans le workbook initial.

A+,
JP.

Public Sub ValerTest()
    Dim nomfichier As String
    Dim myWorkbook As Workbook
    Dim i As Integer
    On Error Resume Next

    For i = 1 To 10
        nomfichier = ThisWorkbook.Worksheets(1).Range("A" & i).Value
        Set myWorkbook = Workbooks.Open(nomfichier)
        If Err.Number > 0 Then
            ThisWorkbook.Worksheets(1).Range("B" & i).Value = "Impossible d'ouvrir ce fichier"
            Err.Clear
        Else
            ThisWorkbook.Worksheets(1).Range("B" & i).Value = "Ouvert !!"
            ThisWorkbook.Worksheets(1).Range("C" & i).Value = "Valeur en A1 : " & myWorkbook.Worksheets(1).Range("A1").Value
            myWorkbook.Close
        End If
    Next i
End Sub
0
Rejoignez-nous