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

Macros et VBA Excel Discussion :

Importation de données venant de fichier fermé ( *.xls)


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut Importation de données venant de fichier fermé ( *.xls)
    bonjour,

    je suis confronté a un probleme d'importation de données de fichiers excel. Le but etant de recuperer des données contenue dans une plage q10:q56 de chaques fichiers et dans faire une compilation dans un autre jusque là pas de probleme.
    Si la plage q10:q56 est pleine pas de probleme mais si la plage n'a que 10 ou 20 valeurs la macro n'importe rien je joins un bout du code vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    connect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
          "ReadOnly=1;DBQ=" & Fichier
     
     
        Set données = New ADODB.Recordset
        données.Open Source:="SELECT * FROM [" & onglet & "Q10:Q56]", ActiveConnection:=connect
     
        If Not données.EOF Then
        ' pour etre synchro avec les colonnes
        p = X
            Cells(1, 2 + p) = Tableau(X)
            Cells(2 + N, 2 + p).CopyFromRecordset données
            p = p + 2
        N = N + 1
    voila si quelqu'un à une idée je suis preneur

    merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ignore s'il est possible d'accéder à un fichier fermé mais tu peux essayer d'y accéder sans qu'il s'affiche :
    Tu mets "ScreenUpdating = false" avant lde l'ouvrir, tu fais tes petites affaires, tu le fermes et tu mets "ScreenUpdating = true"

    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    salut ouskel'n'or

    il n'y a aucun probleme pour lire des données dans un fichier fermé avec les methodes ADO
    Ta solution fonctionne tres bien mais est trop lente si tu as 200 fichiers a ouvrir pour recuperer des infos

    @+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    C'est bien, tu poses une question et tu me donnes une solution que je ne connaissais pas... Quand poses-tu une nouvelle question ?

    Désolé de ne pouvoir t'aider

    A+

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour Stormless , bonjour Ouskel'n'or

    tu peux tester cette adaptation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Connect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
          "ReadOnly=1;DBQ=" & Fichier & ";" & _
          "extended properties=""Excel 8.0;IMEX=1"""


    cordialement
    michel

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    bonjour silkyroad

    sa ne change rien extended proprities avec le imex=1

    merci d'avoir essayer

    Si tu veux ouskel'n'or je peux mettre la macro en ligne y a pas de probleme

    @+

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    Sub importation()
    'activer la reference Microsoft ActiveX Data Objects x.x Library
    'activer la reference Microsoft ADO Ext 2.7 for DLL ans Security
     
        Dim connect As String
        Dim Sql As String, onglet As String
        Dim données As ADODB.Recordset
        Dim Fichier As String, Direction As String, texte_SQL As String
        Dim X As Integer, NbFichiers As Integer, Y As Integer, N As Integer, p As Integer, w As Integer
        'On Error Resume Next
        Dim Tableau() As String
     
        onglet = "dim$" 'InputBox("Saisissez le nom d'un onglet :")
        If onglet = "" Then Exit Sub
        Direction = Dir(ThisWorkbook.Path & "\*.xls")
        Do While Len(Direction) > 0 'liste tous les classeurs du repertoire
        NbFichiers = NbFichiers + 1
        ReDim Preserve Tableau(1 To NbFichiers)
        Tableau(NbFichiers) = Direction
        Direction = Dir()
        Loop
     
        If NbFichiers > 0 Then
        For X = 1 To NbFichiers 'boucles sur les classeurs
     
        ' pour ne pas prendre en compte le classeur contenant la macro (synthese)
        If Tableau(X) <> ThisWorkbook.Name Then
     
        Fichier = ActiveWorkbook.Path & "\" & Tableau(X)
        N = 0
     
        connect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
          "ReadOnly=1;DBQ=" & Fichier
     
        Set données = New ADODB.Recordset
        données.Open Source:="SELECT * FROM [" & onglet & "Q10:Q56]",   ActiveConnection:=connect
     
                  If Not données.EOF Then
                       ' pour etre synchro avec les colonnes
                         p = X
                         Cells(1, 2 + p) = Tableau(X)
                         Cells(2 + N, 2 + p).CopyFromRecordset données
                         p = p + 2
                         N = N + 1
                  End If
     
        End If
        Next X
        End If
     
        Application.ScreenUpdating = True
     
        'delete de l'objet recordset
        données.Close
        Set données = Nothing
     
    End Sub
    ci joint la macro de base a toi de la modifier pour tes besoins
    pour info :
    1)Recuperation de 45 valeurs dans 186 fichiers en moins de 1 minutes
    2) il faut les fichiers soient dans le meme repertoire que le fichier de compilation

    @+

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et ta macro à toujours un probléme ?... :

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    salut bbil

    oui et maintenant je suis sec je ne vois pas la solution. je lisais les tuto's de J M Rabilloud mais non pas de solution pour l'instant

    @+

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut Re: Importation de données venant de fichier fermé ( *.xls)
    Citation Envoyé par stormless
    je suis confronté a un probleme d'importation de données de fichiers excel. Le but etant de recuperer des données contenue dans une plage q10:q56 de chaques fichiers et dans faire une compilation dans un autre jusque là pas de probleme.
    Si la plage q10:q56 est pleine pas de probleme mais si la plage n'a que 10 ou 20 valeurs la macro n'importe rien je joins un bout du code vba
    bon moi j'ai essayer avec un fichier contenant toute les infos q10 àQ56 et le 2° seulement Q10:Q34 .. cela fonctionne..

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    q10:q56 c'est ok mais essai Q20:q56

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben chez moi ... donnée de Q20 à Q56 ... un seul fichier .. ça marche ..;

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    deja pour commencer merci de te pencher sur mon probleme

    donc dans la macro tu es bien en q10:q56 et dans le fichier de données tu as des valeurs a partir de q20 jusqu'a q56 et sa fonctionne ?

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    oui .. j'ai copié ton code tel quel (juste remplacé le nom de la feuille dim$ par feuil1$ ) dans un module excel... et j'ai créer un fichier BD2.xls, dans lequel j'ai mis des donnée dans Q20 à Q56 ( j'ai écrit Z20 à Z56 )


    et ça marche..

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par bbil
    oui .. j'ai copié ton code tel quel (juste remplacé le nom de la feuille dim$ par feuil1$ ) dans un module excel... et j'ai créer un fichier BD2.xls, dans lequel j'ai mis des donnée dans Q20 à Q56 ( j'ai écrit Z20 à Z56 )


    et ça marche..
    serais tu ok pour que je t'envoie mon fichier de compilation ainsi quelques fichiers sources pour faire un test

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben ... moi ici je n'est pas VB6 ... seulement excel ... alors ...

    sinon je suis d'accord ... tu as mon adresse mail sur bouton msn ...en bas

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par bbil
    ben ... moi ici je n'est pas VB6 ... seulement excel ... alors ...
    je ne comprends pas ta reponse ?

  18. #18
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par stormless
    Citation Envoyé par bbil
    ben ... moi ici je n'est pas VB6 ... seulement excel ... alors ...
    je ne comprends pas ta reponse ?
    ton aplli es sous excel ? , tu parle de compilation et fichier source ..? si oui envoi moi ton fichier excel contenant la macro + 1 fichier donnée causant probléme ...
    je regarde et te dis comment ça se pase chez moi .

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    passe moi ton adresse E-mail dans la MP

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Pour info

    apres divers echange avec bbil ca ne fonctionne pas non plus chez lui
    si quelqu'un a une solution merci d'avance

    et merci a bbil pour ton aide

Discussions similaires

  1. [XL-2007] Importer des données d'un fichier CSV fermé
    Par Maxim0 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2011, 15h33
  2. importation des données d'un fichier XLS vers un Grid
    Par soumasimsim dans le forum Débuter
    Réponses: 3
    Dernier message: 01/05/2011, 18h10
  3. Réponses: 170
    Dernier message: 12/08/2009, 08h56
  4. [XL-2007] Importation des données sur plusieurs fichiers fermés
    Par starid dans le forum Excel
    Réponses: 8
    Dernier message: 18/07/2009, 17h54
  5. Importer des données depuis un fichier xls
    Par kinou89 dans le forum MySQL
    Réponses: 1
    Dernier message: 12/02/2009, 08h32

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