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 :

Avec ADO - Le projet VBA reste ouvert en quittant


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut Avec ADO - Le projet VBA reste ouvert en quittant
    Bonjour,

    Dans une feuille nommée Feuil1, la liste suivante :
    Nom....Prénom
    DURAND...Martin
    DUPOND...Yves
    etc...


    et voici mon code VBA :

    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
    Sub test_sql_excel()
     
     
        Dim Conn As ADODB.Connection
        Dim rsT As ADODB.Recordset
        Dim Fichier As String, Direction As String, rSQL As String
     
        Direction = ThisWorkbook.Path
        Fichier = ThisWorkbook.Name
        chemin = Direction & "\" & Fichier
     
     
        'Mise en place de la connexion avec le fichier
        Set Conn = New ADODB.Connection
            With Conn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=" & chemin & ";Extended Properties=Excel 8.0;"
                .Open
            End With
     
     
     
     
        'Déclaration de la Recherche au format SQL (% remplace * dans la recherche)
        rSQL = "SELECT * FROM [FEUIL1$] WHERE [NOM] = 'DURAND'"
     
     
        'Exécution de la Recherche SQL
        Set rsT = New ADODB.Recordset
            With rsT
                .ActiveConnection = Conn
                .Open rSQL, , adOpenKeyset, adLockOptimistic, adCmdTableDirect
            End With
     
     
     
     
        Nb_résultats = rsT.RecordCount
     
     
        'Récupération des enregistrements...
        For i = 0 To rsT.RecordCount - 1
     
            '...dans une msgbox
            MsgBox rsT.Fields(1).Value
     
             rsT.MoveNext
        Next i
     
     
        If Nb_résultats = 0 Then MsgBox "Aucune réf. trouvée !", vbInformation
     
     
     
        'Fermeture de la connexion avec la table
        rsT.Close
        Conn.Close
     
     
    End Sub

    Ce code fonctionne parfaitement.
    Il permet de faire une recherche SQL à partir d'une liste contenue sur la "feuil1".

    Mon soucis, c'est en quittant le fichier (juste en fermant le fichier, sans fermer Excel complètement... en fait le Projet VBA reste ouvert !!

    Pourquoi !? Ceci est anormal et pose problème lorsque l'on protège le projet VBA par un mot de passe... Dans ce cas à la fermeture il demande le mot de passe à chaque fois !!

    A l'aide svp

    Merci

    A+

    Dams'

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    Cela semble fonctionner parfaitement mais avec une gestion des erreurs on peut en être sur.
    insérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test_sql_excel()
    On error goto GestionErreur
    .......
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .............
     
    End Sub
    GestionErreur:
    Stop
    Resume
    End Sub
    Le Stop arrêtera le code si erreur et le Resume renverra vers la ligne en cause

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Salut Helas,

    Dans ta gestion d'erreur tu veux certainement dire cela :
    "Exit" au lieu de "End" ? Non ?


    .............

    Exit Sub
    GestionErreur:
    Stop
    Resume
    End Sub

    Dans ce cas aucune erreur ne s'est produite !

    Donc ce n'est pas ça...

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Bonjour,

    Pour bien fermer une connexion, il vaut mieux ajouter ces lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        rsT.Close
        set rsT = Nothing
        Conn.Close
        set Conn= Nothing

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    J'ai rajouté ce que tu as dit pour tout bien fermer... le problème persiste quand même !

Discussions similaires

  1. [VBA-E] Probleme avec l'activate d'un classeur ouvert pour un copy paste
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/08/2006, 23h31
  2. VBA obtenir texte SQL requète avec ADO
    Par cbleas dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/08/2006, 16h08
  3. [ADO.Net][2.0] Pourquoi ma connection reste ouverte ?
    Par le-roy_a dans le forum Accès aux données
    Réponses: 5
    Dernier message: 24/05/2006, 22h36
  4. Utilisation de template word avec ADO en VBA
    Par 24 faubourg dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/12/2005, 20h41
  5. Je reste en carafe avec ADO et Delphi4
    Par defluc dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/12/2004, 14h53

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