Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mettre un x dans une case à cocher d'un fichier Word depuis Excel

  • Initiateur de la discussion Initiateur de la discussion zephir94
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zephir94

XLDnaute Impliqué
Bonjour à tous,

Je suis sur un projet qui consiste depuis Excel à remplir des champs dans un fichier Word.
Jusque là tout ce passe bien.
Là ou je coince c'est que j'ai dans le document Word il y a trois cases à cocher avec des X !
Y-a-t 'il un moyen de piloter cela depuis Excel ? ont-elles un nom que je ne vois pas dans le fichier Word pour les appeler ?

Merci à vous pour vos aides

Amicalement Zephir
 
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Bonjour Job75,

Avec un grand plaisir, il suffit de mettre dans ton fichier WORD des <BALISE1,2,3....> autant que de champs que tu souhaites remplir depuis Excel.
et une fois déclaré depuis l'éditeur VBA, Library Word obj 12.0
J'ai écris cette macro :

Code:
    Dim traitementTexte As Word.Application
    Set traitementTexte = New Word.Application
Dim u As String
    traitementTexte.Visible = True
 
   
    Dim leDoc As Document
    Set leDoc = traitementTexte.Documents.Open(ActiveWorkbook.Path & "/TON FICHIER WORD.doc")
 
    
    leDoc.Content.Find.Execute FindText:="<BALISE1>", ReplaceWith:=Feuil8.Range("B1").Value, Replace:=WdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE2>", ReplaceWith:=Feuil8.Range("B3").Value, Replace:=WdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE3>", ReplaceWith:=Date, Replace:=WdReplaceAll
    Feuil8.Range("B5").Value = UCase(Feuil8.Range("B5").Value)
    leDoc.Content.Find.Execute FindText:="<BALISE4>", ReplaceWith:=Feuil8.Range("B5").Value, Replace:=WdReplaceAll
     
     u = Feuil8.Range("B6").Text
     u = UCase(u)
 
    leDoc.Content.Find.Execute FindText:="<BALISE5>", ReplaceWith:=u, Replace:=WdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE6>", ReplaceWith:=Feuil8.Range("B7").Value, Replace:=WdReplaceAll
    Feuil8.Range("B8").Value = UCase(Feuil8.Range("B8").Value)
    leDoc.Content.Find.Execute FindText:="<BALISE7>", ReplaceWith:=Feuil8.Range("B8").Value, Replace:=WdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE8>", ReplaceWith:=Feuil8.Range("B4").Value, Replace:=WdReplaceAll
    Feuil8.Range("B9").Value = UCase(Feuil8.Range("B9").Value)
    leDoc.Content.Find.Execute FindText:="<BALISE10>", ReplaceWith:=Feuil8.Range("B9").Value, Replace:=WdReplaceAll
    Feuil8.Range("B12").Value = UCase(Feuil8.Range("B12").Value)
    leDoc.Content.Find.Execute FindText:="<BALISE11>", ReplaceWith:=Feuil8.Range("B12").Value, Replace:=WdReplaceAll
    leDoc.Content.Find.Execute FindText:="<BALISE12>", ReplaceWith:=Feuil8.Range("B12").Value, Replace:=WdReplaceAll
    
    
    leDoc.Content.Find.Execute FindText:="<BALISE13>", ReplaceWith:=Feuil8.Range("B1").Value, Replace:=WdReplaceAll

If Feuil8.Range("B22").Value = "X" Then
leDoc.Content.Find.Execute FindText:="<1>", ReplaceWith:="X", Replace:=WdReplaceAll
Else
leDoc.Content.Find.Execute FindText:="<1>", ReplaceWith:="", Replace:=WdReplaceAll
End If
   If Feuil8.Range("B23").Value = "X" Then
   leDoc.Content.Find.Execute FindText:="<2>", ReplaceWith:="X", Replace:=WdReplaceAll
   Else
   leDoc.Content.Find.Execute FindText:="<2>", ReplaceWith:="", Replace:=WdReplaceAll
   End If
        If Feuil8.Range("B24").Value = "X" Then
        leDoc.Content.Find.Execute FindText:="<3>", ReplaceWith:="X", Replace:=WdReplaceAll
        Else
        leDoc.Content.Find.Execute FindText:="<3>", ReplaceWith:="", Replace:=WdReplaceAll
        End If
   End Sub

En fait j'ai trouvé pour les cases à cocher, elles se comportent exactement de la même manière il suffit d'y ajouter une p'tit balise dedans 😎

Par contre job75 il me manque de la syntaxe VBA pourrais tu me dire comment Transformer
Mr Didier Lapince en Mr D.LAPINCE sachant que Mr Didier Lapince est dans une seule Cellule ?
Je te remercie par avance de ce petit coup de main 😎
 
Dernière édition:
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Re,

Sujet résolu donc.

La dernière question n'est pas claire, mais s'il s'agit de modifier la feuille Excel :

Code:
Feuil8.Cells.Replace "Mr Didier Lapince", "Mr D.LAPINCE"
A+
 
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Si tu veux je récupère dans la feuille Excel Mr Didier Lapince dans une cellule ( sans modifier la source ) je dois l'envoyer dans mon Doc word mais le transformer avant l'envoi par Mr D.LAPINCE là j'ai des progrès à faire sur ce genre de manipulation !

Donc laisser le premier mot intacte, prendre la première lettre du deuxième mot en la mettant en majuscule et en gras, mettre un point entre et prendre la totalité du troisième mot en gras et majuscule
 
Dernière édition:
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Re,

Je ne vois pas où est la difficulté :

Code:
leDoc.Content.Find.Execute FindText:="<BALISE1>", ReplaceWith:=Replace(Feuil8.Range("B1"), "Mr Didier Lapince", "Mr D.LAPINCE"), Replace:=WdReplaceAll
A+
 
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

La difficulté est que Mr Didier lapince n'est qu'un exemple !
Donc laisser le premier mot intacte, prendre que la première lettre du deuxième mot en la mettant en majuscule et en gras, mettre un point entre et prendre la totalité du troisième mot en gras et majuscule
 
Dernière édition:
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Re,

Voyez ce code :

Code:
Dim x$, s, y$
x = Application.Trim(Feuil8.[B1]) 'SUPPRESPACE
s = Split(x)
y = UCase(Left(s(1), 1) & "." & Mid(x, Len(s(0) & s(1)) + 3))
x = s(0) & " " & y
MsgBox x 'pour tester
MsgBox y 'pour tester (c'est le texte à mettre en gras)
Pour mettre en gras le texte y dans Word c'est facile, voyez avec l'enregistreur de macro.

A+
 
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

J'ai digéré le code mais je n'arrive pas dans Excel à faire passer la variable y en Gras une piste ?
 
Dernière édition:
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Re,

leDoc défini par vous, x et y définis au post #8 :

Code:
With leDoc.Bookmarks("Balise1")
leDoc.Range(.Start + Len(x) - Len(y), .End).Font.Bold = True
End With
A+
 
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Re,

Le code précédent nécessitait la création préalable d'un signet, on peut s'en passer avec celui-ci :

Code:
With leDoc.Content.Find
  .Text = y
  .Forward = True
  .Execute
  .Parent.Bold = True
End With
Bonne nuit.
 
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Bonjour zephir94, le forum,

Voici le code complet, j'ai ajouté des tests de sécurité :

Code:
Dim x$, y$, s
'---
x = Application.Trim(Feuil8.[B1]) 'SUPPRESPACE
y = ""
s = Split(x)
If UBound(s) > 0 Then _
  y = UCase(Left(s(1), 1) & "." & Mid(x, Len(s(0) & s(1)) + 3))
If x <> "" Then x = RTrim(s(0) & " " & y)
With leDoc.Content.Find
  .Execute "<BALISE1>", ReplaceWith:=x, Replace:=wdReplaceAll
  If .Found And y <> "" Then
    .Text = y
    .Forward = True
    .Execute
    .Parent.Bold = True
  End If
End With
'---à répéter éventuellement sur d'autres cellules---
Edit : j'ai ajouté RTrim (au cas où y = "").

Bonne journée.
 
Dernière édition:
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Bonjour Job75, un grand merci je vais tâcher de digérer tout cela, je ne maîtrisais pas cette manipulation.
Je test et reviens dans la matinée.
Encore merci
 
Re : Mettre un x dans une case à cocher d'un fichier Word depuis Excel

Re,

A la place de vos "BALISES" vous pouvez utiliser des signets.

L'avantage c'est que vous pouvez (re)modifier comme vous voulez les textes de ces signets :

Code:
Dim nom$, x$, y$, s, i
'---
nom = "Signet1" 'nom du signet à atteindre
If leDoc.Bookmarks.Exists(nom) Then
  x = Application.Trim(Feuil8.[B1]) 'SUPPRESPACE
  y = ""
  s = Split(x)
  If UBound(s) > 0 Then _
    y = UCase(Left(s(1), 1) & "." & Mid(x, Len(s(0) & s(1)) + 3))
  If x <> "" Then x = RTrim(s(0) & " " & y)
  i = leDoc.Bookmarks(nom).Start
  leDoc.Bookmarks(nom).Range = x
  leDoc.Range(i + Len(x) - Len(y), i + Len(x)).Font.Bold = True
  leDoc.Bookmarks.Add nom, leDoc.Range(i, i + Len(x)) 'redéfinition
Else
  MsgBox "Le signet '" & nom & "' n'existe pas..."
End If
'---à répéter éventuellement sur d'autres signets et cellules---
Edit : j'ai ajouté RTrim (au cas où y = "").

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…