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