Mettre à jour des Checkbox dans Word depuis Excel

Lolo86170

XLDnaute Nouveau
Bonjour à tous,

J'ai un problème. Je veux créer un document dans Word à partir de données contenues dans Excel. Jusque là, pas beaucoup de difficultés, mais je voudrais mettre à jour des Checkbox dans le document Word pour signaler des options actives ou pas.

Cf. mon code plus bas.

Si quelqu'un a une idée, d'avance merci.

Laurent



Private Sub CommandButton1_Click()

'Déclaration des variables
Dim nLigne As Integer
Dim sLibFic1 As String
Dim sLibFic2 As String
Dim WordApp As Word.Application
Dim WordDoc As Word.Document

'Traitement des erreurs
On Error Resume Next

nLigne = 2

'Récupération des libellés des fichiers
sLibFic1 = ActiveWorkbook.Path & "\docdebase.doc"
sLibFic2 = ActiveWorkbook.Path & "\docdebase2.doc"

'Ouverture du document Word
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(sLibFic1)

With WordApp
.Visible = False
.Selection.Goto What:=wdGoToBookmark, Name:="Nom"
.Selection.TypeText Text:=Sheets("Feuil1").Range("A" & nLigne).Value
.Selection.Goto What:=wdGoToBookmark, Name:="Prenom"
.Selection.TypeText Text:=Sheets("Feuil1").Range("B" & nLigne).Value
.Selection.Goto What:=wdGoToBookmark, Name:="Classe"
.Selection.TypeText Text:=Sheets("Feuil1").Range("C" & nLigne).Value
End With

WordDoc.Application.ActiveDocument.SaveAs sLibFic2
WordApp.Application.Quit

Set WordDoc = Nothing
Set WordApp = Nothing

End Sub
 

PMO2

XLDnaute Accro
Re : Mettre à jour des Checkbox dans Word depuis Excel

Bonjour,

Une piste avec les codes suivants
Code:
Sub CreeCheckBox()
Dim obj As Object
Dim CB As MSForms.CheckBox
  '/// Remplacez ActiveDocument par votre variable objet (WordApp ?) ///
Set obj = ActiveDocument.Shapes _
  .AddOLEControl(ClassType:="Forms.CheckBox.1")
Set CB = obj.OLEFormat.Object
With CB
  .Value = True
  .Caption = "Mon Option #1"
  .BackColor = RGB(255, 0, 0)
  With .Font
    .Name = "Courrier"
    .Size = 16
    .Bold = True
    .Italic = True
  End With
  .WordWrap = True
  .AutoSize = True
End With
End Sub

Sub UpdateCheckBox()
Dim S As Shape
Dim CB As MSForms.CheckBox
  '/// Remplacez ActiveDocument par votre variable objet (WordApp ?) ///
For Each S In ActiveDocument.Shapes
  If S.Type = 12 Then 'msoOLEControlObject
    Set CB = S.OLEFormat.Object
    With CB
      If .Caption = "Mon Option #1" Then
      '### à adapter en fonction de ce qu'il y a dans Excel ###
        'if dans Excel c'est vrai Then
        '  .Value = True
        'Else
          .Value = False
        'End If
      '########################################################
      End If
    End With
  End If
Next S
End Sub
La reconnaissance de chaque CheckBox se fait par l’intermédiaire de leur nom.

ETAPE 1 (voir le fonctionnement dans Word)
Copiez ces codes dans un nouveau document Word et lancez les macros
1) CreeCheckBox qui va créer une CheckBox
2) UpdateCheckBox qui, en fonction du nom de la CheckBox et du code à ajouter par vos soins et qui concerne la valeur trouvée dans Excel, fait varier la valeur de la CheckBox

ETAPE 2 (à partir d’Excel)
Une fois avoir acquis une bonne compréhension du code dans Word, vous pouvez inclure, dans Excel, le code au sein de votre propre code en l’adaptant à votre usage, notamment remplacer ActiveDocument par votre variable objet. Comme je ne sais pas ce que vous avez construit je ne peux pas mieux vous aider.

Cordialement.

PMO
Patrick Morange
 

Lolo86170

XLDnaute Nouveau
Re : Mettre à jour des Checkbox dans Word depuis Excel

Bonjour,
Tout d'abord, merci pour votre coup de main.
Par contre, comment faites-vous pour ouvrir votre document Word.
En application ma méthode, la collection Shapes de mon document me retourne 0 éléments; je ne peux que passer par une collection InlineShapes, très peu pratique.
Laurent
 

PMO2

XLDnaute Accro
Re : Mettre à jour des Checkbox dans Word depuis Excel

Bonjour,

J'ai fait le code sans me préoccuper d'Excel car je n'ai pas d'éléments sous la main pour pouvoir extrapoler.
D'autre part, je ne sais pas si les CheckBox dans Word sont déjà existantes ou si il faut les créer à la volée.
Le mieux serait que vous me fassiez parvenir votre classeur Excel et votre document Word (tous deux édulcorés des données confidentielles) et me fournir une explication exhaustive de ce que vous voulez faire.

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Réponses
1
Affichages
176
Réponses
2
Affichages
269

Statistiques des forums

Discussions
312 322
Messages
2 087 275
Membres
103 507
dernier inscrit
tapis23