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 :

Problème ADOB.Connection - cause:onglets graphiques?


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 78
    Par défaut Problème ADOB.Connection - cause:onglets graphiques?
    Bonjour à tous,

    J'essaie de traiter une grande quantité de classeurs xlsx(Excel 07) en utilisant la méthode ADO (merci à silkyroad!)

    La lecture de classeur xlsx implique un appel un peu différent des moteurs de connexion, j'utilise la forme là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";
    cela fonctionne bien sur un classeur contenant 1 onglet avec des données brutes.

    Mais voila, mes classeurs contiennent plusieurs onglets dont des onglets graphiques et la connexion à ADODB me génère systématiquement cette erreur :

    -2147467259 : La table externe n'est pas dans le format attendu
    Help! Je ne sais pas quoi faire pour résoudre ce problème!

    P.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    A tout hasard, fais un test en affichant toutes les feuilles éventuellement masquées.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 78
    Par défaut
    Bonjour Daniel.C,

    merci pour ta réponse mais il n'y a pas de feuille masquée.

    P.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Ni protégée ?

  5. #5
    Expert confirmé
    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
    Par défaut
    Salut, si ta source est ceci ta requête devra spécifier le nom de la feuille contenant les données.

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 78
    Par défaut
    Voici la source complète :
    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
    59
    60
    61
    62
    Sub VerificationDuContenuDeLaDerniereLigne()
    '!!! référence Microsoft ActiveX Data Objects x.x  & Microsoft ADO ext x.x for DLL and Security Library necessaire
     
    'connection en SQL via ADO
    Dim Source As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim ADOCommand As ADODB.Command
     
    'Recherche des fichiers
    Dim ListeFich As New Collection
    Dim Fichier As Variant
    Dim Repertoire As String, Plage As String, Feuille As String
     
    Dim Resultat As String
    Dim Ligne As Double
     
     
    'Adresse de la plage de Plages contenant les impulsions
    Plage = "C1442:C1442"
     
    Feuille = "Brut$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
     
    'Chemin complet des classeurs fermés
    Repertoire = "D:\SavBDDBIPV"
     
    RecursiveDir ListeFich, Repertoire, "*.xlsx", True
     
     
        For Each Fichier In ListeFich
     
            'Initialisation de la connection avec la source de données
            Set Source = New ADODB.Connection
            Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & Fichier & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1"";"
            Set ADOCommand = New ADODB.Command
     
            'Initialisation de la commande à envoyer
            With ADOCommand
                .ActiveConnection = Source
                .CommandText = "SELECT * FROM [" & Feuille & Plage & "]"
            End With
     
            'Envoi de la requête
            Set Rst = New ADODB.Recordset
            Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
            Set Rst = Source.Execute("[" & Feuille & Plage & "]")
            '->à cette étape, on a un Rst qui contient nos données
     
            Range("A" & Ligne) = Fichier
            Range("B" & Ligne).CopyFromRecordset Rst
            If Range("B" & Ligne) = "" Then Range("C" & Ligne) = 1
            Ligne = Ligne + 1
     
            Rst.Close
            Source.Close
     
            Set Source = Nothing
            Set Rst = Nothing
            Set ADOCommand = Nothing
     
        Next Fichier
    End Sub
    Effectivement, il faut peut être que je précise la feuille dans laquelle je veux travailler. Dois-je donc écrire quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "Data Source=" & Fichier & "[" & Feuille & "]"
    ???

    Info : RecursiveDir est une fonction de recherche des fichiers.

    Edit : Les fichiers et les feuilles ne sont pas protégées.

    P.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 78
    Par défaut
    Bonjour,

    J'up le sujet, quelqu'un à déjà eu à utiliser ce truc?

    Bonne journée.

    Cordialement,

    Pierre

Discussions similaires

  1. Problème d'addition à cause des NULL
    Par Oluha dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/03/2005, 13h53
  2. Problème de connection
    Par Marsouin dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/11/2004, 13h22
  3. [Interbase] Problème de connections
    Par yolepro dans le forum InterBase
    Réponses: 3
    Dernier message: 24/02/2004, 15h31
  4. Problème de connection
    Par Trahwn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/09/2003, 13h58
  5. problème de connection mysql par tcp/ip
    Par leroyphil dans le forum Administration
    Réponses: 5
    Dernier message: 04/09/2003, 18h27

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