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 Word Discussion :

Erreur de compilation étrange [WD-2016]


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 48
    Points
    48
    Par défaut Erreur de compilation étrange
    Bonjour,

    Alors j'ai un problème assez étrange.

    Voici deux morceaux de code :

    Code #1:
    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
    Sub ChangeParameters()
        chemin = ThisDocument.Path
        Dim appXl As Excel.Application
        Dim Wb As Excel.Workbook
        Set oApplication = Nothing
        bAppHasBeenStarted = False
     
        If IsLoaded(PARAMETERS_FILE) Then
            Set appXl = GetObject(, "Excel.Application")
            Set Wb = appXl.Workbooks(PARAMETERS_FILE)
            VBA.AppActivate appXl.Caption
        Else
            Set appXl = CreateObject("Excel.Application")
            appXl.Visible = True
            Set Wb = appXl.Workbooks.Open(chemin & "\" & PARAMETERS_FILE)
        End If
    End Sub
    Code #2 :
    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
    Sub DisplayCocoLists()
        chemin = ThisDocument.Path
        Dim appXl As Excel.Application
        Dim Wb As Excel.Workbook
        Set oApplication = Nothing
        bAppHasBeenStarted = False
        
        ' référence Excel 2016 si ce n'est pas le cas
        RefXLS
        
        If IsLoaded(PARAMETERS_FILE) Then
            Set appXl = GetObject(, "Excel.Application")
            Set Wb = appXl.Workbooks(PARAMETERS_FILE)
            VBA.AppActivate appXl.Caption
        Else
            Set appXl = CreateObject("Excel.Application")
            appXl.Visible = True
            Set Wb = appXl.Workbooks.Open(chemin & "\" & PARAMETERS_FILE)
        End If
        
        Application.ScreenUpdating = False
        
        ' suppression des données déjà existantes
        With Wb
            .Sheets("CONTENTCONTROLS").Rows("2:2000").Delete
        End With
        
        ' parcours des Content Controls
        nbCoco = countCoco()
        ligne = 2
        For i = 2 To nbCoco + 1
            With ActiveDocument.ContentControls.Item(i - 1)
                ' affichage des données uniquement en cas de list ou de combobox
                If .Type = wdContentControlDropdownList Or .Type = wdContentControlComboBox Then
                    Wb.Sheets("CONTENTCONTROLS").Cells(ligne, 1) = .ID
                    Wb.Sheets("CONTENTCONTROLS").Cells(ligne, 2) = .Title
                    Wb.Sheets("CONTENTCONTROLS").Cells(ligne, 3) = .Range.Text
                    For j = 1 To .DropdownListEntries.Count
                        Wb.Sheets("CONTENTCONTROLS").Cells(ligne, 3 + j) = removeCounter(.DropdownListEntries.Item(j))
                    Next j
                    ligne = ligne + 1
                End If
            End With
        Next i
        
        ' affichage du fichier excel
        Application.ScreenUpdating = True
        appXl.Visible = True
        VBA.AppActivate appXl.Caption
        Wb.Sheets(SH_COCO).Select
    End Sub
    Chez moi, ces deux codes fonctionnent parfaitement.

    Chez un utilisateur, qui a bien sélectionné la librairie Excel dans les références, le premier code fonctionne, mais le deuxième bug avec l'erreur "Erreur de compilation. Membre de méthodes ou données introuvables" et en surlignant le mot que j'ai mis en rouge dans le deuxième code.

    Or les deux codes pour travailler sur le document excel sont exactement les mêmes. Ce qui fonctionne pour l'un devrait fonctionner pour l'autre.

    Qu'est-ce que j'ai raté ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par DarkGriffin Voir le message

    Bonjour,

    Je ne pense pas pouvoir vous aider, mais dans vos codes, je ne vous vois pas supprimer vos variables Wb et Appxl à la fin. Peut-il y avoir conflit s'il y a eu déjà plusieurs appels ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 48
    Points
    48
    Par défaut
    Bonjour Eric,

    Je vais voir si ça change quelque chose en cloturant les instances, mais j'en doute.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par DarkGriffin Voir le message
    Bonjour,

    Effectivement, je n'en suis pas du tout sûr.
    Sur Excel, j'ai constaté pas mal de fois que lorsque j'ouvrais un fichier d'une version périmée, Excel ouvrait parfois une nouvelle instance sans savoir pourquoi. Lorsque cela arrive mes macros complémentaires dégagent également à la fermeture de l'instance.
    Es-tu certain de récupérer l'instance en cours dans ton deuxième cas ? Et lorsque cela plante, si tu vas dans l'éditeur VBA, te manque-t-il une référence ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 48
    Points
    48
    Par défaut
    Bon, l'erreur était énigmatique, la résolution le fut tout autant : le problème est parti comme il est venu. Donc le clos cette question, qui n'a au final aucun sens, désolé ^^

  6. #6
    Candidat au Club
    Homme Profil pro
    Juriste
    Inscrit en
    Septembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Juriste

    Informations forums :
    Inscription : Septembre 2019
    Messages : 5
    Points : 4
    Points
    4
    Par défaut erreur de compilation: membre de méthode ou de données introuvable
    Bonjour,

    J'ai un problème d'exécution de mon code qui a surgi de manière soudaine alors que le code fonctionnait normalement avant.

    Le message d'erreur est le suivant:

    Erreur de compilation

    Membre de méthode ou de données introuvables
    Le code concerné est le code ci-dessous:

    Merci d'avance pour votre aide.

    TM


    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
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    Sub Prod_Facture()
    'Déclaration des variables
    Dim xlApp As Excel.Application
    Dim xlWb As Excel.Workbook
    Dim xlSh As Excel.Worksheet
    On Error GoTo err_handler
    Dim iR, jR, lR, mR As Integer
    Dim i, j, k, l, m As Integer
     
    Dim oDoc As Document
    Dim oTbl, oTb2, oTb3 As Table
    Dim stDocName As String
    Dim stPath As String
    Dim plage As Range, resultat As Integer
    Dim User As String
     
    User = "t.molierac"
     
    'Affectation des données aux variables
    Set xlApp = CreateObject("Excel.Application")
    Set xlWb = xlApp.Workbooks.Open("C:\Users\" & User & "\OneDrive - LEXIQUE\RESEAU LEXIQUE\FACTURE\PROD\SGBD_Facture_Production.xlsm")
    Set xlSh1 = xlWb.Worksheets(1)
    Set xlSh2 = xlWb.Worksheets(2)
    Set xlSh5 = xlWb.Worksheets(5)
    'Récupération du nombre de lignes et de colonnes
    iR = xlSh1.UsedRange.Rows.Count
    jR = xlSh2.UsedRange.Rows.Count
    err_handler:
       MsgBox "The code failed at line " & Erl, vbCritical
     
     For i = 41 To 41
            stDocName = "C:\Users\" & User & "\OneDrive - LEXIQUE\RESEAU LEXIQUE\FACTURE\DEF\" & Format(Now, "yyyy_mm_dd_") & xlSh1.Cells(i, 3) & "_" & xlSh1.Cells(i, 4) & "_" & xlSh1.Cells(i, 6) & ".docx"
            Set oDoc = Documents.Add("C:\Users\" & User & "\OneDrive - LEXIQUE\RESEAU LEXIQUE\FACTURE\PROD\Facture_Modèle_Production.docm")
            Set oTbl = oDoc.Tables(1)
            Set oTb2 = oDoc.Tables(2)
            Set oTb3 = oDoc.Tables(3)
     
            oDoc.Bookmarks("S1").Range.Text = xlSh1.Cells(i, 5)
            oDoc.Bookmarks("S2").Range.Text = xlSh1.Cells(i, 7)
            oDoc.Bookmarks("S3").Range.Text = xlSh1.Cells(i, 6)
            oDoc.Bookmarks("S4").Range.Text = xlSh1.Cells(i, 8)
            oDoc.Bookmarks("S5").Range.Text = xlSh1.Cells(i, 9)
            oDoc.Bookmarks("S6").Range.Text = xlSh1.Cells(i, 10)
            oDoc.Bookmarks("S7").Range.Text = xlSh1.Cells(i, 11)
            oDoc.Bookmarks("S8").Range.Text = xlSh1.Cells(i, 12)
            oDoc.Bookmarks("S9").Range.Text = xlSh1.Cells(i, 13)
            oDoc.Bookmarks("S10").Range.Text = xlSh1.Cells(i, 14)
            oDoc.Bookmarks("S0").Range.Text = xlSh1.Cells(i, 4)
            oDoc.Bookmarks("S21").Range.Text = Format(Now, "dd mmmm yyyy")
            oDoc.Bookmarks("SIBAN").Range.Text = xlSh5.Cells(3, 2)
            oTbl.Rows.Add
            oTbl.Rows.Last.Cells(1).Range.Text = xlSh1.Cells(i, 15)
            oTbl.Rows.Last.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
            oTbl.Rows.Last.Cells(2).Range.Text = xlSh1.Cells(i, 18)
            oTbl.Rows.Last.Cells(3).Range.Text = xlSh1.Cells(i, 19)
            oTbl.Rows.Last.Cells(4).Range.Text = xlSh1.Cells(i, 20)
     
                For k = 2 To 4
                oTbl.Rows.Last.Cells(k).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
                Next k
     
            oTbl.Rows.Last.Range.Font.Bold = False
     
            If xlSh1.Cells(i, 21) = 0 Then
            oTbl.Rows.Add
            oTbl.Rows.Last.Cells(1).Range.Text = "TOTAL"
            oTbl.Rows.Last.Cells(2).Range.Text = xlSh1.Cells(i, 24)
            oTbl.Rows.Last.Cells(3).Range.Text = xlSh1.Cells(i, 25)
            oTbl.Rows.Last.Cells(4).Range.Text = xlSh1.Cells(i, 26)
                For k = 2 To 4
                oTbl.Rows.Last.Cells(k).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
                Next k
     
            oTb3.Delete
     
            Else
     
            oTbl.Rows.Add
            oTbl.Rows.Last.Cells(1).Range.Text = "Frais suivant détail ci-après"
            oTbl.Rows.Last.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
            oTbl.Rows.Last.Cells(2).Range.Text = xlSh1.Cells(i, 21)
            oTbl.Rows.Last.Cells(3).Range.Text = xlSh1.Cells(i, 22)
            oTbl.Rows.Last.Cells(4).Range.Text = xlSh1.Cells(i, 23)
            oTbl.Rows.Last.Range.Font.Bold = False
            oTbl.Rows.Add
            oTbl.Rows.Last.Cells(1).Range.Text = "TOTAL"
            oTbl.Rows.Last.Cells(2).Range.Text = xlSh1.Cells(i, 24)
            oTbl.Rows.Last.Cells(3).Range.Text = xlSh1.Cells(i, 25)
            oTbl.Rows.Last.Cells(4).Range.Text = xlSh1.Cells(i, 26)
                For k = 1 To 4
                oTbl.Rows.Last.Cells(k).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
                Next k
     
            For j = 2 To jR
            If xlSh2.Cells(j, 3) = xlSh1.Cells(i, 4) Then
            oTb3.Rows.Add
            oTb3.Rows.Last.Cells(1).Range.Text = xlSh2.Cells(j, 12)
            oTb3.Rows.Last.Cells(2).Range.Text = xlSh2.Cells(j, 5) & " - " & xlSh2.Cells(j, 6)
            oTb3.Rows.Last.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
            oTb3.Rows.Last.Cells(2).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
            oTb3.Rows.Last.Cells(3).Range.Text = xlSh2.Cells(j, 9)
            oTb3.Rows.Last.Range.Font.Bold = False
            oTb3.Rows.Last.Cells(3).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
            End If
     
            Next j
     
            End If
     
    Next i
     
    lR = oDoc.Tables(1).Rows.Count
     
    With oDoc.Tables(1)
        For l = 1 To lR
     
        .Rows(l).Height = CentimetersToPoints(1)
        .Rows(l).Cells.VerticalAlignment = wdAlignVerticalCenter
        Next l
     
    End With
     
    If xlSh1.Cells(i, 21) <> 0 Then
     
    mR = oDoc.Tables(3).Rows.Count
     
    With oDoc.Tables(3)
        For m = 1 To mR
     
        .Rows(m).Height = CentimetersToPoints(1)
        .Rows(m).Cells.VerticalAlignment = wdAlignVerticalCenter
        Next m
     
    End With
     
    End If
     
    oDoc.Tables(1).Rows.Last.Range.Font.Bold = True
     
    If xlSh1.Cells(i, 21) <> 0 Then
    oDoc.Tables(3).Rows.Last.Range.Font.Bold = True
    End If
     
    oTb2.Columns(1).Cells(2).Range.Text = xlSh1.Cells((i - 1), 24)
    oTb2.Columns(2).Cells(2).Range.Text = xlSh1.Cells((i - 1), 27)
    oTb2.Columns(3).Cells(2).Range.Text = xlSh1.Cells((i - 1), 25)
     
    With oDoc.Tables(2)
        For k = 1 To 2
     
        .Columns(k).Cells(k).Height = CentimetersToPoints(1)
        .Rows(k).Cells.VerticalAlignment = wdAlignVerticalCenter
        Next k
     
        .Rows.Last.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
     
    End With
     
    oDoc.SaveAs stDocName
     
    oDoc.Close
     
    Set oDoc = Nothing
     
    xlWb.Close
    xlApp.Quit
    Set xlSh = Nothing
    Set xlWb = Nothing
    Set xlApp = Nothing
     
     
    End Sub
    Images attachées Images attachées  

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

Discussions similaires

  1. Erreur de compilation étrange : le compilateur ne lis pas les IF ?
    Par Anon1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/05/2017, 16h50
  2. Des erreurs de compilation étrange
    Par Invité dans le forum C++
    Réponses: 5
    Dernier message: 27/12/2010, 17h04
  3. Erreur de compilation étrange
    Par djaibi dans le forum C++
    Réponses: 8
    Dernier message: 27/03/2009, 04h57
  4. Réponses: 4
    Dernier message: 17/11/2007, 10h10
  5. Erreur de compilation étrange
    Par poukill dans le forum C++
    Réponses: 5
    Dernier message: 19/10/2007, 09h55

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