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 :

Erreur d'éxecution 91 : Variable objet ou variablede bloc With non définie [AC-365]


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2012
    Messages : 171
    Par défaut Erreur d'éxecution 91 : Variable objet ou variablede bloc With non définie
    Bonsoir,

    Je réalise un publipostage de ACCESS vers WORD pour une association de balisage de chemins de randonnée avec un code VBA.
    Je sélectionne avec son n° de code un seul adhérent pour l'informer du montant de son indemnisation. Quand j'exécute ce code j'ai ce message d'erreur : Erreur d'éxecution 91 : Variable objet ou variable de bloc With non définie à la ligne 88.

    Merci d'avance pour votre aide.



    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    
    Sub PayeGM1_Indiv()
         Dim wApp As Word.Application
        Dim wDoc As Word.Document
        Dim chemin As String
        Dim sqlA As String, sqlS As String, sqlB As String, sqlC As String
        Dim rsA As DAO.Recordset, rsS As DAO.Recordset, rsB As DAO.Recordset, rsC As DAO.Recordset
        Dim db As DAO.Database
        
        Dim dbNumeroRupt As Double      ' pour mémoriser le N° adhérent en cours
        Dim cptLigneAdr As Long
        Set db = CurrentDb
    'sqlA = "SELECT * FROM R_Publipostage_adherents ORDER BY nom_adhe;"
    
        sqlA = "SELECT * FROM R_Publipostage_adherents" & _
        " LEFT JOIN R_Publipostage_Indemnisations ON R_Publipostage_adherents.numero = R_Publipostage_Indemnisations.num_adhe" & _
        " WHERE Nz([R_Publipostage_Indemnisations.num_adhe],0)='618.2';" 'Pour éditer les courriers des adhérents ayant droit à une indemnité
    
        Set rsA = db.OpenRecordset(sqlA)
        Set wApp = New Word.Application
      ' wApp.Visible = True
        chemin = CurrentProject.Path
         While Not rsA.EOF
         
         cptLigneAdr = 0
        Set wDoc = wApp.Documents.Open(chemin & "\Modèle-Bourse-Circuits.docx") 'Mettre l'année à jour
     
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("civilite") & " " & UCase(rsA.Fields("nom_adhe")) & " " & rsA.Fields("prenom")
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("adresse")
    If rsA.Fields("addresse2") <> " " Then
        cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("addresse2")
    End If
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("CodePostal") & " " & UCase(rsA.Fields("Ville"))
            
            sqlB = "SELECT * FROM R_Publipostage_NombrePR WHERE numero=" & rsA.Fields("R_Publipostage_Adherents.numero")
           Set rsB = db.OpenRecordset(sqlB)
            If Not rsB.EOF Then wDoc.Bookmarks("Total").Range.Text = rsB.Fields("Nbr_PR")
            If Not rsB.EOF Then wDoc.Bookmarks("Total1").Range.Text = rsB.Fields("Nbr_Pr")
            If Not rsB.EOF Then wDoc.Bookmarks("NumAdherent").Range.Text = rsB.Fields("numero")
            '--- tableau
            sqlS = "SELECT * FROM R_Publipostage_Circuits WHERE numero=" & rsA.Fields("R_Publipostage_Adherents.numero")
            Set rsS = db.OpenRecordset(sqlS)
            While Not rsS.EOF
                wDoc.Tables(1).Rows.Add
                wDoc.Tables(1).Rows.Last.Cells(1).Range.Text = rsS.Fields("secteur_balirando")
                wDoc.Tables(1).Rows.Last.Cells(2).Range.Text = UCase(rsS.Fields("code"))
                wDoc.Tables(1).Rows.Last.Cells(3).Range.Text = rsS.Fields("nom_pr")
                wDoc.Tables(1).Rows.Last.Cells(4).Range.Text = UCase(rsS.Fields("depart"))
                wDoc.Tables(1).Rows.Last.Cells(5).Range.Text = rsS.Fields("AR_circuit") & " Km"
                wDoc.Tables(1).Rows.Last.Cells(6).Range.Text = rsS.Fields("balisage")
                wDoc.Tables(1).Rows.Last.Cells(7).Range.Text = rsS.Fields("annee_attribution")
                wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(255, 0, 0)
        'Pour faire apparaitre en rouge les circuits remis à dispositions.
        If rsS.Fields("annee_attribution") = 2021 Then '(Pour bourse aux circuits 2025
        
        wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(255, 0, 0)
        wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Bold = True
        Else
        wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(0, 0, 0)
        wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Bold = False
    End If
                If dbNumeroRupt <> rsA.Fields("numero") Then
                    dbNumeroRupt = rsA.Fields("numero")
            sqlC = "SELECT * FROM R_Publipostage_Indemnisations WHERE num_adhe=" & rsA.Fields("numero")
            
            Set rsC = db.OpenRecordset(sqlC)
                wDoc.Bookmarks("TotaldistAR").Range.Text = UCase(rsC.Fields("Km_indemnisés")) & " Km"
                'wDoc.Bookmarks("Retenus").Range.Text = rsC.Fields("Retenus") & " Km"
                wDoc.Bookmarks("Montant").Range.Text = UCase(rsC.Fields("Montant")) & " €"
                wDoc.Bookmarks("Cheque").Range.Text = rsC.Fields("A percevoir") & ".00 €"
                'wDoc.Bookmarks("Info").Range.Text = IIf(Nz(rsC.Fields("Remarque"), "") = "0", "", Nz(rsC.Fields("Remarque"), "")) 'Permet d'afficher une information à l'adhérent
                End If
                rsS.MoveNext
     
            Wend
            dbNumeroRupt = 0
     
            'sauvegarde du fichier
            wDoc.SaveAs CurrentProject.Path & "\Publipostage\Indemnisations2026 Bourse circuits2027\Avec indemnisation\Adhérent unique\Circuits" & " " & rsA.Fields("nom_adhe") & " " & rsA.Fields("prenom") & ".docx"
            wDoc.Close (wdDoNotSaveChanges)
            rsA.MoveNext
        Wend
     
        rsS.Close:  Set rsS = Nothing
        rsA.Close:  Set rsA = Nothing
        db.Close:   Set db = Nothing
        wApp.Quit
        Set wApp = Nothing
        Dim wDoc1 As Object
     
    Dim stFicDocs As String
    Dim stRepDocs As String
    Set wApp = CreateObject("Word.Application")
    stRepDocs = (CurrentProject.Path)
     
    ' Fermer et libérer les objets
    Set wdapp = Nothing
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 522
    Par défaut
    A tester:
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    Option Compare Database
    Option Explicit
     
     
    Sub PayeGM1_Indiv()
        Dim wApp As Word.Application
        Dim wDoc As Word.Document
        Dim chemin As String
        Dim sqlA As String, sqlS As String, sqlB As String, sqlC As String
        Dim rsA As DAO.Recordset, rsS As DAO.Recordset, rsB As DAO.Recordset, rsC As DAO.Recordset
        Dim db As DAO.Database
     
        Dim dbNumeroRupt As Double      ' pour mémoriser le N° adhérent en cours
        Dim cptLigneAdr As Long
        Set db = CurrentDb
     
        'sqlA = "SELECT * FROM R_Publipostage_adherents ORDER BY nom_adhe;"
     
        sqlA = "SELECT * FROM R_Publipostage_adherents" & _
               " LEFT JOIN R_Publipostage_Indemnisations" & _
               " ON R_Publipostage_adherents.numero = R_Publipostage_Indemnisations.num_adhe" & _
               " WHERE Nz([R_Publipostage_Indemnisations.num_adhe],0)='618.2';"
     
        'Pour éditer les courriers des adhérents ayant droit à une indemnité
     
        Set rsA = db.OpenRecordset(sqlA)
        Set wApp = New Word.Application
      ' wApp.Visible = True
        chemin = CurrentProject.Path
     
        While Not rsA.EOF
            cptLigneAdr = 0
            Set wDoc = wApp.Documents.Open(chemin & "\Modèle-Bourse-Circuits.docx") 'Mettre l'année à jour
     
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("civilite") & " " & UCase(rsA.Fields("nom_adhe")) & " " & rsA.Fields("prenom")
     
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("adresse")
     
            If rsA.Fields("addresse2") <> " " Then
                cptLigneAdr = cptLigneAdr + 1
                wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("addresse2")
            End If
     
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("CodePostal") & " " & UCase(rsA.Fields("Ville"))
     
            sqlB = "SELECT * FROM R_Publipostage_NombrePR WHERE numero=" & rsA.Fields("R_Publipostage_Adherents.numero")
            Set rsB = db.OpenRecordset(sqlB)
     
            If Not rsB.EOF Then wDoc.Bookmarks("Total").Range.Text = rsB.Fields("Nbr_PR")
            If Not rsB.EOF Then wDoc.Bookmarks("Total1").Range.Text = rsB.Fields("Nbr_Pr")
            If Not rsB.EOF Then wDoc.Bookmarks("NumAdherent").Range.Text = rsB.Fields("numero")
     
            '--- tableau
            sqlS = "SELECT * FROM R_Publipostage_Circuits WHERE numero=" & rsA.Fields("R_Publipostage_Adherents.numero")
            Set rsS = db.OpenRecordset(sqlS)
     
            While Not rsS.EOF
                wDoc.Tables(1).Rows.Add
                wDoc.Tables(1).Rows.Last.Cells(1).Range.Text = rsS.Fields("secteur_balirando")
                wDoc.Tables(1).Rows.Last.Cells(2).Range.Text = UCase(rsS.Fields("code"))
                wDoc.Tables(1).Rows.Last.Cells(3).Range.Text = rsS.Fields("nom_pr")
                wDoc.Tables(1).Rows.Last.Cells(4).Range.Text = UCase(rsS.Fields("depart"))
                wDoc.Tables(1).Rows.Last.Cells(5).Range.Text = rsS.Fields("AR_circuit") & " Km"
                wDoc.Tables(1).Rows.Last.Cells(6).Range.Text = rsS.Fields("balisage")
                wDoc.Tables(1).Rows.Last.Cells(7).Range.Text = rsS.Fields("annee_attribution")
                wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(255, 0, 0)
                ' Pour faire apparaitre en rouge les circuits remis à dispositions.
                If rsS.Fields("annee_attribution") = 2021 Then '(Pour bourse aux circuits 2025
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(255, 0, 0)
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Bold = True
                Else
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(0, 0, 0)
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Bold = False
                End If
                If dbNumeroRupt <> rsA.Fields("numero") Then
                    dbNumeroRupt = rsA.Fields("numero")
                    sqlC = "SELECT * FROM R_Publipostage_Indemnisations WHERE num_adhe=" & rsA.Fields("numero")
                    Set rsC = db.OpenRecordset(sqlC)
                    wDoc.Bookmarks("TotaldistAR").Range.Text = UCase(rsC.Fields("Km_indemnisés")) & " Km"
                    'wDoc.Bookmarks("Retenus").Range.Text = rsC.Fields("Retenus") & " Km"
                    wDoc.Bookmarks("Montant").Range.Text = UCase(rsC.Fields("Montant")) & " €"
                    wDoc.Bookmarks("Cheque").Range.Text = rsC.Fields("A percevoir") & ".00 €"
                    'wDoc.Bookmarks("Info").Range.Text = IIf(Nz(rsC.Fields("Remarque"), "") = "0", "", Nz(rsC.Fields("Remarque"), "")) 'Permet d'afficher une information à l'adhérent
                End If
                rsS.MoveNext
            Wend
            dbNumeroRupt = 0
     
            'sauvegarde du fichier
            wDoc.SaveAs CurrentProject.Path & "\Publipostage\Indemnisations2026 Bourse circuits2027\Avec indemnisation\Adhérent unique\Circuits" & " " & rsA.Fields("nom_adhe") & " " & rsA.Fields("prenom") & ".docx"
            wDoc.Close (wdDoNotSaveChanges)
            rsA.MoveNext
        Wend
     
        ' --- Fermeture et libération des recordsets et de la DB ---
        If Not rsS Is Nothing Then
            If rsS.State = dbStateOpen Then rsS.Close
            Set rsS = Nothing
        End If
     
        If Not rsB Is Nothing Then
            If rsB.State = dbStateOpen Then rsB.Close
            Set rsB = Nothing
        End If
     
        If Not rsC Is Nothing Then
            If rsC.State = dbStateOpen Then rsC.Close
            Set rsC = Nothing
        End If
     
        If Not rsA Is Nothing Then
            If rsA.State = dbStateOpen Then rsA.Close
            Set rsA = Nothing
        End If
     
        If Not db Is Nothing Then
            db.Close
            Set db = Nothing
        End If
     
        ' --- Fermeture de Word ---
        If Not wApp Is Nothing Then
            wApp.Quit
            Set wApp = Nothing
        End If
     
        Dim wDoc1 As Object
        Dim stFicDocs As String
        Dim stRepDocs As String
        Set wApp = CreateObject("Word.Application")
        stRepDocs = (CurrentProject.Path)
        ' Fermer et libérer les objets
        Set wdapp = Nothing
     
    End Sub
    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2012
    Messages : 171
    Par défaut
    Bonjour EricDgn,

    Merci pour ta réponse, j'ai testé ton code et j'ai maintenant l'erreur ci dessous à la ligne 100.

    Nom : Erreur de compilation.jpg
Affichages : 82
Taille : 9,2 Ko

    Bonne journée.

    Cordialement.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 522
    Par défaut
    essayer ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        If Not rsS Is Nothing Then
            rsS.Close
            Set rsS = Nothing
        End If
    (et idem pour les suivants)
    mais je pense que cela va revenir sur Erreur d'exécution 91

    Dans ce dernier cas, une méthode crasse, ajouter
    en ligne 99: On Error Resume Next
    en ligne 119: On Error Goto 0
    et voir ce que cela donne!

    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2012
    Messages : 171
    Par défaut
    Merci pour tes propositions

    Code modifié
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    Option Compare Database
    Option Explicit
     
     
    Sub PayeGM1_Indiv()
        Dim wApp As Word.Application
        Dim wDoc As Word.Document
        Dim chemin As String
        Dim sqlA As String, sqlS As String, sqlB As String, sqlC As String
        Dim rsA As DAO.Recordset, rsS As DAO.Recordset, rsB As DAO.Recordset, rsC As DAO.Recordset
        Dim db As DAO.Database
     
        Dim dbNumeroRupt As Double      ' pour mémoriser le N° adhérent en cours
        Dim cptLigneAdr As Long
        Set db = CurrentDb
     
        'sqlA = "SELECT * FROM R_Publipostage_adherents ORDER BY nom_adhe;"
     
        sqlA = "SELECT * FROM R_Publipostage_adherents" & _
               " LEFT JOIN R_Publipostage_Indemnisations" & _
               " ON R_Publipostage_adherents.numero = R_Publipostage_Indemnisations.num_adhe" & _
               " WHERE Nz([R_Publipostage_Indemnisations.num_adhe],0)='618.2';"
     
        'Pour éditer les courriers des adhérents ayant droit à une indemnité
     
        Set rsA = db.OpenRecordset(sqlA)
        Set wApp = New Word.Application
      ' wApp.Visible = True
        chemin = CurrentProject.Path
     
        While Not rsA.EOF
            cptLigneAdr = 0
            Set wDoc = wApp.Documents.Open(chemin & "\Modèle-Bourse-Circuits.docx") 'Mettre l'année à jour
     
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("civilite") & " " & UCase(rsA.Fields("nom_adhe")) & " " & rsA.Fields("prenom")
     
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("adresse")
     
            If rsA.Fields("addresse2") <> " " Then
                cptLigneAdr = cptLigneAdr + 1
                wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("addresse2")
            End If
     
            cptLigneAdr = cptLigneAdr + 1
            wDoc.Bookmarks("LigneAdr" & Format(cptLigneAdr, "00")).Range.Text = rsA.Fields("CodePostal") & " " & UCase(rsA.Fields("Ville"))
     
            sqlB = "SELECT * FROM R_Publipostage_NombrePR WHERE numero=" & rsA.Fields("R_Publipostage_Adherents.numero")
            Set rsB = db.OpenRecordset(sqlB)
     
            If Not rsB.EOF Then wDoc.Bookmarks("Total").Range.Text = rsB.Fields("Nbr_PR")
            If Not rsB.EOF Then wDoc.Bookmarks("Total1").Range.Text = rsB.Fields("Nbr_Pr")
            If Not rsB.EOF Then wDoc.Bookmarks("NumAdherent").Range.Text = rsB.Fields("numero")
     
            '--- tableau
            sqlS = "SELECT * FROM R_Publipostage_Circuits WHERE numero=" & rsA.Fields("R_Publipostage_Adherents.numero")
            Set rsS = db.OpenRecordset(sqlS)
     
            While Not rsS.EOF
                wDoc.Tables(1).Rows.Add
                wDoc.Tables(1).Rows.Last.Cells(1).Range.Text = rsS.Fields("secteur_balirando")
                wDoc.Tables(1).Rows.Last.Cells(2).Range.Text = UCase(rsS.Fields("code"))
                wDoc.Tables(1).Rows.Last.Cells(3).Range.Text = rsS.Fields("nom_pr")
                wDoc.Tables(1).Rows.Last.Cells(4).Range.Text = UCase(rsS.Fields("depart"))
                wDoc.Tables(1).Rows.Last.Cells(5).Range.Text = rsS.Fields("AR_circuit") & " Km"
                wDoc.Tables(1).Rows.Last.Cells(6).Range.Text = rsS.Fields("balisage")
                wDoc.Tables(1).Rows.Last.Cells(7).Range.Text = rsS.Fields("annee_attribution")
                wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(255, 0, 0)
                ' Pour faire apparaitre en rouge les circuits remis à dispositions.
                If rsS.Fields("annee_attribution") = 2021 Then '(Pour bourse aux circuits 2025
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(255, 0, 0)
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Bold = True
                Else
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Color = RGB(0, 0, 0)
                    wDoc.Tables(1).Rows.Last.Cells(7).Range.Font.Bold = False
                End If
                If dbNumeroRupt <> rsA.Fields("numero") Then
                    dbNumeroRupt = rsA.Fields("numero")
                    sqlC = "SELECT * FROM R_Publipostage_Indemnisations WHERE num_adhe=" & rsA.Fields("numero")
                    Set rsC = db.OpenRecordset(sqlC)
                    wDoc.Bookmarks("TotaldistAR").Range.Text = UCase(rsC.Fields("Km_indemnisés")) & " Km"
                    'wDoc.Bookmarks("Retenus").Range.Text = rsC.Fields("Retenus") & " Km"
                    wDoc.Bookmarks("Montant").Range.Text = UCase(rsC.Fields("Montant")) & " €"
                    wDoc.Bookmarks("Cheque").Range.Text = rsC.Fields("A percevoir") & ".00 €"
                    'wDoc.Bookmarks("Info").Range.Text = IIf(Nz(rsC.Fields("Remarque"), "") = "0", "", Nz(rsC.Fields("Remarque"), "")) 'Permet d'afficher une information à l'adhérent
                End If
                rsS.MoveNext
            Wend
            dbNumeroRupt = 0
     
            'sauvegarde du fichier
            wDoc.SaveAs CurrentProject.Path & "\Publipostage\Indemnisations2026 Bourse circuits2027\Avec indemnisation\Adhérent unique\Circuits" & " " & rsA.Fields("nom_adhe") & " " & rsA.Fields("prenom") & ".docx"
            wDoc.Close (wdDoNotSaveChanges)
            rsA.MoveNext
        Wend
     
        ' --- Fermeture et libération des recordsets et de la DB ---
            If Not rsS Is Nothing Then On Error Resume Next
            rsS.Close
            Set rsS = Nothing
        End If
     
            If Not rsB Is Nothing Then
            rsB.Close
            Set rsB = Nothing
        End If
     
            If Not rsC Is Nothing Then
            rsC.Close
            Set rsC = Nothing
        End If
     
            If Not rsA Is Nothing Then
            rsA.Close
            Set rsA = Nothing
        End If
     
        If Not db Is Nothing Then On Error GoTo 0
            db.Close
            Set db = Nothing
        End If
     
        ' --- Fermeture de Word ---
        If Not wApp Is Nothing Then
            wApp.Quit
            Set wApp = Nothing
        End If
     
        Dim wDoc1 As Object
        Dim stFicDocs As String
        Dim stRepDocs As String
        Set wApp = CreateObject("Word.Application")
        stRepDocs = (CurrentProject.Path)
        ' Fermer et libérer les objets
        Set wdapp = Nothing
     
    End Sub
    Proposition 1 j'ai l'erreur ci dessous à la ligne 136
    Nom : Erreur de compilation2.png
