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!

57etiquettage.xlsm (105.25 Ko)

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 . Je met le fichier en pièce jointe pour si tu pourrai le regarder, merci!!

21etiquettage-test.xlsm (105.26 Ko)

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 !

Rechercher des sujets similaires à "macro cases cocher"