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 l'import):
En utilisant le débugger pas à pas je passe bien dans l'onglet mais il me sort une erreur qui n'a aucun
rapport avec l'impossibilité de lire les feuilles masquées.
Voici le message d'erreur:
"Cette table contient des cellules hors de la plage de cellules définie dans cette feuille de calcul"
Hors je n'ai ajouté dans mon code que des informations pour rendre visible les feuilles, les plages définies étant les même qu'auparavant. Après avoir regardé ce message dans l'aide de windows puis sur le net, j'en déduis que le programme ne peut accéder à la feuille et sort donc un message d'erreur complètement incohérent.
Si quelqu'un pouvait me trouver une solution intermédiaire ou aurait déjà eu ce genre de pb, je lui en serait très reconnaissant de m'aider, car après avoir chercher longuement je ne comprends vraiment plus rien...
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
Partager