Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Intégrer des case à cocher dans Word par du publipostage

7 réponses
Avatar
syc2000
Bonjour,

Je souhaite faire du publipostage =E0 partir d'Access vers Word.
J'utilise pour cela l'automation (Merci =E0
http://officesystem.access.free.fr/vba/word.htm, tr=E8s bon site).

L'affichage des champs se fait correctement.
Dans Word, je souhaite avoir des cases =E0 cocher, qui se cochent selon
le contenu de mon champ.

Exemple:
Dans Access, j'ai un champ "civilit=E9".
Dans Word, je vais avoir une case =E0 cocher devant chacun de ces trois
mots: Mr, Mme, Mlle.
Selon le contenu de mon champ Access "Civilit=E9", le bonne case sera
coch=E9e dans Word.

Est-ce que quelqu'un a une id=E9e de comment faire ?

Merci d'avance.
Sylvie

7 réponses

Avatar
Tisane
Bonjour Sylvie,

Je souhaite faire du publipostage à partir d'Access vers Word.
J'utilise pour cela l'automation (Merci à
http://officesystem.access.free.fr/vba/word.htm, très bon site).
L'affichage des champs se fait correctement.
Dans Word, je souhaite avoir des cases à cocher, qui se cochent selon
le contenu de mon champ.
Exemple:
Dans Access, j'ai un champ "civilité".
Dans Word, je vais avoir une case à cocher devant chacun de ces trois
mots: Mr, Mme, Mlle.
Selon le contenu de mon champ Access "Civilité", le bonne case sera
cochée dans Word.


C'est plutôt dans Word que tu vas devoir faire le traitement.
Le moyen le plus simple à mon avis, donc dans Word :
- devant chaque civilité, insère normalement ton champ de fusion
{MERGEFIELD Civilité} que tu modifies ainsi :
devant Monsieur, {IF {MERGEFIELD Civilité}= "Mr" X ""}
devant Madame, {IF {MERGEFIELD Civilité}= "Mme" X ""}
etc.
Remplace le X par la case cochée que tu veux dans les caractères Wingdings
(Insertion | Caractères spéciaux)

Rappel : <Alt><F9> pour afficher les codes de champs et <Ctrl><F9> pour
obtenir les { }

--
Tisane

Avatar
Raymond [mvp]
Bonjour.

il est possible de le faire mais les cases à cocher étant des champs de
formulaire et le publipostage ne demandant aucune intervention de
l'opérateur, il est obligatoire d'insérer les cases à cocher à partir
d'access, ce qui oblige à écrire pas mal de code.
ci-dessous le code à placer dans ta procédure, mais il faut rajouter l'objet
application devant chaque ligne (accApp.) ou le point(.) si tu utilises le
With/End With.
tu pourrais le faire à partir de word mais ce sera aussi long en code.

' pour monsieur
' se positionner à l'endroit désiré
Selection.TypeParagraph
Selection.FormFields.Add Range:=Selection.Range,
Type:=wdFieldFormCheckBox
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.FormFields(1)
.Name = "CaseACocher2"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .CheckBox
.AutoSize = True
.Size = 10
If Me.civilité = "Monsieur" Then
.Default = True
Else
.Default = True
End If
End With
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="monsieur"
Selection.TypeParagraph
' pour madame
Selection.FormFields.Add Range:=Selection.Range,
Type:=wdFieldFormCheckBox
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.FormFields(1)
.Name = "CaseACocher3"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .CheckBox
.AutoSize = True
.Size = 10
If Me.civilité = "Madame" Then
.Default = True
Else
.Default = True
End If
End With
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="madame"
Selection.TypeParagraph
'pour mademoiselle
Selection.FormFields.Add Range:=Selection.Range,
Type:=wdFieldFormCheckBox
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.FormFields(1)
.Name = "CaseACocher4"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .CheckBox
.AutoSize = True
.Size = 10
If Me.civilité = "Mademoiselle" Then
.Default = True
Else
.Default = True
End If
End With
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="mademoiselle"
Selection.TypeParagraph

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


a écrit dans le message de news:

Bonjour,

Je souhaite faire du publipostage à partir d'Access vers Word.
J'utilise pour cela l'automation (Merci à
http://officesystem.access.free.fr/vba/word.htm, très bon site).

L'affichage des champs se fait correctement.
Dans Word, je souhaite avoir des cases à cocher, qui se cochent selon
le contenu de mon champ.

Exemple:
Dans Access, j'ai un champ "civilité".
Dans Word, je vais avoir une case à cocher devant chacun de ces trois
mots: Mr, Mme, Mlle.
Selon le contenu de mon champ Access "Civilité", le bonne case sera
cochée dans Word.

Est-ce que quelqu'un a une idée de comment faire ?

Merci d'avance.
Sylvie
Avatar
Raymond [mvp]
je pense que tu as du rectifier toi-même:
If Me.civilité = "Madame" Then
.Default = True
Else
.Default = False
End If

et pour tous les autres aussi.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"Raymond [mvp]" a écrit dans le message
de news:
| Bonjour.
|
| il est possible de le faire mais les cases à cocher étant des champs de
| formulaire et le publipostage ne demandant aucune intervention de
| l'opérateur, il est obligatoire d'insérer les cases à cocher à partir
| d'access, ce qui oblige à écrire pas mal de code.
| ci-dessous le code à placer dans ta procédure, mais il faut rajouter
l'objet
| application devant chaque ligne (accApp.) ou le point(.) si tu utilises le
| With/End With.
| tu pourrais le faire à partir de word mais ce sera aussi long en code.
|
| ' pour monsieur
| ' se positionner à l'endroit désiré
| Selection.TypeParagraph
| Selection.FormFields.Add Range:=Selection.Range,
| Type:=wdFieldFormCheckBox
| Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
| With Selection.FormFields(1)
| .Name = "CaseACocher2"
| .EntryMacro = ""
| .ExitMacro = ""
| .Enabled = True
| .OwnHelp = False
| .HelpText = ""
| .OwnStatus = False
| .StatusText = ""
| With .CheckBox
| .AutoSize = True
| .Size = 10
| If Me.civilité = "Monsieur" Then
| .Default = True
| Else
| .Default = True
| End If
| End With
| End With
| Selection.MoveRight Unit:=wdCharacter, Count:=1
| Selection.TypeText Text:="monsieur"
| Selection.TypeParagraph
| ' pour madame
| Selection.FormFields.Add Range:=Selection.Range,
| Type:=wdFieldFormCheckBox
| Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
| With Selection.FormFields(1)
| .Name = "CaseACocher3"
| .EntryMacro = ""
| .ExitMacro = ""
| .Enabled = True
| .OwnHelp = False
| .HelpText = ""
| .OwnStatus = False
| .StatusText = ""
| With .CheckBox
| .AutoSize = True
| .Size = 10
| If Me.civilité = "Madame" Then
| .Default = True
| Else
| .Default = True
| End If
| End With
| End With
| Selection.MoveRight Unit:=wdCharacter, Count:=1
| Selection.TypeText Text:="madame"
| Selection.TypeParagraph
| 'pour mademoiselle
| Selection.FormFields.Add Range:=Selection.Range,
| Type:=wdFieldFormCheckBox
| Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
| With Selection.FormFields(1)
| .Name = "CaseACocher4"
| .EntryMacro = ""
| .ExitMacro = ""
| .Enabled = True
| .OwnHelp = False
| .HelpText = ""
| .OwnStatus = False
| .StatusText = ""
| With .CheckBox
| .AutoSize = True
| .Size = 10
| If Me.civilité = "Mademoiselle" Then
| .Default = True
| Else
| .Default = True
| End If
| End With
| End With
| Selection.MoveRight Unit:=wdCharacter, Count:=1
| Selection.TypeText Text:="mademoiselle"
| Selection.TypeParagraph
|
Avatar
syc2000
Bonjour,

j'ai testé le code suivant (merci Raymond), et ça marche bien, sauf
que dans Word, je n'ai pas mes cases à cocher.
Alors j'ai essayé avec un document vide et un document ou j'ai créé
mes cases à cocher avec le même nom que dans le code, et je n'ai que
les 3 noms qui s'affichent (monsieur, madame, mademoiselle - alors que
ça, ça devrait être déjà dans le document Word, je ne souhaiterai
que cocher ou décocher).

Voici le code:
Function Publipostage()

On Error Resume Next
Dim W_App As New Word.Application
Dim civilité As String
civilité = "Madame"

With W_App
.Visible = True
.Documents.Open ("D:Mes documentsOdysséeLa poste - Campagne
d'appels sortantsdoc1.doc")

.Selection.TypeParagraph
.Selection.FormFields.Add Range:=Selection.Range,
TYPE:=wdFieldFormCheckBox
.Selection.MoveLeft Unit:=wdCharacter, Count:=1,
Extend:=wdExtend
With Selection.FormFields(1)
.Name = "CaseACocher1"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .CheckBox
.AutoSize = True
.Size = 10
If civilité = "Monsieur" Then
.Default = True
Else
.Default = False
End If
End With
End With
.Selection.MoveRight Unit:=wdCharacter, Count:=1
.Selection.TypeText Text:="monsieur"
.Selection.TypeParagraph

' pour madame
.Selection.FormFields.Add Range:=Selection.Range,
TYPE:=wdFieldFormCheckBox
.Selection.MoveLeft Unit:=wdCharacter, Count:=1,
Extend:=wdExtend
With Selection.FormFields(1)
.Name = "CaseACocher2"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .CheckBox
.AutoSize = True
.Size = 10
If civilité = "Madame" Then
.Default = True
Else
.Default = False
End If
End With
End With
.Selection.MoveRight Unit:=wdCharacter, Count:=1
.Selection.TypeText Text:="madame"
.Selection.TypeParagraph

'pour mademoiselle
.Selection.FormFields.Add Range:=Selection.Range,
TYPE:=wdFieldFormCheckBox
.Selection.MoveLeft Unit:=wdCharacter, Count:=1,
Extend:=wdExtend
With Selection.FormFields(1)
.Name = "CaseACocher3"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .CheckBox
.AutoSize = True
.Size = 10
If civilité = "Mademoiselle" Then
.Default = True
Else
.Default = False
End If
End With
End With
.Selection.MoveRight Unit:=wdCharacter, Count:=1
.Selection.TypeText Text:="mademoiselle"
.Selection.TypeParagraph



End With
Set W_App = Nothing

End Function

Merci en tous cas pour votre aide.
Sylvie
Avatar
Raymond [mvp]
Bonjour.

il manque la fonction de sélection du document.

With W_App
.Visible = True
.Documents.Open ..........................
.ActiveDocument.Select ' ICI
.Selection.TypeParagraph
etc...........................

pour cocher les cases il faut être en mode protégé, et cela va te poser
d'autres soucis de programmation.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


a écrit dans le message de news:

Bonjour,

j'ai testé le code suivant (merci Raymond), et ça marche bien, sauf
que dans Word, je n'ai pas mes cases à cocher.
Alors j'ai essayé avec un document vide et un document ou j'ai créé
mes cases à cocher avec le même nom que dans le code, et je n'ai que
les 3 noms qui s'affichent (monsieur, madame, mademoiselle - alors que
ça, ça devrait être déjà dans le document Word, je ne souhaiterai
que cocher ou décocher).
Avatar
syc2000
J'ai trouvé la solution qui me va très bien:

Dans mon document Word, je crée un signet dont le caractère
précédent et le caractère suivant sont en police Windings.

Et dans access, je fais ce code:
Function Publipostage()

On Error Resume Next
Dim W_App As New Word.Application

With W_App
.Visible = True
.Documents.Open ("D:Mes documentsdoc1.doc")
.ActiveDocument.Bookmarks("un").Select
.Selection.InsertAfter Chr(168)
.ActiveDocument.Bookmarks("deux").Select
.Selection.InsertAfter Chr(253)
.ActiveDocument.Bookmarks("trois").Select
.Selection.InsertAfter Chr(168)

End With
Set W_App = Nothing

End Function

Elle est pas belle, la vie ?

Merci encore pour votre aide,
Sylvie
Avatar
Raymond [mvp]
c'est une solution aussi. l'essentiel c'est qu'elle convienne à ton
application.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


a écrit dans le message de news:

J'ai trouvé la solution qui me va très bien:

Dans mon document Word, je crée un signet dont le caractère
précédent et le caractère suivant sont en police Windings.

Et dans access, je fais ce code:
Function Publipostage()

On Error Resume Next
Dim W_App As New Word.Application

With W_App
.Visible = True
.Documents.Open ("D:Mes documentsdoc1.doc")
.ActiveDocument.Bookmarks("un").Select
.Selection.InsertAfter Chr(168)
.ActiveDocument.Bookmarks("deux").Select
.Selection.InsertAfter Chr(253)
.ActiveDocument.Bookmarks("trois").Select
.Selection.InsertAfter Chr(168)

End With
Set W_App = Nothing

End Function

Elle est pas belle, la vie ?

Merci encore pour votre aide,
Sylvie