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 :

[VBA] aide sur Recordset


Sujet :

VBA Access

  1. #1
    Membre confirmé
    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
    Par défaut [VBA] aide sur Recordset
    Bonjour tous le monde,

    Voila j'ai un soucis, j'utilise 2 recordset pour remplir les champs d'un recorset avec un ceux du deuxieme. Or lorsque je clique sur mon bouton rien ne se passe...

    Si une âme charitable avait une idée pour moi...

    Voici 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
     
    Private Sub importMmoins1_Click()
     
    On Error GoTo Err_importMmoins1_Click
     
    If IsNull(Me![moisM-1]) Or IsNull(Me![anneeM-1]) Then
    MsgBox "Merci de saisir l'année et le mois correspondant au mois dernier"
    Exit Sub
    End If
     
     
    Dim fs As New Scripting.FileSystemObject
    If Not fs.FileExists("C:\Temp\Depannage.xls") Then
    MsgBox "Le Fichier Depannage.xls est inexistant dans le repertoire C:\Temp"
    Exit Sub
    End If
     
    DoCmd.RunMacro "ImportTxt"
     
    Dim TabOld  As Recordset
    Dim TabNew  As Recordset
     
    Set TabOld = CurrentDb.OpenRecordset("ReqMoisMmoins1")
    Set TabNew = CurrentDb.OpenRecordset("TempAjout")
     
     
    TabOld.MoveFirst
    While Not (TabOld.EOF)
     
        enr.MoveFirst
        While Not (TabNew.EOF)
     
            If TabOld("N° PDC") = TabNew("N° PDC") Then
            TabNew.EditMode
            TabNew("Commentaire BICM") = TabOld("Commentaire BICM")
            TabNew("Etat de l'affaire") = TabOld("Etat de l'affaire")
            TabNew("Nbres Relance") = TabOld("Nbres Relance") + 1
            TabNew.Update
            End If
            TabNew.MoveNext
            Loop
            Wend
     
        TabOld.MoveNext
        Loop
        Wend
     
    TabOld.Close
    TabNew.Close
     
    DoCmd.OpenQuery ("AjoutListeGen")
    DoCmd.OpenQuery ("SupprAjoutTemp")
     
    Exit_importMmoins1_Click:
        Exit Sub
     
    Err_importMmoins1_Click:
        MsgBox Err.Description
        Resume Exit_importMmoins1_Click
     
    End Sub
    Par contre je suis certain que tout fonctionne bien jusqu'à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunMacro "ImportTxt"
    parce que lorque je met en commentaire toute la partie concernant les recorset ma table est remplie mais sans les commentaires que je veux rajouter

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    Bonjour,

    Quelques pistes:

    Je n'ai pas vu de recordset enr déclaré dans ton code...


    Que viennent-il faire ici ? ça passe à la compilation ça?

    While ... wend ne nécessite pas de Loop pourtant

    As-tu posé uin point d'arrêt et exécuté en pas à pas? afin de voir s'il rentre dans tes while.... peut être que ta requête ReqMoisMmoins1 ne revoient aucune ligne....

  3. #3
    Membre confirmé
    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
    Par défaut
    en ce qui concerne le :
    tu as parfaitement raison j'ai oublié de le modifier, cela donne
    J'ai retiré les Loop et à vrai dire je ne peux pas executé en pas à pas car à la compilation la ligne :

    sort en anomalie. Le message d'erreur est "Erreur de Compilation, Utilisation incorrect de la propriété.

    Merci pour ton aide

  4. #4
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    D'où sort-tu cette méthode ? Je suppose que tu confonds avec un autre langage....

    Prends donc le temps de compiler tout ton code avant de le tester..

    Bon courage

  5. #5
    Membre confirmé
    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
    Par défaut
    le soucis etant que j'ai utiliser EditMode parce que VB me le proposait lors de ma saisi.
    J'avais et je viens de ré-essayer avec TabNew.Edit et le resultat est mot pour mot le meme.

    Merci pour ta disponibilité

  6. #6
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    Citation Envoyé par clao260
    le soucis etant que j'ai utiliser EditMode parce que VB me le proposait lors de ma saisi.
    J'avais et je viens de ré-essayer avec TabNew.Edit et le resultat est mot pour mot le meme.

    Merci pour ta disponibilité

    Autant pour moi, EditMode est une propriété (et non une méthode) reconnue l'objet DAO.Recordset mais elle ne correspond pas à ton besoin.


    Au fait... TabNew.... tu veux faire un ajout ou une mise à jour?

    Si oui, il te faut faire un

    Pour aller plus loin, je te conseille un peu de lecture .... http://warin.developpez.com/access/dao/


    Bon courage.

  7. #7
    Membre confirmé
    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
    Par défaut
    Bonjour on bonsoir en fonction du cas,

    merci mout1234 pour la doc c'est tres interressant. Je l'ai parcouru un peu en travers et premiere chose importante j'avais oublier de cocher la propriété DAO. Une fois ca fais, ca avance.

    La compilation passe bien maintenant pourtant j'ai tout de meme une anomalie a l'execution et je ne comprend pas pourquoi...

    Mon nouveau code 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
    Private Sub importMmoins1_Click()
     
    On Error GoTo Err_importMmoins1_Click
     
    If IsNull(Me![moisM-1]) Or IsNull(Me![anneeM-1]) Then
    MsgBox "Merci de saisir l'année et le mois correspondant au mois dernier"
    Exit Sub
    End If
     
    Dim fs As New Scripting.FileSystemObject
    If Not fs.FileExists("C:\Temp\Depannage.xls") Then
    MsgBox "Le Fichier Depannage.xls est inexistant dans le repertoire C:\Temp"
    Exit Sub
    End If
     
    DoCmd.RunMacro "ImportTxt"
    DoCmd.OpenQuery ("ReqMoisMmoins1")
     
    Dim TabOld As DAO.Recordset
    Dim TabNew As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set TabOld = TabOld.OpenRecordset(TempAjout, dbOpenTable)
    Set TabNew = TabNew.OpenRecordset(TabMoisM_Moins1, dbOpenTable)
     
    TabOld.MoveFirst
    While Not (TabOld.EOF)
     
        TabNew.MoveFirst
        While Not (TabNew.EOF)
     
            If TabOld("N° PDC") = TabNew("N° PDC") Then
            TabNew.Edit
            TabNew("Commentaire BICM") = TabOld("Commentaire BICM")
            TabNew("Etat de l'affaire") = TabOld("Etat de l'affaire")
            TabNew("Nbres Relance") = TabOld("Nbres Relance") + 1
            TabNew.Update
            End If
            TabNew.MoveNext
            Wend
     
        TabOld.MoveNext
        Wend
     
    TabNew.Close
    TabOld.Close
     
    DoCmd.OpenQuery ("AjoutListeGen")
    DoCmd.OpenQuery ("SupprAjoutTemp")
     
    Exit_importMmoins1_Click:
        Exit Sub
     
    Err_importMmoins1_Click:
        MsgBox Err.Description
        Resume Exit_importMmoins1_Click
     
    End Sub
    et lors de l'execution le message est "Variable Objet ou variable de bloc With non définie"

    Merci de votre aide...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu as un problème ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set TabOld = TabOld.OpenRecordset(TempAjout, dbOpenTable)
    Set TabNew = TabNew.OpenRecordset(TabMoisM_Moins1, dbOpenTable)
    Regarde bien le tuto, tu aurais dut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set TabOld = oDb.OpenRecordset(TempAjout, dbOpenTable)
    Set TabNew = oDb.OpenRecordset(TabMoisM_Moins1, dbOpenTable)
    en effet, tu dois ouvrir un recordset sur la base oDb.

    Starec

  9. #9
    Membre confirmé
    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
    Par défaut
    RRRRRAAAAAAAAAHHHHHH je craque !!!!

    Apres avoir criez un bon coup, bonjour a tous.

    Citation Envoyé par Starec

    Regarde bien le tuto, tu aurais dut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set TabOld = oDb.OpenRecordset(TempAjout, dbOpenTable)
    Set TabNew = oDb.OpenRecordset(TabMoisM_Moins1, dbOpenTable)
    en effet, tu dois ouvrir un recordset sur la base oDb.
    Tu a tout a fait raison apres avoir relus un peu plus dans le detail je l'ai modifier et.... le probleme n'est plus le meme.

    Il me dit maintenant " Le moteur de base de données microsoft Jet n'a pas pu trouver l'objet ". Assurez vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'acces."

    Je suis desolé de vous embeter sans arret je pense qu'une fois terminé ce projet j'attendrai de m'y connaitre un peu plus en VBA avant de m'attaquer a access.

    Merci a tous

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Qu'est-ce que TempAjout et TabMoisM_Moins1 ?

    Si c'est le nom de tables ou de requêtes, il faut les mettre entre guillemets.

    Starec

  11. #11
    Membre confirmé
    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
    Par défaut
    Merci a tous pour vos reponses, ca commence a prendre forme.

    J'ai retouché encore un petit peu le programme et ca a l'air de pas trop mal fonctionner.

    voici mon nouveau 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
     
    Private Sub importMmoins1_Click()
     
    On Error GoTo Err_importMmoins1_Click
     
    If IsNull(Me![moisM-1]) Or IsNull(Me![anneeM-1]) Then
    MsgBox "Merci de saisir l'année et le mois correspondant au mois dernier"
    Exit Sub
    End If
     
    Dim fs As New Scripting.FileSystemObject
    If Not fs.FileExists("C:\Temp\Depannage.xls") Then
    MsgBox "Le Fichier Depannage.xls est inexistant dans le repertoire C:\Temp"
    Exit Sub
    End If
     
    DoCmd.RunMacro ("ImportTxt")
    DoCmd.OpenQuery ("ReqMoisMmoins1")
     
    Dim bd As DAO.Database
    Dim TabNew As DAO.Recordset
    Dim TabOld As DAO.Recordset
     
    Set bd = CurrentDb()
    Set TabNew = bd.OpenRecordset("TempAjout", dbOpenTable)
    Set TabOld = bd.OpenRecordset("TabMoisM_Moins1", dbOpenTable)
     
    TabNew.MoveFirst
    Do While Not TabNew.EOF
     
        TabOld.MoveFirst
        Do While Not TabOld.EOF
     
            If (TabNew("N° PDC") = TabOld("N° PDC")) Then
            TabNew.Edit
            TabNew("Commentaire BICM") = TabOld("Commentaire BICM")
            TabNew("Etat de l'affaire") = TabOld("Etat de l'affaire")
            TabNew("Nbres Relance") = TabOld("Nbres Relance") + 1
            TabNew.Update
            End If
            TabOld.MoveNext
            Loop
     
        TabNew.MoveNext
        Loop
     
    TabOld.Close
    TabNew.Close
    bd.Close
     
    DoCmd.OpenQuery ("AjoutListeGen")
    DoCmd.OpenQuery ("SupprAjoutTemp")
    MsgBox "Terminé !"
     
    Exit_importMmoins1_Click:
        Exit Sub
     
    Err_importMmoins1_Click:
        MsgBox Err.Description
        Resume Exit_importMmoins1_Click
     
    End Sub
    Par contre j'ai encore un soucis...

    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            TabNew("Nbres Relance") = TabOld("Nbres Relance") + 1
    semble ne pas fonctionner. J'arrive a recuperer les données de mes autre champs mais celui ci ne s'incrémente pas.

    Savez-vous d'ou cela peut venir

    Merci beaucoup pour votre aide

  12. #12
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    semble ne pas fonctionner. J'arrive a recuperer les données de mes autre champs mais celui ci ne s'incrémente pas.
    Quelques pistes:

    Tu obtiens quoi ? une erreur d'exécution? la valeur reste inchangée?

    Regarde combien vaut tabOld("Nbres Relance") en exécutant en pas à pas.
    Puis tabOld("Nbres Relance") + 1

    tabOld("Nbres Relance") est bien un numérique ?

  13. #13
    Membre confirmé
    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
    Par défaut
    Oui en fait la valeur reste inchangée ( en l'occurence 0 ) le champ ne s'incrémente pas.
    Le champ est bien présent dans les 2 tables et est bien de type numérique.

    En ce qui concerne l'execution pas a pas, je n'arrive pas a le faire fonctionner, je met un espion sur la valeur mais le fait d'appuyer sur F8 ( pas a pas ) ne fais absolument rien bouger...

    Merci de votre aide

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

Discussions similaires

  1. [OL-2010] Tri de mails en VBA // aide sur débogage du code
    Par joe.levrai dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 31/05/2013, 14h55
  2. [VBA-E]Aide sur les ComboBox
    Par Alex_Kidd dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/05/2006, 17h47
  3. [VBA-E]aide sur visual basic
    Par jaroddu94 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/02/2006, 13h59
  4. [VBA][Excel]Mettre un bouton d'aide sur un userform
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/01/2006, 18h30
  5. VBA Word - Aide sur les "Retours" dans tableaux
    Par wouebmaster dans le forum VBA Word
    Réponses: 5
    Dernier message: 29/12/2005, 10h08

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