VBA - Comment continuer à remplir les signets via une autre macro

Bonjour à tous,

Je cherche à remplir automatiquement des documents administratifs via Excel et VBA et je rencontre un petit obstacle.

Ma macro commande l'ouverture du fichier Word vierge, sa sauvegarde en local et le remplissage progressif de bookmarks.

Ces documents sont rédigés pour diverses entreprises et selon l'entreprise à laquelle je m'adresse, je cherche à intégrer un paragraphe différent du genre :

"La société XXX représentée par M. bidule, etc..."

J'intègre donc une fonction "If" qui écrit le bon paragraphe en fonction de l'entreprise à laquelle je m'adresse mais j'aimerais que cette fonction n'encombre pas le module dans lequel je code. Je voudrais créer un nouveau module rien que pour ça qui prendrait le Word déjà ouvert par le module principal et qui y ajouterait le bon paragraphe en fonction de l'entreprise, et ça ne fonctionne pas du tout.

Mon module principal commence comme ça :

Sub AutoSAOPH()
Dim WordApp As Object
Dim WordDoc As Object

AutoAPLSAOPH = "\\Chemin\Document.docx"

Set WordApp = CreateObject("word.Application")
Set WordDoc = WordApp.Documents.Open(AutoAPLSAOPH, ReadOnly:=False)
WordDoc.SaveAs (ThisWorkbook.Path & "\Doc.docx")

WordApp.Visible = True

WordDoc.Bookmarks("A1").Range.Text = Cells(1, 1)

Ensuite, je liste une série de bookmarks à remplir et l'un des bookmarks a tellement de possibilités différentes que j'aimerais le gérer "à part".

Comment faire ?

Merci à tous ceux qui auront la gentillesse de m'aider. :)

Bonjour,

Alors déjà pas besoin de multiplier les modules, ce serait mieux d'opter pour des sous-procédures.

Et pour pouvoir compartimenter le code en plusieurs sous-procédures on commence par déclarer en public (en haut du module) :

Public WordApp As Object, WordDoc As Object

Ensuite on peut avoir une sous procédure pour le bookmark particulier. Ca pourrait donner un code de ce genre :

Public WordApp As Object, WordDoc As Object

Sub AutoSAOPH()
Dim AutoAPLSAOPH As String

    AutoAPLSAOPH = "\\Chemin\Document.docx"
    Set WordApp = CreateObject("word.Application")
    Set WordDoc = WordApp.Documents.Open(AutoAPLSAOPH, ReadOnly:=False)
    WordDoc.SaveAs (ThisWorkbook.Path & "\Doc.docx")
    WordApp.Visible = True

    With WordDoc
        .Bookmarks("A1").Range.Text = Sheets("Machin").Cells(1, 1).Value
        ' ... etc ....

        Mark_a_part
    End With
    ' etc ...
End Sub

Sub Mark_a_part()
    With WordDoc
        If ma_condition Then
            .Bookmarks("mark").Range.Text = "azerty"
        Else
           .Bookmarks("mark").Range.Text = "qsdf"
        End If
        ' ou bien :
        Select Case valeur
            Case truc: .Bookmarks("mark").Range.Text = "azerty"
            Case machin: .Bookmarks("mark").Range.Text = "qsdf"
            ' ....
            Case Else:  'etc ...
        End Select
    End With
End Sub

Pierre

Un grand merci, Pierre !

Rechercher des sujets similaires à "vba comment continuer remplir signets via macro"