IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Problème import de feuilles excel


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut Problème import de feuilles excel
    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

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Tu dois avoir un pb de portée des variables excell.
    En fait tu devrais planter là
    For Each ws In Worksheets
    Tu peux essayer de déclarer tes variables en tête du module ou alors essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ToutAfficher(wb as excel.WorkBook)
     
    Dim ws As Worksheet
    For Each ws In wb.Worksheets
    ws.Visible = True
    Next
    End Sub
    
    L'appel deviendraitDe toute façon 'WorkSheets' tout seul ne devrait rien donner.

    Bon courage,

    pgz

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Merci d'avoir regarder mon problème et merci pour ta réponse.
    Malheureusement, cela donne toujours la même chose et le même message d'erreur.
    La galère...
    Si tu as une autre idée n'hésite pas.

    Merci à tous pour votre aide

    @+

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Je viens de voir que tu ouvres le classeur en mode 'lecture seule'.

    pgz

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Oui, et est-ce que cela peut avoir une influence sur l'importation des données ?(sachant que ça marche très bien lorsque les feuilles ne sont pas masquées)


    D'avance merci

  6. #6
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Faudrait voir où tu en es de ton code, après les premières modifs. A quelle ligne apparaît l'erreur?

    A+
    pgz

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Mille merci !!!
    L'import fonctionne... Tu avais raison le problème se situait à ce niveau.
    J'ai donc supprimé ce readOnly de ma ligne de code comme ceci:

    Set wb = xlAppl.Workbooks.Open(FileName:=strPathToFiles)
    ', ReadOnly:=True)

    J'ai un autre souci cependant:
    A la fin de l'import, il me sort 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.

    Je dois rajouter une instruction dans mon code pour éviter cela, mais quoi ??? lol

    En tout cas mon importation avec les feuilles masquées marchent très bien maintenant mis à part ce souci.

    Merci si tu peux encore me donner de ton temps.
    @+

  8. #8
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    A quelle ligne apparaît l'erreur?

    A+

    pgz

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    En fait il ne me fait pas de message d'erreur sur une ligne en particulier.
    Il me fait l'import normalement, passe dans toutes les lignes du code sans problème.
    C'est simplement à la fin une fois qu'il a terminé l'import, au lieu de m'affichier la boite de dialogue "import ok", comme je l'ai spécifié dans le bouton de mon formulaire, il me sort à la place le message que j'ai indiqué juste au dessus.

    Excuse moi de ne pas t'avoir répondu plus tôt mais je n'avais plus le net à partir de 19h.

    @+

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Donc à mon avis la ligne concernée est toujours celle-ci:

    Set Wb = xlAppl.Workbooks.Open(FileName:=strPathToFiles)
    ', ReadOnly:=True)

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/09/2007, 12h55
  2. Importer une feuille excel d'un autre fichier excell
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/12/2006, 21h53
  3. Problème Import de données Excel dans Access
    Par francoisd dans le forum Access
    Réponses: 1
    Dernier message: 08/09/2006, 17h46
  4. Réponses: 9
    Dernier message: 30/05/2006, 17h55
  5. Importer une feuille excel dans une table Paradox ?
    Par Dalgo75 dans le forum Bases de données
    Réponses: 8
    Dernier message: 07/05/2006, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo