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.
 

samimi94

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

Bonjour Wilfried_42,

La macro est celle que m'avait fourni Kjin Hier :

Code:
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True
If ActiveCell.Row = 65500 Then
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
Application.ScreenUpdating = True

Nous avons testé avec du texte simple il n'y a pas de message d'erreurs mais il y en a un avec mon fichier d'origine, que je ne peux pas mettre en ligne pour des raisons de confidentialités (il fait plus de 175 000 lignes).
D'après ce que j'ai pu voir il faut appliquer la fonction EOF que je n'arrive pas à adapter à la macro de Kjin.

Sur le WEB j'ai trouvé ça :

Code:
Sub ModifFichierTexte()
Dim Tbl()
Dim I As Integer
'ouvre le fichier texte en lecture
Open "C:\Test.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #1, Tbl(I)
Loop
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:\Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Next I
Close #1
Erase Tbl
End Sub

Merci pour votre aide.

Samimi.
 

JCGL

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

Bonjour à tous,
Salut Wil,

J'ai eu le même message d'erreur alors que le code de Kjin :) est tip-top
J'ai rajouté un Application.DisplayAlerts = False
Aussitôt remis à True après "l'erreur"

A+
 

JCGL

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

Bonjour à tous,

Peux-tu déposer de nouveau le code que tu utilises ?

J'ai fait l'essai sur 200 000 lignes TXT (équivalent à CSV) et le code de Kjin m'a bien créé les trois feuilles.

A+
 

samimi94

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

Re,

Le code que j'utilise est celui que j'ai mis en ligne plus haut dans ce même fil.

Il me crée bien les trois feuilles, comme je l'ait dit auparavant, le résultat final est bon, j'obtiens bien ce que je souhaite, mais ce msgbox apparait à chaque fois à la fin de l'execution de la macro.
En somme il ne parvient pas à détecter la fin du fichier txt.

Quand je fais un débogage, il me met la ligne "Line Input #Lecture, Resultat
" en surbrillance, je ne sais pas ce que ça veut dire.
Par contre quand je fais le test avec un fichier autre je n'ai pas ce msgbox.
 

samimi94

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

JCGL,

Oups, pardon, je le remets ci-dessous :

Code:
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True
If ActiveCell.Row = 65500 Then
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
Application.ScreenUpdating = True
 

JCGL

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

Bonjour à tous,

Voici le code que j'ai "arrangé" :
Code:
Option Explicit 'd'après Bernie Detrick sur .... et Kjin sur XLD ;-)

Sub Fichier_TXT_Import()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Dim T

Cells.Clear
Cells(1, 1).Select
Chemin = ThisWorkbook.Path & "\" & "Importe_TXT.Ficihier_Test.txt"
'Chemin = Application.GetOpenFilename
If Chemin = "" Then End
T = Timer
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
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
ActiveSheet.Name = "F2"
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close

MsgBox "Importation réalisée en " & Format(Timer() - T, "#0") & " seconde(s)"

     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

JCGL,

Avant tout merci pour ta contribution.
Alors, j'ai testé la macro jointe que tu as arrangé.

Je n'ai pas eu l'occasion d'aller au bout de son execution car j'ai le message d'erreur suivant :

Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencés ou un classeur référencé par VB.

Au débogage il me met en surbrillance la ligne "ActiveSheet.Name = "F2", je l'ai donc modifié en Feuil2, mais j'ai toujours le même message !

As-tu une idée ?
 

JCGL

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

Bonjour à tous,

Mets en Rem la ligne en ajoutant un ' devant ActiveSheet.Name = "F2" pour avoir 'ActiveSheet.Name = "F2"

Il est évidement que le code est à adapter

A+
 

samimi94

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

JCGL,

En effet en le mettant en commentaire et non plus en syntaxe je n'ai plus le problème de même nom de feuille.
Cependant mon msgbox du départ et réapparût.

Tant pis, je me contenterai de faire FIN à chaque fois.

Merci encore pour toute votre aide qui m'a permis d'avancer dans mon projet.
 

samimi94

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

Re JCGL,

Le msgbox de départ est cette fameuse alerte : l'entrée dépasse la fin du fichier,

Ensuite je dois cliquer sur FIN ou Débogage, or quand ja fais FIN j'ai bien le résultat attendu, alors je voulais me passer de cette alerte.
 

Discussions similaires

Statistiques des forums

Discussions
312 772
Messages
2 091 977
Membres
105 135
dernier inscrit
DanielM69