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

VBA Access Discussion :

probleme de Recordset


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 46
    Points
    46
    Par défaut probleme de Recordset
    Bonjour à tous,

    Voila je vous expose mon petit soucis. Je viens de créer un recordset pour tester une table et verifier que j'ai bien saisi certain elements dans cette table avant d'executer une requete.

    Le probleme qui se pose est que lorsque j'appuie sur le bouton pour executer mon code j'aime une msgbox qui me dit "Objet Requis"

    mon 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
    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
     
     
    Private Sub Commande56_Click()
    On Error GoTo Err_Commande56_Click
     
    Dim bd As DAO.Database
    Dim Depa As DAO.Recordset
    Dim PDC_IDC, TContrat, BaieT, cle As Integer
     
    Set bd = CurrentDb()
    Set Depa = bd.OpenRecordset("Depannage", dbOpenTable)
     
    Depa.MoveFirst
    Do While Not Depa.EOF
     
            If (Depa("N° PDC") Or Depa("IDC")) Is Null Then
            PDC_IDC = 1
            End If
     
            If (Depa("Type de contrat")) Is Null Then
            TContrat = 1
            End If
     
            If (Depa("Baie")) Is Null Then
            BaieT = 1
            End If
     
            If (Depa("Cle Maitre / Admin") Or Depa("Cle Esclave / Exploit") Or Depa("Cle Cryptage / Client")) Is Null Then
            cle = 1
            End If
     
            If (Depa("DTR")) Is Null Then
            BaieT = 1
            End If
     
            Loop
     
    Depa.Close
    bd.Close
     
    If (PDC_IDC = 1) Then
    MsgBox ("Attention ! Au moins une ligne n'a ni PDC, ni IDC. Merci de corriger")
    Exit Sub
    End If
     
    If (TContrat = 1) Then
    MsgBox "Attention, Au moins une ligne n'a pas de Type Contrat renseigné. Merci de corriger"
    Exit Sub
    End If
     
    If (cle = 1) Then
    MsgBox ("Au moins une clé d'identification n'est pas renseignée. Merci de corriger")
    Exit Sub
    End If
     
        DoCmd.RunMacro "DepannageAno"
        DoCmd.OpenQuery "Ajout_Cocc_Depannage_Ano_213"
     
    Exit_Commande56_Click:
        Exit Sub
     
    Err_Commande56_Click:
        MsgBox Err.Description
        Resume Exit_Commande56_Click
     
    End Sub
    Quelqu'un a t il une idée, je seche...

    Merci à tous

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 279
    Points
    34 279
    Par défaut
    salut,
    par faignantise, j'aurais fait plus simple :
    en remplacant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Depa = bd.OpenRecordset("Depannage", dbOpenTable)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Depa = bd.OpenRecordset("SELECT * FROM Depannage")
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Bonjour, étant débutant et sur le même type de code que toi, tu sais préciser la ligne qui pose problème quand tu debug. Peut-être que j'ai eu ça aussi

    merci d'avance

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    le probleme c'est qu'aucune des lignes de ce code ne poses problème.

    ensuite j'ai modifier ce que tu m'a proposé comme solution jpcheck et ce n'est pas mieux. J'ai toujours le "Objet Requis" lorsque j'appuie sur le bouton qui est censé déclencher le processus.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 279
    Points
    34 279
    Par défaut
    bonjour, regarde en parcourant le code en mode pas à pas (F8) pour voir jusqu'où le code tourne sans poser de pb...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Hum excuse moi, je suis peut etre tres bête mais en faisant F8 dans mon code ca ne fait absolument rien a par un petit "bip" sonore.

    J'ai toujours été obligé d'avoir un code irreprochable ou presque dès le depart.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 279
    Points
    34 279
    Par défaut
    ce n'est pas une question d'être très bête ou pas, c'est juste qu'il nous faut savoir à quel niveau de ton code ca te plante. donc il faut que tu puisses nous dir la ligne du code stp
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    clao260,
    ne prends pas mal les conseils qu'ils te donnent.
    on est là pour t'aider, pas pour te juger.

    si tu désactivais la gestion d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'On Error GoTo Err_Commande56_Click
    tu pourrais leur répondre.

    au lieu de 'Is Null' il faut 'IsNull':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Depa("N° PDC") Or Depa("IDC")) Is Null Then
    met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(Depa("N° PDC") Or Depa("IDC")) Then
    à faire pour l'ensemble du code.

  9. #9
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonjour,

    Ces questions me semblent intéressantes, mais j'aimerais peut être poser une question de fond avant de programmer.
    Il me semble en effet qu'il serait plus intéressant de tester la présence ou non de donnnée lors de l'introduction de ces dernières et non pas lorsque tout est rentrer.
    D'autant plus si tu es débutant c'est nécessaire de commencer par le bon chemin.
    bon courrage dans tous les cas.

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut

    et il n'a pas dit qu'il est débutant.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    bonsoir a tous,

    hum excusez moi je pense que nous nous sommes mal compris

    ne prends pas mal les conseils qu'ils te donnent.
    on est là pour t'aider, pas pour te juger.
    Je ne prends vraiment pas mal, bien au contraire, ca serai idiot de ma part. Internet fais tres mal passer le ton que l'on veut donner à une phrase.

    Néanmoins je n'ai vraiment jamais pu fais tourner mon code en pas à pas (F8) j'ai toujours eu un bip sonore lorsque je voulais le faire dans access. C'est pour ça que je disais " je suis peut être tres bête", et je me doute que ca n'aide pas pour la resolution de mon probleme.

    Il me semble en effet qu'il serait plus intéressant de tester la présence ou non de donnnée lors de l'introduction de ces dernières et non pas lorsque tout est rentrer.
    Ce code devrait justement me permettre d'eviter l'envoi de données dans une table d'autre autre base de données si celles ci ne sont pas totalement complétée. J'ai donc une msgbox pour chaque type de donnée "obligatoire" oubliée. J'essais donc de faire tourner mon code avec une de ces données en moins.

    et il n'a pas dit qu'il est débutant.
    Effectivement j'ai tout de même quelques notions de programmation ( C, java ) mais peu de VBA à mon actif.

    En tout cas merci à tous pour votre aide

  12. #12
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour le forum,

    J'ai vu un truc qui ne me semble pas du tout "orthodoxe"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Commande56_Click()
    On Error GoTo Err_Commande56_Click
    
    Dim bd As DAO.Database
    Dim Depa As DAO.Recordset
    Dim PDC_IDC, TContrat, BaieT, cle As Integer
    
    Set bd = CurrentDb()
        ...
    bd.Close
        ...
    End Sub
    Une tentative de vermeture de la CurrentDB, ce n'est pas du tout indiqué !!!
    Bill va en être tout retourné...

    Veux-tu bien vite supprimer cette ligne !
    _

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par vodiem Voir le message

    et il n'a pas dit qu'il est débutant.
    Peut être qu'un débutant aurait écrit ceci:

    ____
    ________
    ____________

  14. #14
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    =JBO= >
    Une tentative de vermeture de la CurrentDB, ce n'est pas du tout indiqué !!!
    Bill va en être tout retourné...
    je me permet de te contredire: il ferme l'instance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CurrentDb.Close                                         'tentative mais echoue
    bd.Close                                                'ferme l'instance
    rs = CurrentDb.OpenRecordset("select * from matable")   '> fonctionne encore
    rs = bd.OpenRecordset("select * from matable")          '> échoue: objet non défini
    Peut être qu'un débutant aurait écrit ceci:
    les deux syntaxes sont corrects: il n'y a pas de raison de faire du favoritisme.

    il n'a pas dit qu'il est débutant, mais il n'a pas dit qu'il est un pro.

    =JBO= tu es si brillant d'habitude.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Bonjour à tous,

    Alors voila où j'en suis...

    Sur tes conseils vodiem j'ai desactivé la gestion d'erreur sur ce code, et remis les "isnull" en debut des "If" car il y avait effectivement un probleme la dessus.

    Par contre, excellente nouvelle, j'ai fais tourner mon code en pas à pas et je sais qu'il reste "coincé" en boucle dans le

    Et j'ai essayé avec le

    mais ca n'a rien de plus concluant.
    Pour info la table qui contient les données testées contient trois lignes remplies.

  16. #16
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    tu boucle sur le même enregistrement.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    hum ouais mais la je ne sais vraiment pas comment le forcer a sortir de son enregistrement.

  18. #18
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    désolé, je pensais évident:

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    bonjour à tous,
    j'ai commencer la programmation vba il y a une semaine alors, j'ai pas encore la même vision que vous.
    On va peut-être trouver ma réflexion ridicule vu le peu d'expérience mais je me lance.
    Dans la boucle, c'est normal que tu ne fasses pas une relecture de ton recordset?
    du style
    lecture recordset
    do while
    traitement
    lecture recordset....
    loop

    sinon, je sais pas faut voir les autres avis mais avec opentable on peut modifier les données du recordset?? moi, j'ai fait +/- le même avec opendynaset.

    voilà vous pouvez rayer cette intervention du forum si je suis complètement à côté.

    bonne programmation à tous

  20. #20
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Perso, ce n'est pas la voie que j'utilise.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    While not RS.EOF
       Mon traitement
    RS.MoveNext
    Wend
    Ce qui donnerait ceci
    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
    Private Sub Commande56_Click()
    On Error GoTo Err_Commande56_Click
     
    Dim bd As DAO.Database
    Dim Depa As DAO.Recordset
    Dim PDC_IDC, TContrat, BaieT, cle As Integer
    Dim SQLDepa as String
     
    SQLDepa = "Select * from Depannage"
     
    Set bd = CurrentDb()
    Set Depa = bd.OpenRecordset(SQLDepa)
     
    Depa.MoveFirst
    While Not Depa.EOF
     
            If (Depa("N° PDC") Or Depa("IDC")) Is Null Then
            PDC_IDC = 1
            End If
     
            If (Depa("Type de contrat")) Is Null Then
            TContrat = 1
            End If
     
            If (Depa("Baie")) Is Null Then
            BaieT = 1
            End If
     
            If (Depa("Cle Maitre / Admin") Or Depa("Cle Esclave / Exploit") Or Depa("Cle Cryptage / Client")) Is Null Then
            cle = 1
            End If
     
            If (Depa("DTR")) Is Null Then
            BaieT = 1
            End If
     
      Depa.MoveNext
    Wend
     
    Depa.Close
    bd.Close
     
    If (PDC_IDC = 1) Then
    MsgBox ("Attention ! Au moins une ligne n'a ni PDC, ni IDC. Merci de corriger")
    Exit Sub
    End If
     
    If (TContrat = 1) Then
    MsgBox "Attention, Au moins une ligne n'a pas de Type Contrat renseigné. Merci de corriger"
    Exit Sub
    End If
     
    If (cle = 1) Then
    MsgBox ("Au moins une clé d'identification n'est pas renseignée. Merci de corriger")
    Exit Sub
    End If
     
        DoCmd.RunMacro "DepannageAno"
        DoCmd.OpenQuery "Ajout_Cocc_Depannage_Ano_213"
     
    Exit_Commande56_Click:
        Exit Sub
     
    Err_Commande56_Click:
        MsgBox Err.Description
        Resume Exit_Commande56_Click
     
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. probleme permissions recordset
    Par matthieuduc dans le forum Access
    Réponses: 1
    Dernier message: 22/11/2006, 11h59
  2. Probleme variable Recordset
    Par amoiraud dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/10/2006, 18h57
  3. Probleme creation recordset
    Par stan314 dans le forum Access
    Réponses: 1
    Dernier message: 14/05/2006, 16h13
  4. Probleme de recordset parcourant excel
    Par ironik dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2006, 12h00
  5. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30

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