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 :

connexion bdd Access et requete insert + select [objet ouvert]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Points : 54
    Points
    54
    Par défaut connexion bdd Access et requete insert + select [objet ouvert]
    Bonjour, je me connecte à ma base de données Access en ADO pour exécuter des requêtes insert et select depuis une macro Excel. J'utilise donc 2 manières d’exécuter mes requête (objConnexion.Open et rs.open). Je ne m'y connais pas et j'ai réussit à exécuter certains de mes requête sur une macro simple mais dans ma vraie macro qui contient d'autres requêtes j'ai comme erreur "Cette opération n'est pas autorisée si l'objet est ouvert" à la ligne 28.
    Je met donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    objConnexion.Close
    Set objConnexion = Nothing
    et cette fois j'ai l'erreur que la connexion est fermée. Je pense que je gère mal les connexions, malgré mes recherches, j'ai donc besoin de votre aide.


    Mon code fonctionnel est:

    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
     Dim objConnexion As ADODB.Connection
      Dim objrs As ADODB.Recordset
      Dim aa, bb
     
       ' Création de l'objet ADO
       Set objConnexion = New ADODB.Connection
       Set objrs = New ADODB.Recordset ''''''
     
       Set objCommand = CreateObject("ADODB.Command")
     
     
       ' Ouverture de la base sans DSN 
        objConnexion.Open _
        "Provider=Microsoft.ACE.OLEDB.12.0; " & _
        "Password=;" & _
        "User ID=Admin;" & _
        "Data Source=C:\Users\MLR1.MDB;"
     
     
     
    Dim nomClasseur As String
    nomClasseur = ActiveWorkbook.Name
    Dim nomFeuille As String
    nomFeuille = ActiveSheet.Name
     
    strsql = "SELECT FORMATION.LIDM as lid, lecode FROM ...."
     
    objrs.Open strsql, objConnexion, adOpenKeyset, adLockOptimistic
     
     
    aa = objrs.Fields("lid").Value
    bb = objrs.Fields("lecode").Value
     
     
    TexteSQL4 = "INSERT INTO   ....    '" & aa & "' , '" & bb & "' FROM ..."
     
    objConnexion.Execute TexteSQL4




    et mon code qui ne fonctionne pas est:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
      Dim objConnexion As ADODB.Connection
      Dim objrs As ADODB.Recordset
      Dim aa, bb
     
       ' Création de l'objet ADO
       Set objConnexion = New ADODB.Connection
       Set objrs = New ADODB.Recordset ''''''
     
       Set objCommand = CreateObject("ADODB.Command")
     
     
     
     
     
       ' Ouverture de la base sans DSN 
        objConnexion.Open _
        "Provider=Microsoft.ACE.OLEDB.12.0; " & _
        "Password=;" & _
        "User ID=Admin;" & _
        "Data Source=C:\Users\MLR1.MDB;"
     
     
     
     
              'l'annee de parcours = annee de la date courante
            Dim annee As String
            annee = Year(Now())
     
     
     
    'pour chaque cellule de B19 à B55
    For Each C In Range("B19:B55")
     
        Dim ligne As Integer 'on récupère la ligne
        ligne = C.Row
     
     
    Dim nomClasseur As String
    nomClasseur = ActiveWorkbook.Name
    Dim nomFeuille As String
    nomFeuille = ActiveSheet.Name
     
    strsql = "SELECT F.LIDM as lid, lecode FROM F WHERE LIDM = (SELECT M.IDMENTION FROM M WHERE NOMM='" & nomClasseur & "') AND NOMF='" & nomFeuille & "'"
     
     
     
    '''''''''''''''''''''''   erreur sur cette ligne
    objrs.Open strsql, objConnexion, adOpenKeyset, adLockOptimistic
     
     
    aa = objrs.Fields("lid").Value
    bb = objrs.Fields("lecode").Value
     
     
     ' Traitement
          TexteSQL1 = "INSERT INTO A ...."
          TexteSQL2 = "INSERT INTO B ...."
          TexteSQL3 = "INSERT INTO C ....."
     
           objConnexion.Execute TexteSQL1
           objConnexion.Execute TexteSQL2
           objConnexion.Execute TexteSQL3
     
     
     
     
    TexteSQL4 = "INSERT INTO E ....   '" & aa & "' , '" & bb & "' ...."
     
    objConnexion.Execute TexteSQL4
     
     
     
     
     
        End If
    Next 'prochaine ligne

    J'ai modifier le code et réduit les requêtes mais le code d'origine est bon normalement.
    J'ai l'impression que l'on ne fait pas un objConnexion.Execute et un objrs.Open en même temps de cette manière.

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    regard le fichier Zip dezip tout le répertoire sur le disck dur!
    en lisant le code tu me trouvera Narcissique mais c'est pas grave
    Fichiers attachés Fichiers attachés

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Merci beaucoup pour ton aide, ton fichier m'a énormément été utile pour ce que je voulais faire.

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

Discussions similaires

  1. [Débutant] Probleme de connexion Bdd Access
    Par borisdu59 dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/12/2011, 11h38
  2. Réponses: 5
    Dernier message: 28/01/2009, 16h17
  3. Erreur connexion bdd access
    Par offspring dans le forum C#
    Réponses: 9
    Dernier message: 12/07/2008, 01h15
  4. [ODBC] Connexion BDD Access avec "new com" - utilisation de odbc_fetch_row ?
    Par polothentik dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/04/2008, 15h12
  5. Connexion BDD access
    Par Solly dans le forum JDBC
    Réponses: 8
    Dernier message: 25/04/2008, 13h01

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