Pb Import excel

Pb Import excel - VB/VBA/VBS - Programmation

Marsh Posté le 26-04-2006 à 17:42:54    

Bonjour,
 
Le code suivant lit sur un répertoire donné tous les fichiers Excel et les importe dans une base access. Il importe plus particulièrement les onglets
"TestIndicateurs" et "Transpose".  
Contrainte lié à mon application:
Ces 2 onglets doivent être masqués. Et le code ici présent marche très bien lorsque les onglets sont visibles, mais ne fonctionne pas lorsque je masque les onglets.
J'ai donc rajouté la procédure Sub "ToutAfficher" (que j'appelle juste avant la lecture):
En utilisant le débugger pas à pas je passe bien dans l'onglet mais il me sort une erreur à la compil.
 
L'erreur provient apparemment du fait que le fichier est en lecture seule donc il ne peut pas modifier  
les onglets en masqué.
J'ai donc changé la ligne suivante:  
 
 
Set Wb = xlAppl.Workbooks.Open(FileName:=strPathToFiles, ReadOnly:=True)
en  
 
Set Wb = xlAppl.Workbooks.Open(FileName:=strPathToFiles, ReadOnly:=False)
 
 
Le programme me fait donc l'import des feuilles masquées parfaitement bien hormis un gros pb à la fin de l'import:
 
il bug sur les fichiers excel et m'ouvre la boite de dialogue suivante:
 
"Fichier désormais disponible"
"monFichier.xls" est à présent disponible pour modification.
Ouvrez le fichier en lecture-écriture pour le modifier. (choix Lecture-Ecriture/Annuler)
Et après il plante sur mes fichiers excel. Donc je tue les processus à la main.
 
 
En fait Excel réagit comme s'il y avait 2 accès concurrents sur le même fichier.  
 
Comment faire pour éviter cela ? Il ne doit pas y avoir grand chose à changer mais je ne trouve pas
 
 
Merci à tous pour votre aide
 
 
Le code:
 
Sub ToutAfficher()
 
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible = True
Next
End Sub
 
 
Sub ImportAllFiles()  
Dim strPathToFiles As String  
Dim xlAppl As Excel.Application  
Dim Wb As Excel.Workbook  
Dim onglet As String  
Dim ws As Excel.Worksheet  
Dim Repertoire As String, Fichier As String  
 
'Repertoire = "C:\Documents and Settings\dossier\"  
Repertoire = "C:\Documents and Settings\dossierOngletMasque\"
 
Fichier = Dir(Repertoire & "*.xls" )  
Do While Fichier ‹› ""  
 
Set xlAppl = CreateObject("Excel.Application" )  
strPathToFiles = Repertoire & Fichier  
 
'Supprimer enreg table T_Import_Brut  
DoCmd.RunSQL "DELETE FROM TImport"  
DoCmd.RunSQL "DELETE FROM TImport2"  
 
Set Wb = xlAppl.Workbooks.Open(FileName:=strPathToFiles, ReadOnly:=True)  
 
Call ToutAfficher
 
For Each ws In Wb.Worksheets  
If ws.Visible = True Then  
onglet = ws.Name  
 
If onglet = "TestIndicateurs" Then  
 
' transfert vers table T_Import_Brut  
DoCmd.TransferSpreadsheet acImport, 8, "TImport", strPathToFiles, False, onglet & "!H2:L201"  
 
ElseIf onglet = "Transpose" Then  
 
' transfert vers table T_Import_IG  
DoCmd.TransferSpreadsheet acImport, 8, "TImport2", strPathToFiles, False, onglet & "!A1:F"  
 
End If  
End If  
Next ws  
 
Wb.Close False  
setwb = Nothing  
xlAppl.Quit  
Set xlAppl = Nothing  
 
Fichier = Dir  
Loop  
End Sub

Reply

Marsh Posté le 26-04-2006 à 17:42:54   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed