IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Insérer un paragraphe via un userform [WD-2010]


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Points : 14
    Points
    14
    Par défaut Insérer un paragraphe via un userform
    Bonjour,

    Je souhaite savoir comment insérer un paragraphe via une boîte de dialogue qui m'afficherait les paragraphes à disposition. Le document est un modèle en .dotm qui sera protégé pour les utilisateurs finaux.
    J'ai donc créé un userform via le mode développeur puis insérer une liste déroulante avec mes paragraphes. Ça, c'est la partie qui n'est pas trop compliquée.

    Ensuite concernant le code à proprement parler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Private Sub CommandButton1_Click()
    Dim bmrange As Range
    For i = 0 To ListBox1.ListCount - 1
    x = i + 1
    Set bmrange = ActiveDocument.Bookmarks("signet" & x).Range
            If ListBox1.Selected(i) = True Then
                bmrange.Text = ListBox1.List(i)
                Else
                bmrange.Text = ""
     
            End If
        ActiveDocument.Bookmarks.Add "signet" & x, bmrange
    Next i
    Me.hide
    End Sub
     
     
     
    Private Sub CommandButton2_Click()
    UserForm1.hide
    End Sub
     
    Private Sub UserForm_Initialize()
     
    ListBox1.Clear
           With ListBox1
                .MultiSelect = 1
                .AddItem "Test 15/11/2019."
                .AddItem "Paragraphe 2."
                .AddItem "Troisième ligne de tests"
     
            End With
     
    End Sub
    Ca marche très bien sans la protection mais je ne sais pas comment faire avec la protection pour que mes signets fonctionnent correctement...

    Merci d'avance et bon weekend !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par La_Taupe Voir le message
    Bonsoir,

    Vous ôtez la protection à l'initialisation du Userform et vous la remettez sur la commande Unload du Userform.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    Merci Eric et désolé pour le temps de réponse...

    Du coup cela donnerait ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Private Sub CommandButton1_Click()
    Dim bmrange As Range
    For i = 0 To ListBox1.ListCount - 1
    x = i + 1
    Set bmrange = ActiveDocument.Bookmarks("signet" & x).Range
            If ListBox1.Selected(i) = True Then
                bmrange.Text = ListBox1.List(i)
                Else
                bmrange.Text = ""
     
            End If
        ActiveDocument.Bookmarks.Add "signet" & x, bmrange
    Next i
    Me.hide
    End Sub
     
     
     
    Private Sub CommandButton2_Click()
    UserForm1.hide
    End Sub
     
    Private Sub UserForm_Initialize()
     
    ListBox1.Clear
    ActiveDocument.Unprotect ""
     
           With ListBox1
                .MultiSelect = 1
                .AddItem "Test 15/11/2019."
                .AddItem "Paragraphe 2."
                .AddItem "Troisième ligne de tests"
     
            End With
     
       ActiveDocument.Protect ""
     
    End Sub
    Parce que j'ai une erreur à l'exécution...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par La_Taupe Voir le message
    Bonjour,

    La syntaxe n'est pas bonne, voir l'aide en ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
       With ActiveDocument
          .Protect Type:=wdAllowOnlyReading, Password:=""
       End With
    C'est plutôt avec CommandButton2_Click en quittant le Userform, s'il est modal, qu'il faut reprotéger. Voir la propriété ShowModal du Userform.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    Bonjour Eric,

    Merci pour votre réponse.
    Je viens de tester ça et ça a l'air de fonctionner en l'état.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Private Sub CommandButton1_Click()
    Dim bmrange As Range
    Dim OriginalProtection As WdProtectionType
    OriginalProtection = ActiveDocument.ProtectionType
    If OriginalProtection <> wdNoProtection Then ActiveDocument.Unprotect
    For i = 0 To ListBox1.ListCount - 1
    x = i + 1
    Set bmrange = ActiveDocument.Bookmarks("signet" & x).Range
            If ListBox1.Selected(i) = True Then
                bmrange.Text = ListBox1.List(i)
                Else
                bmrange.Text = ""
     
            End If
        ActiveDocument.Bookmarks.Add "signet" & x, bmrange
    Next i
    With ActiveDocument
          .Protect Type:=wdAllowOnlyFormFields, , Password:=""
       End With
    Me.hide
    End Sub
     
     
     
    Private Sub CommandButton2_Click()
     
    UserForm1.hide
    End Sub
     
    Private Sub UserForm_Initialize()
     
    ListBox1.Clear
     
           With ListBox1
                .MultiSelect = 1
                .AddItem "Test 15/11/2019."
                .AddItem "Paragraphe 2."
                .AddItem "Troisième ligne de tests"
     
            End With
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saisie via un userform
    Par claribuff dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2008, 19h34
  2. Insérer blob/image via pgAdmin 3 ?
    Par Bobsinglar dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/01/2008, 18h25
  3. Réponses: 10
    Dernier message: 11/11/2007, 16h18
  4. Insérer des leds dans un Userform
    Par fredtes35 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 11h59
  5. Insérer un paragraphe dans une colonne
    Par usf70 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 07/01/2007, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo