Macros plus accessible en réseau

Tail31 - Modifié le 24 janv. 2024 à 09:20
 Tail31 - 24 janv. 2024 à 12:10

Bonjour,

j'ai créé des macros sous word que j'ai enregistrées dans un modèle word accessible par d'autres utilisateurs en réseau. 

Malheureusement, lorsque j'ouvre ce document sur un pc du réseau, il me génère un document comme prévu, mais je n'ai plus mes macros. 

Comment faire pour que mes macros soient accessible quelques soit le poste du réseau ? 

Voici le code : 

Sub CopierColler()
    Dim Doc As Document
    Set Doc = ActiveDocument

    ' Copier le texte entre "sommaire de l'établissement" et "conception des bâtiments"
    CopierCollerEntreBalises Doc, "Copier début descriptif", "Copier fin descriptif", _
                              "Coller début descriptif", "Coller fin descriptif"

    ' Supprimer les balises après le collage
   

    ' Copier le texte entre "proposition d'avis du groupe" et "prescriptions"
    CopierCollerEntreBalises Doc, "Copier début avis", "Copier fin analyse", _
                              "Coller début avis", "Coller fin analyse"

    ' Supprimer les balises après le collage
    

    ' Copier le texte entre "ci-après" et "règlement en vigueur"
    CopierCollerEntreBalises Doc, "Copier début prescriptions", "Copier fin prescriptions", _
                              "Coller début prescriptions", "Coller fin prescriptions"

    ' Supprimer les balises après le collage
    Call SupprimerPhrasesPrecises
   
End Sub

Sub CopierCollerEntreBalises(Doc As Document, debutBalise As String, finBalise As String, _
                              debutCollerBalise As String, finCollerBalise As String)
    ' Déclaration des variables
    
    
    
    Dim debutRange As Range
    Dim finRange As Range
    Dim texteCopie As Range

    ' Sélection du texte entre les balises
    Set debutRange = Doc.Range
    debutRange.Find.Text = debutBalise
    debutRange.Find.Execute
    Set finRange = Doc.Range
    finRange.Find.Text = finBalise
    finRange.Find.Execute

    ' Copier le texte entre les balises
    Set texteCopie = Doc.Range(debutRange.End, finRange.Start)
    texteCopie.Copy

    ' Coller le texte entre les balises de collage
    debutRange.Find.Text = debutCollerBalise
    debutRange.Find.Execute
    Set finRange = Doc.Range
    finRange.Find.Text = finCollerBalise
    finRange.Find.Execute
    finRange.Paste
End Sub

Sub SupprimerPhrasesPrecises()
    ' Déclaration des variables
    Dim Doc As Document
    Set Doc = ActiveDocument

    ' Phrases à supprimer (ajoutez autant de phrases que nécessaire)
    Dim phrasesASupprimer As Variant
    phrasesASupprimer = Array("Copier début descriptif", "Copier fin descriptif", _
                              "Coller début descriptif", "Coller fin descriptif", "Copier début avis", "Copier fin analyse", _
                              "Coller début avis", "Coller fin analyse", "Copier début prescriptions", "Copier fin prescriptions", _
                              "Coller début prescriptions", "Coller fin prescriptions")

   ' Boucle pour supprimer chaque phrase spécifiée
    Dim i As Integer
    For i = LBound(phrasesASupprimer) To UBound(phrasesASupprimer)
        SupprimerPhraseSpecifique Doc, CStr(phrasesASupprimer(i))
    Next i
End Sub

Sub SupprimerPhraseSpecifique(Doc As Document, ByVal phrase As String)
    ' Déclaration des variables
    Dim phraseRange As Range

    ' Rechercher la phrase à supprimer
    Set phraseRange = Doc.Range
    phraseRange.Find.Text = phrase
    phraseRange.Find.Forward = True
    phraseRange.Find.MatchWholeWord = True
    phraseRange.Find.Execute

    ' Supprimer toutes les occurrences de la phrase trouvée
    Do While phraseRange.Find.Found
        phraseRange.Delete
        phraseRange.Find.Execute
    Loop
End Sub

Private Sub Document_Open()
    ' Appeler la macro pour afficher le message d'information
   Application.OnTime Now + TimeValue("00:00:05"), "AfficherMessageInformation"
End Sub

Sub AfficherMessageInformation()
    ' Vérifier si la case à cocher "Ne plus afficher ce message" est cochée
    Dim settingsKey As String
    settingsKey = "NePlusAfficherMessageInformation"

    ' Utiliser une propriété personnalisée pour stocker la préférence
    Dim checkBoxValue As Boolean
    On Error Resume Next
    checkBoxValue = ActiveDocument.CustomDocumentProperties(settingsKey).Value
    On Error GoTo 0

    ' Afficher le message uniquement si la case à cocher n'est pas cochée
    If Not checkBoxValue Then
        ' Créer la boîte de dialogue personnalisée
        Dim response As Integer
        response = MsgBox("Cliquer sur le bouton : Générer le PV une fois votre rapport terminé." & vbCrLf & vbCrLf & "Ne plus afficher ce message ?", _
                           vbInformation + vbYesNo, "Message d'information Montailler SDIS31 - 2024")

        ' Si l'utilisateur clique sur "Oui" (vbYes), enregistrer la préférence
        If response = vbYes Then
            ActiveDocument.CustomDocumentProperties.Add Name:=settingsKey, _
                LinkToContent:=False, Type:=msoPropertyTypeBoolean, Value:=True
        End If
    End If
End Sub

3 réponses

Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
24 janv. 2024 à 10:07

Faut commencer par regarder la configuration de ton PC réseau, est-ce que les macros sont autorisées dessus


0

Oui les macros sont autorisées. 

0

j'ai un autre soucis, le message d'info s'affiche dès que j'ouvre word, pas que pour ce document précis ou celui généré depuis celui ci.

0
Rejoignez-nous