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 :

[VBA-W] Error! Bookmark not defined


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut [VBA-W] Error! Bookmark not defined
    Bonjour tt le monde,

    Je veux exécuter une macro word mais certain champs de mon modele word ne sont pas renseignés. J'ai plutôt ceci:Error! Bookmark not defined.
    Pourriez vous m'aider sur l'origine de ce problème?

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Sans ton code, comment veux-tu où est ton erreur ?
    Tu as une erreur : "Error! Bookmark not defined" qui veut dire qu'un signet n'est pas défini... en anglais
    Espérant t'avoir aidé
    Bref, mets-nous ton code et donne-nous le contexte. Le signet existe bien... etc
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    C'est vrai tu n'as pas tord
    Dans le cas que je traite voilà les deux macros concernés:

    macro NC.MAIN:


    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
    Public Sub MAIN()
    Dim SourceName$
    Dim iTotalResAG
    Dim iTotalResNAG
    Dim iNbCol
    Dim TitreEtat$
    Dim TypeAss$
    Dim Depositaire$
    Dim DateDepot$
    Dim NumDepot$
     
    SourceName$ = WordBasic.[GetDocumentVar$]("FusionSource")
    iTotalResAG = WordBasic.Val(WordBasic.[GetDocumentVar$]("TotalResAG"))
    iTotalResNAG = WordBasic.Val(WordBasic.[GetDocumentVar$]("TotalResNAG"))
    iNbCol = WordBasic.Val(WordBasic.[GetDocumentVar$]("NbCol"))
    TitreEtat$ = WordBasic.[GetDocumentVar$]("TitreEtat")
    TypeAss$ = WordBasic.[GetDocumentVar$]("TypeAss")
    Depositaire$ = WordBasic.[GetDocumentVar$]("Depositaire")
    DateDepot$ = WordBasic.[GetDocumentVar$]("DateDepot")
    NumDepot$ = WordBasic.[GetDocumentVar$]("NumDepot")
     
    If iNbCol < 23 Then
        ' Creation du tableau à 1 Ligne et iNbCol Colonnes
        Call InsererTableauVPC.MAIN
        'WordBasic.ToolsMacro Name:="InsererTableauVPC", Run:=1, Show:=3, Description:="", NewName:=""
    Else ' Création de 2 Tableaux
        If iTotalResAG > 0 Then
            If iTotalResAG < 20 Then
                ' Séparation du tableau en deux : 1 pour les Rés AG, 1          autre pour les Rés NAG
                Call InsererTabMoitieAG.MAIN
                'WordBasic.ToolsMacro Name:="InsererTabMoitieAG", Run:=1, Show:=3, Description:="", NewName:=""
                If (iTotalResNAG > 0) Then   ' Il y des Res NAG
                    WordBasic.CharRight 4
                    Call InsererTabMoitieNAG.MAIN
                    'WordBasic.ToolsMacro Name:="InsererTabMoitieNAG", Run:=1, Show:=3, Description:="", NewName:=""
                End If
            Else ' iTotalResAG > 19
                ' Séparation du tableau en deux parties inegales
                Call InsererTab1AGNAG.MAIN
                'WordBasic.ToolsMacro Name:="InsererTab1AGNAG", Run:=1, Show:=3, Description:="", NewName:=""
                WordBasic.CharRight 4
                Call InsererTab2AGNAG.MAIN
                'WordBasic.ToolsMacro Name:="InsererTab2AGNAG", Run:=1, Show:=3, Description:="", NewName:=""
            End If
        Else
            If (iTotalResNAG > 0) Then   ' Il y des Res NAG
                WordBasic.StartOfDocument
                WordBasic.LineDown 9
                WordBasic.CharRight 4
                Call InsererTabMoitieNAG.MAIN
                'WordBasic.ToolsMacro Name:="InsererTabMoitieNAG", Run:=1, Show:=3, Description:="", NewName:=""
            End If
        End If
    End If
     
    WordBasic.EditReplace Find:="@TITRE_ETAT@", Replace:=TitreEtat$, Direction:=0, MatchCase:=0, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceOne:=1, Format:=0, Wrap:=1, FindAllWordForms:=0
    WordBasic.EditReplace Find:="@ASSEMBLEE@", Replace:=TypeAss$, Direction:=0, MatchCase:=0, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceOne:=1, Format:=0, Wrap:=1, FindAllWordForms:=0
    WordBasic.EditReplace Find:="@DEPOSITAIRE@", Replace:=Depositaire$, Direction:=0, MatchCase:=0, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceOne:=1, Format:=0, Wrap:=1, FindAllWordForms:=0
    WordBasic.EditReplace Find:="@DATE_DEPOT@", Replace:=DateDepot$, Direction:=0, MatchCase:=0, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceOne:=1, Format:=0, Wrap:=1, FindAllWordForms:=0
    WordBasic.EditReplace Find:="@NUMERO_DEPOT@", Replace:=NumDepot$, Direction:=0, MatchCase:=0, WholeWord:=0, PatternMatch:=0, SoundsLike:=0, ReplaceOne:=1, Format:=0, Wrap:=1, FindAllWordForms:=0
     
    ' Fusion
     
    WordBasic.MailMergeOpenDataSource Name:=SourceName$, ConfirmConversions:=0, ReadOnly:=0, LinkToSource:=1, AddToMru:=0, PasswordDoc:="", PasswordDot:="", Revert:=0, WritePasswordDoc:="", WritePasswordDot:="", Connection:="", SQLStatement:="", SQLStatement1:=""
     
    WordBasic.MailMerge CheckErrors:=2, Destination:=0, MergeRecords:=0, From:="", To:="", Suppression:=0, MailMerge:=1, MailSubject:="", MailAsAttachment:=0, MailAddress:=""
     
    Call SupprimerArobase.MAIN
    ' WordBasic.ToolsMacro Name:="SupprimerArobase", Run:=1, Show:=0, Description:="", NewName:=""
     
    Call FermerModele.MAIN
    'WordBasic.ToolsMacro Name:="FermerModele", Run:=1, Show:=0, Description:="", NewName:=""
     
    WordBasic.StartOfDocument
     
    End Sub
     
     
    Macro InsererTab1AGNAG.MAIN:
     
     
    Public Sub MAIN()
    Dim iTotalResAG
    Dim iTotalResNAG
    Dim iNbCol
    Dim i
    Dim FusionField$
    iTotalResAG = WordBasic.Val(WordBasic.[GetDocumentVar$]("TotalResAG"))
    iTotalResNAG = WordBasic.Val(WordBasic.[GetDocumentVar$]("TotalResNAG"))
    iNbCol = WordBasic.Val(WordBasic.[GetDocumentVar$]("NbCol"))
     
    ' Creation de l'en-tete du tableau à 1 ligne et iTotalResAG Colonnes
    WordBasic.ToolsMacro Name:="CreerEnTete1AGNAG", Run:=1, Show:=3, Description:="", NewName:=""
     
    ' Creation du tableau à 1 Ligne et iTotalResAG Colonnes
    WordBasic.TableInsertTable ConvertFrom:="", NumColumns:=Str(19 + 3), NumRows:="1", InitialColWidth:="Auto", Format:="0", Apply:="167"
     
    ' Insertion des Champs de Fusion Abrege, Compte, Nom
    WordBasic.InsertMergeField MergeField:="ABREGE", WordField:=-1
    'ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, _
        Name:="ABREGE"
     
    WordBasic.NextCell
     
     
    WordBasic.InsertMergeField MergeField:="COMPTE", WordField:=-1
    WordBasic.NextCell
    WordBasic.InsertMergeField MergeField:="NOM_ACTIONNAIRE", WordField:=-1
    WordBasic.NextCell
     
    ' Insertion des Champs de Fusion pour les Resolutions Agréées
    For i = 4 To (2 + 19)
        FusionField$ = "RES_" + WordBasic.[LTrim$](Str(i - 3))
        WordBasic.InsertMergeField MergeField:=FusionField$, WordField:=-1
        WordBasic.NextCell
    Next i
    FusionField$ = "RES_" + WordBasic.[LTrim$](Str(19))
    WordBasic.InsertMergeField MergeField:=FusionField$, WordField:=-1
     
    ' Mise en forme du Tableau
    WordBasic.TableSelectTable
    WordBasic.CenterPara
    WordBasic.FormatBordersAndShading ApplyTo:=3, Shadow:=0, TopBorder:=1, LeftBorder:=1, BottomBorder:=1, RightBorder:=1, HorizBorder:=1, VertBorder:=1, TopColor:=0, LeftColor:=0, BottomColor:=0, RightColor:=0, HorizColor:=0, VertColor:=0, FromText:="0 pt", Shading:=0, Foreground:=0, Background:=0, Tab:="0", FineShading:=-1
    WordBasic.TableRowHeight RulerStyle:="0", LineSpacingRule:=0, LineSpacing:="", LeftIndent:="0 cm", Alignment:=1, AllowRowSplit:=1
    WordBasic.CharLeft 1
    WordBasic.TableColumnWidth ColumnWidth:="1,6 cm", SpaceBetweenCols:="0,38 cm", RulerStyle:="0"
    WordBasic.NextCell
    WordBasic.TableColumnWidth ColumnWidth:="1,2 cm", SpaceBetweenCols:="0,38 cm", NextColumn:=1, RulerStyle:="0"
    WordBasic.TableColumnWidth ColumnWidth:="6 cm", SpaceBetweenCols:="0,38 cm", RulerStyle:="0"
    WordBasic.LeftPara
    WordBasic.NextCell
    WordBasic.CharRight (19), 1
    WordBasic.TableColumnWidth ColumnWidth:="0,98 cm", SpaceBetweenCols:="0,38 cm", RulerStyle:="0"
     
    End Sub
    Merci pour ton aide

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui. Et sur quelle ligne, l'erreur ?
    (pense aux balises Code -> Sélection du code + un clic sur # Ça facilite la lecture )

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    D'abord on crée un tableau dans le quel on rajoute des champs de fusion:

    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
    ' Creation du tableau à 1 Ligne et iTotalResAG Colonnes
    WordBasic.TableInsertTable ConvertFrom:="", NumColumns:=Str(19 + 3), NumRows:="1", InitialColWidth:="Auto", Format:="0", Apply:="167"
     
    ' Insertion des Champs de Fusion Abrege, Compte, Nom
    WordBasic.InsertMergeField MergeField:="ABREGE", WordField:=-1
    'ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, _
        Name:="ABREGE"
     
    WordBasic.NextCell
     
     
    WordBasic.InsertMergeField MergeField:="COMPTE", WordField:=-1
    WordBasic.NextCell
    WordBasic.InsertMergeField MergeField:="NOM_ACTIONNAIRE", WordField:=-1
    WordBasic.NextCell
     
    ' Insertion des Champs de Fusion pour les Resolutions Agréées
    For i = 4 To (2 + 19)
        FusionField$ = "RES_" + WordBasic.[LTrim$](Str(i - 3))
        WordBasic.InsertMergeField MergeField:=FusionField$, WordField:=-1
        WordBasic.NextCell
    Next i
    FusionField$ = "RES_" + WordBasic.[LTrim$](Str(19))
    WordBasic.InsertMergeField MergeField:=FusionField$, WordField:=-1
    Ensuite on fait la fusion avec notre source de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Fusion
     
    WordBasic.MailMergeOpenDataSource Name:=SourceName$, ConfirmConversions:=0, ReadOnly:=0, LinkToSource:=1, AddToMru:=0, PasswordDoc:="", PasswordDot:="", Revert:=0, WritePasswordDoc:="", WritePasswordDot:="", Connection:="", SQLStatement:="", SQLStatement1:=""
     
    WordBasic.MailMerge CheckErrors:=2, Destination:=0, MergeRecords:=0, From:="", To:="", Suppression:=0, MailMerge:=1, MailSubject:="", MailAsAttachment:=0, MailAddress:=""
    Seulement dans le cadre de la boucle for la fusion est bien faite mais pas dans le cas de COMPTE ABREGE NOM_ACTIONNAIRE d'ou l'erreur.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon, je pense que tu as de bonnes raisons d'utiliser WordBasic mais comme je ne l'utilise pas du tout, ma syntaxe n'a rien à voir avec la tienne. Je ne vais pas pouvoir t'aider.
    par exemple, pour insérer un champ, j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
            "Nom_de_la_Directrice"
    qui est le code qu tu as mis en remarque
    ' Insertion des Champs de Fusion Abrege, Compte, Nom
    WordBasic.InsertMergeField MergeField:="ABREGE", WordField:=-1
    'ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, _
    Name:="ABREGE"
    Dans ce code, tu as laissé la dernière ligne... Ton erreur ne serait-elle pas là ?
    Bonne chance

Discussions similaires

  1. "error is not defined"
    Par dreux dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/11/2009, 15h22
  2. Error: JAVA_HOME is not defined correctly.
    Par saadoz dans le forum Maven
    Réponses: 5
    Dernier message: 02/03/2009, 23h33
  3. Réponses: 6
    Dernier message: 22/02/2009, 10h41
  4. Réponses: 0
    Dernier message: 05/02/2009, 12h14
  5. Réponses: 18
    Dernier message: 06/04/2008, 20h57

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