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 connection ADO


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 18
    Par défaut Problème connection ADO
    Bonjour,

    En essayant de me connecter à un autre classeur Excel via ADO, j'obtiens une erreur automation, voici le code :
    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
    Sub extraire_ado()
     
    Dim Source As Object, Requete As Object
    Dim chemin As String
    Dim Onglet As String, Plage As String
    Dim Texte_SQL As String
     
    chemin = "D:\"
    Fichier = "code.xlsm"
    Onglet = "Feuil5"
    Onglet = Onglet & "$"
    Plage = "B2:B10000"
     
    Set Source = CreateObject("ADODB.Connection")
     
    With Source
        .Provider = "Microsoft.Jet.OLEDB.2.8"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
        & chemin & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
     
    Texte_SQL = "SELECT * FROM [" & Onglet & Plage & "]"
        Set Requete = CreateObject("ADODB.Recordset")
        Set Requete = Source.Execute(Texte_SQL)
     
    Range("C3").CopyFromRecordset Requete
     
     
    Requete.Close
    Set Requete = Nothing
    Source.Close
    Set Source = Nothing
     
    End Sub

    Il bloque au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Requete = Source.Execute(Texte_SQL)
    Je vous informe d'ailleurs que la propriété State de la connexion ADO est sur 1. Le fichier n'est pas non plus protégé.

    Celà est mon premier problème.

    Mon deuxième problème est que dans la l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Texte_SQL = "SELECT * FROM [" & Onglet & Plage & "]"
    , je voudrais pouvoir selectionner qu'une seule cellule (pas une plage) qui est elle-même variable (boucle avec do). Le but est de comparer la valeur de la cellule 1 d'un classeur ouvert à celle d'un classeur fermé (cellule 2) (en parcourant une colonne), d'arreter quand les deux valeurs sont égales et enfin d'utiliser la valeur de la cellule 3 (dans le classeur fermé) et la multiplier par la cellule 4 (dans le classeur ouvert), le resultat sera affiché dans une cellule 5 du classeur ouvert. J'espère que c'est compréhensible.

    Dans l'attente de résoudre le 20éme problème de Hilbert (lol), merci

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Citation Envoyé par sliman84 Voir le message
    j'obtiens une erreur automation
    Laquelle et sur quelle ligne?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Membre averti
    Inscrit en
    Août 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 18
    Par défaut
    Bonjour, j'obtiens l'erreur suivante :
    Erreur d'exécution : "-2147217865 (80040e37)
    A ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Requete = Source.Execute(Texte_SQL)
    A bientot

  4. #4
    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, voir http://silkyroad.developpez.com/VBA/ClasseursFermes/ pour une syntaxe correcte

  5. #5
    Membre averti
    Inscrit en
    Août 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 18
    Par défaut
    J'ai obtenu une partie de mon code de ce fichier, j'ai utlisé plusieurs syntaxes mais ca bloque toujours au niveau de la lecture du recordset, j'ai même utlisé la syntaxe avec open et non execute et j'obtiens toujours la même erreur.

  6. #6
    Membre averti
    Inscrit en
    Août 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 18
    Par défaut
    Bonjour, j'ai resolu en partie le problème.
    Maintenant j'ai un problème de valeur, en effet l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Rst1 = Cn.Execute(texte_SQL1)
    m'affiche "CH# CART 24X32" au lieu de "CH. CART 24X32"
    Avec les autres cellules au format texte, je n'ai aucun problème, par contre j'ai un problème avec les cellules ou il y a des points comme ici.
    Autre problème, la valeur d'un recordset est égal à "F1" lorsque la cellule est totalement vide, cela pose un problème car le prog quitte la boucle quand une cellule vide est parcouru, alors que la valeur du recordset est toujours egal à F1 (boucle infiini).

Discussions similaires

  1. problème de connection ADO
    Par morgane12 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/07/2008, 10h49
  2. [VS.NET] Problème connection Source safe
    Par Nip dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 24/06/2004, 15h30
  3. Problleme de connection ADO sur base Oracle
    Par poirier dans le forum ASP
    Réponses: 7
    Dernier message: 08/06/2004, 09h34
  4. Connection ADO
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/03/2004, 12h49
  5. [BDD]Connection ADO et Blob
    Par fuse dans le forum MFC
    Réponses: 3
    Dernier message: 06/01/2004, 15h10

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