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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
| Dim Num_mesure As String ' Variable globale
Dim Nom_Mesure As String ' Variable globale
Dim Code_CEREMA As String ' Variable globale
Dim Titre_CEREMA As String ' Variable globale
Dim Objectif As String ' Variable globale
Dim Commu_bio As String ' Variable globale
Dim Localisation As String ' Variable globale
Dim Acteurs As String ' Variable globale
Dim Description As String ' Variable globale
Dim Illustration As String ' Variable globale
Dim Calendrier As String ' Variable globale
Dim Specificite As String ' Variable globale
Dim Cout As String ' Variable globale
Dim Demarches As String ' Variable globale
Dim Phase As String ' Variable globale
Dim Suivis As String ' Variable globale
Dim Indicateurs_oeuvre As String ' Variable globale
Dim Indicateurs_reussite As String ' Variable globale
Dim Mesures_associees As String ' Variable globale
Dim Numero As String ' Variable globale
Private Sub Ref_Change()
Dim cheminBd As String: Dim requete As String
Dim enr As Recordset: Dim base As Database
cheminBd = ".\Fiches_mesures.accdb"
Set base = DBEngine.OpenDatabase(cheminBd)
Set enr = base.OpenRecordset("SELECT * FROM Mesures WHERE Nom_Mesure='" & Ref.Value & "'", dbOpenDynaset)
enr.MoveFirst
'On récupère les données de la BDD Access et on les bascule en variables globales
Nom_Mesure = Ref.Value
Code_CEREMA = enr.Fields("Code_CEREMA").Value
Titre_CEREMA = enr.Fields("Titre_CEREMA").Value
Objectif = enr.Fields("Objectif").Value
Commu_bio = enr.Fields("Commu_bio").Value
Localisation = enr.Fields("Localisation").Value
Acteurs = enr.Fields("Acteurs").Value
Description = enr.Fields("Description").Value
Illustration = enr.Fields("Illustration").Value
Calendrier = enr.Fields("Calendrier").Value
Specificite = enr.Fields("Specificite").Value
Cout = enr.Fields("Cout").Value
Demarches = enr.Fields("Demarches").Value
Phase = enr.Fields("Phase").Value
Suivis = enr.Fields("Suivis").Value
Indicateurs_oeuvre = enr.Fields("Indicateurs_oeuvre").Value
Indicateurs_reussite = enr.Fields("Indicateurs_reussite").Value
Mesures_associees = enr.Fields("Mesures_associees").Value
Obj.Value = enr.Fields("Objectif").Value
Numero = Num.Value
'Enregitrer la valeur en variable globale du document
If ThisDocument.Variables("Mesures_enregistrees").Value = "" Then
ActiveDocument.Variables.Add Name:="Mesures_enregistrees", Value:="Aucune"
End If
Dim valeursStockees As String
' Vérifier si la variable existe dans le document
If ThisDocument.Variables("Mesures_enregistrees").Value = "Aucune" Then
' Si aucune donnée n'est stockée, initialiser la variable à une chaîne vide
valeursStockees = ""
Else
' Si des données sont déjà stockées, récupérer les valeurs existantes
valeursStockees = ThisDocument.Variables("Mesures_enregistrees").Value
End If
' Concaténer la nouvelle valeur avec les valeurs déjà stockées
valeursStockees = valeursStockees & IIf(valeursStockees <> "", ",", "") & Numero
' Stocker la nouvelle valeur concaténée dans le document
ThisDocument.Variables("Mesures_enregistrees").Value = valeursStockees
enr.Close
base.Close
Set enr = Nothing
Set base = Nothing
End Sub
Private Sub UserForm_Activate()
Dim cheminBd As String: Dim requete As String
Dim enr As Recordset: Dim base As Database
cheminBd = ".\Fiches_mesures.accdb"
Set base = DBEngine.OpenDatabase(cheminBd)
Set enr = base.OpenRecordset("SELECT * FROM Mesures ORDER BY Num_mesure", dbOpenDynaset)
enr.MoveFirst
Do
Ref.AddItem enr.Fields("Nom_Mesure").Value
enr.MoveNext
Loop Until enr.EOF
enr.Close
base.Close
Set enr = Nothing
Set base = Nothing
End Sub
Private Sub Ajouter_Click()
' Vérifier si la zone de texte est vide
If Trim(Me.Num.Value) = "" Then
' Afficher un message d'erreur
MsgBox "Veuillez saisir un numéro pour cette mesure.", vbExclamation, "Erreur de saisie"
' Annuler la sortie de la zone de texte
Cancel = True
Exit Sub ' Quitter la procédure pour éviter l'exécution du reste du code
Else
Numero = Me.Num.Value ' Attribuer la valeur de la zone de texte à la variable Numero
Dim tbl As Table
Dim cell As cell
' Créer le tableau à partir de la sélection actuelle
Set tbl = ActiveDocument.Tables.Add(Selection.Range, NumRows:=17, NumColumns:=2)
' Définir le titre du tableau
tbl.Title = Numero
' Définir des bordures simples pour tout le tableau
With tbl.Borders
.InsideLineStyle = wdLineStyleSingle
.OutsideLineStyle = wdLineStyleSingle
End With
' Définir les largeurs de colonnes
tbl.Columns(1).PreferredWidth = CentimetersToPoints(2.48)
tbl.Columns(2).PreferredWidth = CentimetersToPoints(13.51)
' Insérer les données du tableau
tbl.cell(1, 1).Range.Text = Numero
tbl.cell(1, 2).Range.Text = Nom_Mesure
tbl.cell(2, 1).Range.Text = Code_CEREMA
tbl.cell(2, 2).Range.Text = Titre_CEREMA
tbl.cell(3, 1).Range.Text = "Objectif(s)"
tbl.cell(3, 2).Range.Text = Objectif
tbl.cell(4, 1).Range.Text = "Communautés biologiques visées"
tbl.cell(4, 2).Range.Text = Commu_bio
tbl.cell(5, 1).Range.Text = "Localisation"
tbl.cell(5, 2).Range.Text = Localisation
tbl.cell(6, 1).Range.Text = "Acteurs"
tbl.cell(6, 2).Range.Text = Acteurs
tbl.cell(7, 1).Range.Text = "Description opérationnelle / Modalités de mise en oeuvre"
tbl.cell(7, 2).Range.Text = Description
tbl.cell(8, 1).Range.Text = "Exemples d'illustration"
tbl.cell(8, 2).Range.Text = Illustration
tbl.cell(9, 1).Range.Text = "Calendrier de mise en oeuvre"
tbl.cell(9, 2).Range.Text = Calendrier
tbl.cell(10, 1).Range.Text = "Spécificités sur le projet"
tbl.cell(10, 2).Range.Text = Specifite
tbl.cell(11, 1).Range.Text = "Coût indicatif"
tbl.cell(11, 2).Range.Text = Cout
tbl.cell(12, 1).Range.Text = "Démarches administratives éventuelles"
tbl.cell(12, 2).Range.Text = Demarches
tbl.cell(13, 1).Range.Text = "Phase du projet"
tbl.cell(13, 2).Range.Text = Phase
tbl.cell(14, 1).Range.Text = "Suivis de la mesure"
tbl.cell(14, 2).Range.Text = Suivis
tbl.cell(15, 1).Range.Text = "Indicateurs de mise en oeuvre"
tbl.cell(15, 2).Range.Text = Indicateurs_oeuvre
tbl.cell(16, 1).Range.Text = "Indicateurs de réussite"
tbl.cell(16, 2).Range.Text = Indicateurs_reussite
tbl.cell(17, 1).Range.Text = "Mesures associées"
tbl.cell(17, 2).Range.Text = Mesures_associees
' Appliquer le style de paragraphe centré pour la première ligne de la colonne de droite
tbl.cell(1, 2).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
' Appliquer le style de paragraphe justifié pour les lignes suivantes de la colonne de droite
For i = 2 To tbl.Rows.Count
tbl.cell(i, 2).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
Next i
' Rechercher et mettre en gras le texte entre les balises <b> et <\b> dans toutes les cellules
Dim rng As Range
Dim startPos As Long
Dim endPos As Long
' Rechercher et mettre en gras le texte entre les balises <b> et <\b> dans toutes les cellules
For Each cell In tbl.Range.Cells
For Each para In cell.Range.Paragraphs
Set rng = para.Range
Do While rng.Find.Execute(FindText:="<b>", Forward:=True)
startPos = rng.End
rng.Collapse wdCollapseEnd
If rng.Find.Execute(FindText:="<\b>", Forward:=True) Then
endPos = rng.Start
rng.SetRange Start:=startPos, End:=endPos
rng.Bold = True
End If
Loop
Next para
Next cell
' Rechercher et supprimer les balises <b> et <\b> dans le tableau
tbl.Range.Find.Execute FindText:="<b>", ReplaceWith:="", Replace:=wdReplaceAll
tbl.Range.Find.Execute FindText:="<\b>", ReplaceWith:="", Replace:=wdReplaceAll
' Fermer le formulaire
Unload Inser_mesure
End If
End Sub |
Partager