Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problème avec .Refresh BackgroundQuery:=False (essai no 2 :-))

994 views
Skip to first unread message

Fabrice

unread,
Nov 14, 2002, 4:24:42 PM11/14/02
to
Rebonjour à tous,

Je dois importer tous les fichiers textes (données séparées par un
point-virgule) d'un
dossier dans un classeur Excel. J'ai créé une procédure qui importe les
fichiers textes un après l'autre dans une feuille de calcul Excel. La
procédrue fonctionne, mais parfois elle se plante à l'instruction .Refresh
BackgroundQuery:=False (mais ce n'est pas général) et je ne peux plus rien
faire.

Voici la procédure que j'ai créé avec Excel 2000 (je vous l'ai mise en
entier, mais le problème arrive assez vite) :

Public Const STRCHEMIN As String = "E:\Fichiers ASCII"

Sub ImportationASCII()
Dim strFichier As String
Dim lngNbEnreg As Long
Dim maFeuil As Worksheet
Dim feuilListe As Worksheet
Dim feuilImport As Worksheet
Dim monClasseur As Workbook

Set monClasseur = ThisWorkbook
Set feuilListe = ThisWorkbook.Worksheets.Add

feuilListe.Name = "Liste"

'Prend le premier fichier texte
strFichier = Dir(STRCHEMIN & "\" & "*.txt")

Do Until strFichier = ""
Set feuilImport = ThisWorkbook.Worksheets.Add

'Importation via Donnée - Externe
With feuilImport.QueryTables.Add(Connection:="TEXT;" & STRCHEMIN &
"\" & strFichier, Destination:=Range("A1"))
.FieldNames = False
.TextFilePlatform = xlWindows
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileSemicolonDelimiter = True

'PROBLEME A CETTE INSTRUCTION
'********************************
.Refresh BackgroundQuery:=False
End With

lngNbEnreg = feuilListe.Range("A1").CurrentRegion.Rows.Count + 1

feuilListe.Activate
If lngNbEnreg = 2 Then
If Range("A1") = "" Then
lngNbEnreg = 1
End If
End If

feuilImport.Activate
feuilImport.UsedRange.Copy
feuilListe.Activate
Cells(lngNbEnreg, 1).PasteSpecial Paste:=xlPasteValues
Range("A1").Select
Application.CutCopyMode = False

Application.DisplayAlerts = False
feuilImport.Delete
Application.DisplayAlerts = True

strFichier = Dir
Loop
End Sub 'Merci d'avoir lu jusqu'ici


Si vous avez une idée pour remédier au problème ou une autre méthode,
n'hésitez pas, car là je sèche.

Merci d'avance de votre aide et j'espère à bientôt

Cordiales salutations
Fabrice


isabelle

unread,
Nov 14, 2002, 9:33:35 PM11/14/02
to
Bonsoir Fabrice,

en recherchant sur l'aide de la feuille de calcul avec le mot "BackgroundQuery"

on nous propose la rubrique :
«Création de macros Visual Basic pour extraire des données externes»
je trouve ça très bizarre de trouver cette info. dans l'aide de la feuille au
lieu la de trouver dans l'aide de visual basic mais en tout cas, au bas de
cette rubrique il y a la remarque suivante :

Remarque Lors de l'enregistrement d'une macro comprenant une requête,
Microsoft Excel ne peut pas exécuter la requête en arrière-plan, même si vous
avez sélectionné cette option. Pour modifier la macro afin qu'elle s'exécute en
arrière-plan, modifiez l'instruction "BackgroundQuery := False" en
"BackgroundQuery := True" dans l'éditeur Visual Basic.

en espérant avoir pu t'aider.
cordialement
isabelle


Fabrice a écrit :

Fabrice

unread,
Nov 15, 2002, 3:00:47 AM11/15/02
to
Bonjour Isabelle,

Merci d'avoir pris le temps de lire ce long message.

Je vais tester ça dès que ça plante et je te tiens au courant.

A+ et cordiales salutations
Fabrice

"isabelle" <as.isabel...@videotron.ca> a écrit dans le message de
news: 3DD45CFE...@videotron.ca...

Fabrice

unread,
Nov 15, 2002, 10:04:59 AM11/15/02
to
Rebonjour,

J'en sais plus sur mon problème, car j'ai pu l'identifier. Je vous remets un
extrait de ma question :

Je dois importer tous les fichiers textes (données séparées par un
point-virgule) d'un dossier dans un classeur Excel. J'ai créé une procédure
qui importe les fichiers textes un après l'autre dans une feuille de calcul

Excel. La procédure fonctionne, mais parfois elle se plante à l'instruction
.Refresh BackgroundQuery:=False

En fait, la procédure plante lorsque j'essaie d'importer un fichier texte
vide : elle plante à l'instruction .Refresh .BackgroundQuery:=False, ce qui
est logique.

Mais ensuite, la procédure continue à planter même si je la relance avec des
fichiers textes contenant des données. Alors comment faire pour
réinitialiser la connexion QueryTables.

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & STRCHEMIN &


"\" & strFichier, Destination:=Range("A1"))
.FieldNames = False
.TextFilePlatform = xlWindows
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileSemicolonDelimiter = True

'PROBLEME A CETTE INSTRUCTION
'********************************
.Refresh 'BackgroundQuery:=False
End With

Si quelqu'un a un tuyau... n'hésitez pas, parce que là... je sens qu'il faut
que j'aille faire un squash pour évacuer la tension :-)

Merci de votre aide

Cordiales salutations
Fabrice

"Fabrice" <ze...@isuisse.com> a écrit dans le message de news:
3dd4a9b2$1...@news.swissonline.ch...

isabelle

unread,
Nov 15, 2002, 11:00:13 AM11/15/02
to
Bonjour Fabrice,

si tu ajoute la commande

On Error Resume Next

juste avant le .Refresh

est ce que ça résout le problème ?

isabelle

Fabrice a écrit :

Fabrice

unread,
Nov 15, 2002, 11:31:22 AM11/15/02
to
Merci de ta réponse Isabelle,

Oui j'ai déjà essayé et même avec un on error goto 0 après, mais que neni
:-(

Merci quand même
Fabrice

"isabelle" <as.isabel...@videotron.ca> a écrit dans le message de

news: 3DD51A0D...@videotron.ca...

0 new messages