Eviter Message erreur VB à la fin d'execution d'une Macro

samimi94

XLDnaute Occasionnel
Bonjour à Tous,

Je souhaiterai savoir s'il est possible de ne pas voir afficher le message d'erreur VB à la fin de l'execution d'une macro ?
J'obtiens bien ce que je souhaite au final, mais je ne parviens pas à supprimer le msgbox "l'entrée dépasse la fin du fichier", du coup il me propose systématiquement FIN ou Débogage.
Le problème de ce message d'erreur est du au traitement d'un fichier CSV trop lourd que j'ouvre sur plusieurs Feuilles (Merci à Kjin qui m'a aidé pour avancer sur ce point). Ce fichier contient également des données binaires et non pas que du texte or je ne trouve pas la syntaxe qui pourrait supprimer cette alerte.

Slts, Samimi.
 

Lii

XLDnaute Impliqué
Re : Eviter Message erreur VB à la fin d'execution d'une Macro

Bonjour Tous,

autant que le Compteur serve à quelque chose et en évitant ré utiliser un nom déjà donné.
Pas de problème avec le code suivant :
Code:
Sub Fichier_TXT_Import()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Dim T
[B]ActiveSheet.Name = "F1"[/B]  [COLOR=SeaGreen]'pour uniformiser mais facultatif[/COLOR]
Cells.Clear
Cells(1, 1).Select
Chemin = ThisWorkbook.Path & "\" & "   .   "
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
T = Timer
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
[B]Compteur = 1[/B]
Do While Seek(Lecture) <= LOF(Lecture)
Application.DisplayAlerts = False
Line Input #Lecture, Resultat
Application.DisplayAlerts = True
ActiveCell.Value = Resultat
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
[B]Compteur = Compteur + 1[/B]
ActiveSheet.Name = "F" & [B]Compteur[/B]
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Close

MsgBox "Importation réalisée en " & Format(Timer() - T, "#0") & " seconde(s)"
[COLOR=SeaGreen]Rem suite valable seulement pour la dernière feuille ![/COLOR]
     Range("A1:L1").AutoFilter
     With Columns("A:L")
        .Sort Key1:=Range("F2"), Order1:=xlAscending, Header:=xlGuess
        .Font.Name = "Tahoma"
        .Font.Size = 8
        .Columns.AutoFit
     End With
Range("A1").Select
Application.ScreenUpdating = True
End Sub
 

samimi94

XLDnaute Occasionnel
Re : Eviter Message erreur VB à la fin d'execution d'une Macro

:) On est d'accord.

J'ai crée un nouveau fichier XLS et j'ai fait un copier coller de ta macro que j'ai plus ou moins adapté à mon cas pour qu'il puisse récupérer mon fichier csv au bon endroit.
Jusque là tout va bien, et à la fin de l'execution il me met ce msgbox. J'ai pourtant bien vu que tu avais ajouté avant l'erreur et après l'erreur :

Application.DisplayAlerts = False
Line Input #Lecture, Resultat
Application.DisplayAlerts = True

Mais ça ne change rien pour mon cas précis.

Sur le web ils est noté qu'il faut que j'utilise la fonction EOF, c'est le fil que j'ai ouvert hier quand Kjin m'a aidé mais je ne sais pas comment l'adapter à mon cas, j'ai pourtant essayé mais je ne suis pas une pro.
 

samimi94

XLDnaute Occasionnel
Re : Eviter Message erreur VB à la fin d'execution d'une Macro

Re à tous,

Le résultat est le même.
J'ai toujours le message : l'entrée dépasse la fin du fichier.
Je pense que cela vient de mon fichier CSV, mais je ne vois pas ce qui le génère.
 

samimi94

XLDnaute Occasionnel
Re : Eviter Message erreur VB à la fin d'execution d'une Macro

Re,

En fait je sais que ca vient de mon fichier CSV, mais il s'agit d'un fichier extrait d'un AS400, il arrive tel quel.

J'ai fait le test avec un fichier que j'ai fait et là il n'y avait pas d'erreurs.
Pourtant si j'ouvre le fichier d'origine directement sous excel dès lors qu'il tient dans une seule feuille, je n'ai pas de message d'erreurs.
C'est donc bien dans la macro que quelque chose coince avec les données de mon fichier, qui je le rappelle contient du texte et des données binaires :(

Est ce que par hasard tu saurais comment intégrer dans la macro l'option EOF au lieu de SEEK ?
 

samimi94

XLDnaute Occasionnel
Re : Eviter Message erreur VB à la fin d'execution d'une Macro

Re à tous,

J'ai enfin trouver la solution à mon problème.
Suite à votre aide et aux diverses recherches sur le web, voilà comment j'ai du adapter la fonction EOF :

Remplacer Do While Seek(Lecture) <= LOF(Lecture) par Do While Not EOF(Lecture) et ne pas mettre CLOSE tout seul mais CLOSE #Lecture

Plus de msgbox à la fin de l'execution de la macro.

Merci encore, car votre aide est précieuse et bonne soirée à tous.
 

kjin

XLDnaute Barbatruc
Re : Eviter Message erreur VB à la fin d'execution d'une Macro

Bonsoir, bonsoir JC et LII :)
Le compteur ne servait pas, résidu d'une macro précédente que je n'avais pas effacé :rolleyes:
J'ai enfin trouvé la solution à mon problème.
Suite à votre aide et aux diverses recherches sur le web, voilà comment j'ai du adapter la fonction EOF :
Remplacer Do While Seek(Lecture) <= LOF(Lecture)par
Do While Not EOF(Lecture) et ne pas mettre CLOSE tout seul mais CLOSE #Lecture
Tu as raison, c'est un oubli de ma part
Par contre, pour la fonction EOF, là je comprends moins bien mis à part si tes données binaires sont situées en fin de fichier, avec la fonction EOF tu quittes la procédure en ignorant les lignes suivantes.
Une autre approche en utilisant TextStream à tester
Sub Fichier_CSV_import2()
On Error Resume Next 'pour le cas où il n'y a pas de données à convertir
Dim Fso As Scripting.FileSystemObject
Dim Fle As Scripting.File
Dim Strm As Scripting.TextStream
Application.ScreenUpdating = False
Fichier = Application.GetOpenFilename
Set Fso = New Scripting.FileSystemObject
Set Fle = Fso.GetFile(Fichier)
Set Strm = Fle.OpenAsTextStream(ForReading)
With Strm
While Not .AtEndOfStream
ActiveCell.Value = .ReadLine
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1, 0).Select
End If
Wend
End With
Application.ScreenUpdating = True
End Sub
A+
kjin
 
Dernière édition:

samimi94

XLDnaute Occasionnel
Re : Eviter Message erreur VB à la fin d'execution d'une Macro

Bonsoir à tous,

Par contre, pour la fonction EOF, là je comprends moins bien mis à part si tes données binaires sont situées en fin de fichier

En effet les données binaires se trouvent bien à à la fin.

Merci pour votre contribution qui m'a permis d'obtenir un résultat super.


Bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 679
Messages
2 090 864
Membres
104 680
dernier inscrit
AvPi26