Affichages : 54
Taille : 4,3 Ko
    Avec ta méthode crasse j'ai l'erreur ci dessous à la ligne 102
    Nom : Erreur3.png
Affichages : 53
Taille : 4,2 Ko

    Encore merci

    Bonne soirée

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 522
    Par défaut
    désolé, mais ce que je voulais dire 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
        ' --- Fermeture et libération des recordsets et de la DB ---
        On Error Resume Next
     
        If Not rsS Is Nothing Then 
            rsS.Close
            Set rsS = Nothing
        End If
     
       If Not rsB Is Nothing Then
            rsB.Close
            Set rsB = Nothing
        End If
     
        If Not rsC Is Nothing Then
            rsC.Close
            Set rsC = Nothing
        End If
     
        If Not rsA Is Nothing Then
            rsA.Close
            Set rsA = Nothing
        End If
     
        On Error GoTo 0
     
        If Not db Is Nothing Then 
            db.Close
            Set db = Nothing
        End If

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    9 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9 043
    Par défaut
    bonsoir,
    si on se réfère au paragraphe "Remarques" de la méthode Close, pourquoi ne pas essayer tout simplement Set rsS = Nothing ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2012
    Messages : 171
    Par défaut
    Bonjour Eric Dgn et tee_grandbois,

    Merci pour vos réponses.

    A Eric Dgn, j'ai toujours la même erreur.

    A tee_grandbois

    J'ai mis le code que tu m'as indiqué dans mon code d'origine à la dernière ligne et ca marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' Fermer et libérer les objets
    Set rsS = Nothing
     
    End Sub
    Cordialement.

  9. #9
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    9 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9 043
    Par défaut
    bonjour,
    J'ai mis le code que tu m'as indiqué dans mon code d'origine à la dernière ligne et ca marche.
    pour info, j'ai toujours procédé comme tu l'as fait précédemment (c.à.d fermeture d'une instance d'objet (méthode Close), puis destruction de l'objet (méthode Set objet = Nothing))
    Mais je me suis aperçu au fil du temps que la méthode Close n'est pas nécessaire pour fermer les objets Access créés dans VBA car elles le sont automatiquement lors de la fermeture de la Sub, Fonction, procédure évènementielle ...
    Par contre, il faut absolument garder la méthode Close pour les objets externes à la BD tels que: bases externes, Excel, Word, ...

  10. #10
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2012
    Messages : 171
    Par défaut
    Bonsoir,
    Merci tee_grandbois pour ce complément d'information.

    Bonne soirée.

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

Discussions similaires

  1. [XL-2016] erreur d'exécution 91 Variable Objet ou de bloc with non défini
    Par Floyd-44 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/12/2018, 17h28
  2. Erreur 91 : variable objet ou variable de bloc with non définie
    Par blobsam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2011, 17h19
  3. [XL-2007] Message d'erreur : Variable objet ou Variable de bloc With non définie
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2011, 10h02
  4. erreur 91 variable objet ou variable de bloc with non définie
    Par ballantine's dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 03/12/2009, 16h41
  5. Réponses: 13
    Dernier message: 01/06/2006, 17h20

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