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 :

Lire et écrire dans les classeurs Excel fermés


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 179
    Points : 65
    Points
    65
    Par défaut Lire et écrire dans les classeurs Excel fermés
    Bonjour
    je utilise ce code pour lire d´une fichiee Excel fermee:
    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
    Sub Lire_Classeur_Ferme()
    'Réf. 111018.xlsm
     
    'Références à sélectionner :
    'référence Microsoft ActiveX Data Objects x.x Library
     
    Dim cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\Users\Daniel\Documents\Donnees\Daniel\Excel\ADO\ClasseurFerme.xls" '*** à modifier
    Set cn = New ADODB.Connection
    '--- Connexion ---
    With cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    'texte_SQL = "SELECT * FROM [" & NomFeuille & " ]"
    NomFeuille = "MaNouvelleFeuille" '*** à modifier
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
    Set rst = New ADODB.Recordset
    Set rst = .Execute(texte_SQL)
    'Ecrit le résultat de la requête dans la cellule A2
    Sheets("Feuil3").Range("A2").CopyFromRecordset rst '*** à modifier
    End With
    '--- Fermeture connexion ---
    cn.Close
    Set cn = Nothing
    End Sub
    quand le fichier excel est ouvert le programme fonctionne, mais quand le fichiee Excel est fermee il y a une message d´erreur "le tableau externe n´a pas le forma attendu"

    j´ai Excel 2007
    merci bien

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 101
    Points : 149
    Points
    149
    Par défaut
    hello,

    Il faut que tu testes si le classeur est ouvert et si non, il suffit de l'ouvrir et de dérouler derrière.

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    le but étant d'accéder à un fichier fermé, pourquoi l'ouvrir alors ? …

    Ce message d'erreur correspond en fait à un format de fichier non supporté par la connexion employée !

    Du genre tentative d'ouverture d'un fichier au format .xlsx (à partir de 2007) mais la connexion ne gère que les .xls (jusqu'en 2003).
    Et attention, l’extension du nom de fichier ne fait pas le format !

    Pour le vérifier, enregistrer sous un autre nom le classeur en spécifiant le format Excel 97-2003 et le tester ensuite …

    L'autre solution est d'utiliser la nouvelle connexion depuis 2007 gérant aussi bien les .xls comme les .xlsx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    '   Référence à cocher :   Microsoft ActiveX Data Objects 6.1 Library
     
        Dim Cnx As New ADODB.Connection, Rst As New ADODB.Recordset
     
        Fichier$ = "… … … … … … … …"
        If Dir(Fichier) > "" Then
             Cnx.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & _
                      ";Extended Properties=""Excel 12.0;HDR=No;"";"
     
             Set Rst = Cnx.Execute("SELECT * FROM [NomFeuille$]")
    ' suite du code
             Rst.Close:  Set Rst = Nothing
             Cnx.Close:  Set Cnx = Nothing
        End If
    Mettre à jour le nom du fichier en ligne n°5 et le nom de la feuille en ligne n°10 …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 179
    Points : 65
    Points
    65
    Par défaut
    merci bien

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

Discussions similaires

  1. [XL-2007] Lire et écrire dans les classeurs Excel fermés : Problème avec CopyFromRecordset
    Par schumiaja dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2015, 20h18
  2. [XL-2007] Lire et écrire dans les classeurs Excel fermés
    Par jijie dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2013, 14h28
  3. Lire dans un classeur Excel fermé
    Par forestlaw2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/07/2012, 12h15
  4. [XL-2007] Lire dans les classeurs Excel fermés (ADODB)
    Par Korleone dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/04/2011, 08h52
  5. [XL-2003] Lire et écrire dans les classeurs Excel fermés
    Par skan_one dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/07/2009, 14h34

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