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 :

Requête Oracle sous Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Par défaut Requête Oracle sous Excel
    Bonjour à tous,
    L'accès à la base de donnée par Excel fonctionne.
    j'utilise la macro suivante pour extraire des données Oracle, elle bloque à la ligne .Refresh BackgroundQuery:=False
    Si quelqu'un peut m'aiguiller. Merci d'avance

    Code vba : 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
    Sub Lecture_base()
     
       base_de_donnees = "ODBC;DSN=TOP;UID=TOPERP;PWD=TOPERP;SERVER=TOP"
        '-------------------------------------------------------------------------
        ' lecture des parametres
        '-------------------------------------------------------------------------
     
     
        Sheets("resultat cycle").Select
        '------------------------------------------------------------------------------
        ' constitution du sql
        '-------------------------------------------------------------------------------
     
        'critere_1 = Cells(3, 2)
        'critere_2 = Cells(4, 2)
        'critere_3 = Cells(5, 2)
     
        texte_sql = " "
        For i = 1 To 50
          If Sheets("sql").Cells(i, 1) <> "" Then
             texte_sql = texte_sql & Sheets("sql").Cells(i, 1) & Chr(13) & Chr(10)
          End If
        Next i
     
        'texte_sql = Replace(texte_sql, "CRITERE_1", critere_1)
        'texte_sql = Replace(texte_sql, "CRITERE_2", critere_2)
        'texte_sql = Replace(texte_sql, "CRITERE_3", critere_3)
     
        Sheets("debug").Cells(1, 1) = texte_sql
     
        Range("A8:I2500").Select
    '    Selection.QueryTable.Delete
        Selection.ClearContents
        Range("A8").Select
        'Cells(8, 1).Select
        'Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
        'Selection.ClearContents
     
        With ActiveSheet.QueryTables.Add(Connection:= _
            base_de_donnees, Destination:=Range("A8"))
            .CommandText = texte_sql
            .Name = "Commandes fournisseurs"
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = False 'xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
        Range("A6").Select
        Cells.Select
        Selection.Columns.AutoFit
        Range("A1").Select
    End Sub

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    Qu'est-ce qui bloque ? As-tu un message d'erreur ? Que contient texte_sql ? As-tu copié/collé la valeur de texte_sql dans une fenêtre New SQL query dans ton interface Oracle pour voir si ton query est correct et retourne des données ?

    As-tu vérifié si tu as bien les bons droits pour exécuter ton query (ton user a le droit d'accéder à la DB, aux tables, ...) ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Bonjour

    Bonjour CAVO789
    Mes réponses ci-dessous

    Qu'est-ce qui bloque ? La macro
    As-tu un message d'erreur ? Oui de visual basic: Erreur d'exécution 1004 Erreur de syntaxe SQL
    Que contient texte_sql ? J'ai fait un essai avec un SQL très simple
    As-tu copié/collé la valeur de texte_sql dans une fenêtre New SQL query dans ton interface Oracle pour voir si ton query est correct et retourne des données ? Oui
    As-tu vérifié si tu as bien les bons droits pour exécuter ton query (ton user a le droit d'accéder à la DB, aux tables, ...) ?
    Oui j'ai accès à tous les objet de la base de donnée

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Citation Envoyé par alexis trotta Voir le message
    As-tu un message d'erreur ? Oui de visual basic: Erreur d'exécution 1004 Erreur de syntaxe SQL
    Donc, ton SQL semble incorrect... Soit il est incorrect (erreur de syntaxe) soit ton utilisateur n'a pas les droits pour l'exécuter.
    Dans Oracle, tu t'es connecté avec un username/password ? As-tu utilisé les mêmes pour Excel VBA ?

    Cherche dans cette direction.

    Bonne journée.

  5. #5
    Membre confirmé
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Donc, ton SQL semble incorrect... Soit il est incorrect (erreur de syntaxe) soit ton utilisateur n'a pas les droits pour l'exécuter.
    Dans Oracle, tu t'es connecté avec un username/password ? As-tu utilisé les mêmes pour Excel VBA ?

    Cherche dans cette direction.

    Bonne journée.
    LE SQL d'essai: SELECT *
    FROM T_FAMILLE;

    Dans la deuxième ligne de la macro (base_de_donnees = "ODBC;DSN=TOP;UID=TOPERP;PWD=TOPERP;SERVER=TOP") il y a les mêmes identifiants de connexion dont je me sers pour accéder aux objets de la base de donnée.

  6. #6
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Ok

    Tu es sûr pour ton DSN ? Il existe différente syntaxe : https://www.connectionstrings.com/oracle/

    Cela fait des années que je n'ai plus utilisé de connexion ODBC (je préfère écrire directement la connexion sous forme de chaîne dans mes fichiers de config). Dans ton cas, tu précises "ODBC" et tu donnes pourtant toutes les données de connexions; cela m'interpelle un peu mais peut-être est-ce correct.

    Vois les autres types de connexion, peut-être que cela vient de là.

  7. #7
    Membre confirmé
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Ok

    Tu es sûr pour ton DSN ? Il existe différente syntaxe : https://www.connectionstrings.com/oracle/

    Cela fait des années que je n'ai plus utilisé de connexion ODBC (je préfère écrire directement la connexion sous forme de chaîne dans mes fichiers de config). Dans ton cas, tu précises "ODBC" et tu donnes pourtant toutes les données de connexions; cela m'interpelle un peu mais peut-être est-ce correct.

    Vois les autres types de connexion, peut-être que cela vient de là.
    Cette macro fonctionnait très bien avec une autre base de donnée Oracle dans une autre entreprise. Du coup on élimine une erreur potentielle dans le code VBA.
    Le problème vient peut-être comme tu l'as dit du DSN.
    Je cherche.

  8. #8
    Membre confirmé
    Homme Profil pro
    Cadre
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cadre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Par défaut
    Le code fonctionne très bien, le problème se situait au niveau de la connexion entre Excel et la base de donnée Oracle.
    J'ai joint un fichier modèle.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2010] Connexion Oracle sous EXCEL ADO - Erreur de connexion ORA-12154
    Par Filippo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/03/2015, 14h12
  2. Problèmes avec requêtes Oracle sous Cron Unix
    Par wahabbad dans le forum Oracle
    Réponses: 1
    Dernier message: 02/08/2011, 13h21
  3. Réponses: 9
    Dernier message: 11/10/2010, 18h29
  4. Importer contenu requête Access sous Excel
    Par ShAk44 dans le forum Excel
    Réponses: 5
    Dernier message: 06/07/2007, 09h09

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