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 :

Adapter macro .xls -- .xlsx [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 55
    Points : 37
    Points
    37
    Par défaut Adapter macro .xls -- .xlsx
    Bonsoir à tous,

    J'ai trouvé sur ce forum un bout de code merveilleux, qui correspond parfaitement à ce qu'il me fallait, sauf sur un petit détail :

    En effet, je voulais une macro, qui me permet de récupérer toutes les infos de différents classeur excel qui sont situés dans le même répertoire, afin de le coller dans un fichier "base de données".

    J'ai trouver celle là

    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
    'Nécessite d'activer la référence
        'Microsoft ActiveX Data Objects x.x Library
    Dim Cn As ADODB.connection
    Dim Rs As ADODB.Recordset
    Dim xConnect As String, Cible As String
    Dim Fichier As String, Dossier As String, Feuille As String
    Dim i As Long
     
    'nom du répertoire contenant les classeurs à regrouper
    Dossier = "D:\Boulot\Argent_poche_SNR\Tableau_de_bord"
    'Nom de la feuille dans les classeurs fermés
    'Ne pas oublier le symbole $ après le nom de la feuille
    Feuille = "Feuil1$"
    i = 2
     
    Fichier = Dir(Dossier & "\*.xls")
    'boucle sur les fichiers du repertoire
    Do While Len(Fichier) > 0
        xConnect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
        "ReadOnly=1;DBQ=" & Dossier & "\" & Fichier
        'connection classeur
        Set Cn = New ADODB.connection
        Cn.Open xConnect
     
        'Requete
        Cible = "SELECT * FROM [" & Feuille & "];"
     
        Set Rs = New ADODB.Recordset
        Rs.Open Cible, xConnect, adOpenStatic, adLockOptimistic, adCmdText
     
        'Ecriture dans la feuille de calcul
        If Not Rs.EOF Then Cells(i, 1).CopyFromRecordset Rs
        i = Cells(i, 1).End(xlDown).Row + 1
     
        Rs.Close
        Cn.Close
        Set Cn = Nothing
        Set Rs = Nothing
        Fichier = Dir()
    Loop
     
    MsgBox "Terminé"

    mais elle marche pour les fichiers .xls. Y'a t-il moyen de la transformer pour faire fonctionner les fichiers .xlsx ?

    J'ai des connaissances en macro, mais peu sur le fonctionnement des connexions entre classeurs. J'ai essayé de lire le tuto de silkyroad, mais le type de connexion n'étant pas tout à fait pareil, je suis perdu ...

    j'ai tenté bêtement de changer les .xls en .xlsx dans la macro, mais j'ai une erreur "gestionnaire de pilote ODBC source de donnée introuvable, et nom de pilote non spécifié"

    je vous remercie d'avance,

    charles

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Fait un essai comme cela

    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
    Sub testODBC()
    'Nécessite d'activer la référence
        'Microsoft ActiveX Data Objects x.x Library
    Dim Cn As ADODB.Connection
    Dim Rs As ADODB.Recordset
    Dim xConnect As String, Cible As String
    Dim Fichier As String, Dossier As String, Feuille As String
    Dim i As Long
     
    'nom du répertoire contenant les classeurs à regrouper
    Dossier = "D:\Boulot\Argent_poche_SNR\Tableau_de_bord"
    'Nom de la feuille dans les classeurs fermés
    'Ne pas oublier le symbole $ après le nom de la feuille
    Feuille = "Feuil1$"
    i = 2
     
    Fichier = Dir(Dossier & "\*.xlsx")
    'boucle sur les fichiers du repertoire
    Do While Len(Fichier) > 0
        xConnect = "DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
        "ReadOnly=1;DBQ=" & Dossier & "\" & Fichier
        'connection classeur
        Set Cn = New ADODB.Connection
        Cn.Open xConnect
     
        'Requete
        Cible = "SELECT * FROM [" & Feuille & "];"
     
        Set Rs = New ADODB.Recordset
        Rs.Open Cible, xConnect, adOpenStatic, adLockOptimistic, adCmdText
     
        'Ecriture dans la feuille de calcul
        If Not Rs.EOF Then Cells(i, 1).CopyFromRecordset Rs
        i = Cells(i, 1).End(xlDown).Row + 1
     
        Rs.Close
        Cn.Close
        Set Cn = Nothing
        Set Rs = Nothing
        Fichier = Dir()
    Loop
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, un peu de lecture suffit : ici

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    YES !

    Sa marche !

    Alors, juste parce qu'il y a (*.xls, *.xlsx, *.xlsm, *.xlsb) au lieu de mon simple (*.xlsx) !?

    en tout cas sa marche, c'est TIP TOP !

    Je te remercie de la rapidité !

    KIKI29, j'ai lu cette page là comme je l'ai souligné, mais cela ne m'a pas permis de résoudre mon problème.

    dans le tuto il est utilisé tous le temps "Driver={Microsoft Excel Driver (*.xls)}" il n'était pas évident (du moins pour ma part), que (*.xls, *.xlsx, *.xlsm, *.xlsb) allait marcher au lieu d'un simple (*.xlsx)

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Pour info c'est le nom du pilote donc si tu écrits "tintin" au lieu de "toto", ça ne marche pas.
    Pour info bis, je n'ai rien inventé, j'ai juste taper ODCB xlsx sur google , google est ton ami...enfin dans une certaine mesure

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création macro xls via script vbs
    Par avenGer59 dans le forum VBScript
    Réponses: 3
    Dernier message: 28/09/2009, 09h22
  2. macro xls vers xml
    Par akoufen dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/09/2009, 12h37
  3. [XL-2007] Type de fichier pour Excel 2007: xls, xlsx, xlsm ou xlsb ?
    Par APE3392 dans le forum Excel
    Réponses: 2
    Dernier message: 18/06/2009, 18h02
  4. exécution de macro xls par maltab
    Par ImagingAllthe dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/11/2008, 14h16
  5. Macro : .xls to .txt sans espace ni tabulation
    Par kyzeur dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/07/2007, 15h45

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