Macro pour des cases à cocher
Bonjour à tout le monde!
Je demande votre aide avec un petit soucis que j'ai. J'ai une macro qui remplie un fichier Word avec des infos de mon fichier Excel, ce que je voudrais c'est qu'on puisse sélectionner les infos à l'aide de cases à cocher qu'on veut mettre dans mon fichier Word. La macro que j'ai fait ( et que je n'arrive pas à optimiser avec une boucle) marche à travers des signets.
Vous devez vous situer à la Feuil2 du classeur.
Merci beaucoup!
Bonjour,
voilà ton code dans une boucle :
Sub ListeEttiquete()
Dim WordObj As Object, Doc As Object
Dim I As Integer
Set WordObj = CreateObject("Word.Application")
Const wdGoToBookmark = -1
WordObj.Visible = True
'Ouvre le document modèle existant dans le répertoire spécifique
Set Doc = WordObj.Documents.Open("C:\Users\martin\Desktop\etiquettes.doc")
With WordObj.Selection ' assignation des signets
For I = 1 To 42
.GoTo What:=wdGoToBookmark, Name:="tube" & I ' recherche du signet - ' remplissage 1ere en tête
.TypeText Text:=Range("C" & I + 19).Text ' remplacer le signet par le texte de la cellule B3
.GoTo What:=wdGoToBookmark, Name:="dim" & I 'Signet dimensions
.TypeText Text:=Range("D11").Text
.GoTo What:=wdGoToBookmark, Name:="coulee" & I 'Signets coulée
.TypeText Text:=Range("D9").Text
.GoTo What:=wdGoToBookmark, Name:="lot" & I 'Signets lots
.TypeText Text:=Range("D8").Text
Next I
End With
Set Doc = Nothing
Set WordObj = Nothing
End Sub
Bonjour Theze,
Merci pour ton code, c'est parfait! Pour les cases à cocher j'ai pensé quelque chose comme ca :
If CheckBox1.Value = 1 Then
.GoTo What:=wdGoToBookmark, Name:="dim" & I 'Signet dimensions
.TypeText Text:=Range("D11").Text
Else *Ne pas remplir les signets*
If CheckBox2.Value = 1 Then
.GoTo What:=wdGoToBookmark, Name:="coulee" & I 'Signets coulée
.TypeText Text:=Range("D9").Text
Else *Ne pas remplir les signets*
If CheckBox3.Value = 1 Then
.GoTo What:=wdGoToBookmark, Name:="lot" & I 'Signets lots
.TypeText Text:=Range("D8").Text
Else *Ne pas remplir les signets*
Au niveau de la syntaxe je ne sais pas comment compléter le Else. Qu'en pense tu?
Merci!
Bonjour,
C'est très simple, tu ne mets rien ! Si la valeur est True (ou -1 mais pas 1. True = -1, False = 0), le bloc est exécuté sinon, il est ignoré :
If CheckBox1.Value = True Then
.GoTo What:=wdGoToBookmark, Name:="dim" & I 'Signet dimensions
.TypeText Text:=Range("D11").Text
End If
If CheckBox2.Value = True Then
.GoTo What:=wdGoToBookmark, Name:="coulee" & I 'Signets coulée
.TypeText Text:=Range("D9").Text
End If
If CheckBox3.Value = True Then
.GoTo What:=wdGoToBookmark, Name:="lot" & I 'Signets lots
.TypeText Text:=Range("D8").Text
End If
Bonjour Theze,
J'ai bien suivi ton conseil mais lorsque j'exécute la macro Excel plante complètement, je ne sais pas pourquoi
Bonjour,
N'ayant pas le fichier Word, je ne peux pas t'aider !
Bonjour,
Voici le fichier word, merci infiniment Theze pour ton aide!
Re,
Essai de cette façon :
Sub ListeEttiquete()
Dim WordObj As Object, Doc As Object
Dim I As Integer
Set WordObj = CreateObject("Word.Application")
Const wdGoToBookmark = -1
WordObj.Visible = True
'Ouvre le document modèle existant dans le répertoire spécifique
' Set Doc = WordObj.Documents.Open("C:\Users\Desktop\etiquettes.doc")
Set Doc = WordObj.Documents.Open("E:\Téléchargements\etiquettes - Copie.doc")
With WordObj.Selection ' assignation des signets
For I = 1 To 42
If Feuil2.CheckBox1.Value = True Then
.GoTo What:=wdGoToBookmark, Name:="dim" & I 'Signet dimensions
.TypeText Text:=Range("D11").Text
End If
If Feuil2.CheckBox2.Value = True Then
.GoTo What:=wdGoToBookmark, Name:="coulee" & I 'Signets coulée
.TypeText Text:=Range("D9").Text
End If
If Feuil2.CheckBox3.Value = True Then
.GoTo What:=wdGoToBookmark, Name:="lot" & I 'Signets lots
.TypeText Text:=Range("D8").Text
End If
Next I
End With
Set Doc = Nothing
Set WordObj = Nothing
End Sub
Les "CheckBox" font partie de la feuille "Etiquetage" (dont le module est "Feuil2") et le code est situé dans le module standard, il te faut donc soit les "parenter" soit mettre le code dans le module de la feuille "Etiquetage" (module Feuil2).
Ahhhh je vois !! Merci beaucoup Theze, j'apprécie vraiment ton aide.
Bonne fin de journée !