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
| Sub Ecriture_balise(Tableau_bdd() As String, Ligne As Integer, Application_word As Word.Application, Document_Rapport As Word.Document)
'Sélection et remplacement de toutes les balises du modèle word associées à la ligne par la chaîne de caractères associée
Dim Balise As String
Dim valeur_balise As String
'Pour convertir les heures en format HH:MM
Dim HH As Double
Dim MM As Double
Dim heure As Double
Dim longueur
Dim milliers
Dim k As Integer
Dim Nombre_separe As String
On Error Resume Next
'--------------------------------------------------------------------------
'Récupération des chaines de caractères "<Balise>" et "Valeur_balise"
'--------------------------------------------------------------------------
Balise = "<" & Tableau_bdd(Ligne, 1) & ">"
Select Case Tableau_bdd(Ligne, 3)
Case "nombre_0"
valeur_balise = Round(CDbl(Tableau_bdd(Ligne, 2)), 0)
valeur_balise = CStr(valeur_balise)
Nombre_separe = ""
longueur = Len(valeur_balise)
milliers = (Len(valeur_balise)) / 3
If milliers > 1 Then
milliers = Int(milliers - 0.1)
For k = 1 To milliers + 1
Nombre_separe = Right(Left(valeur_balise, longueur - 3 * (k - 1)), 3) & Chr(160) & Nombre_separe
Next k
valeur_balise = Nombre_separe
Else
valeur_balise = valeur_balise & Chr(160)
End If
Case "Nombre_1"
valeur_balise = Round(CDbl(Tableau_bdd(Ligne, 2) * 10), 0)
Decimale = Right(CStr(valeur_balise), 1)
valeur_balise = Left(CStr(valeur_balise), Len(valeur_balise) - 1)
Nombre_separe = ""
longueur = Len(valeur_balise)
milliers = Len(valeur_balise) / 3
If milliers > 1 Then
milliers = Int(milliers - 0.1)
For k = 1 To milliers + 1
Nombre_separe = Right(Left(valeur_balise, longueur - 3 * (k - 1)), 3) & Chr(160) & Nombre_separe
Next k
valeur_balise = Left(Nombre_separe, Len(Nombre_separe) - 1) & "," & Decimale & Chr(160)
Else
valeur_balise = valeur_balise & "," & Decimale & Chr(160)
End If
Case "Nombre_2"
valeur_balise = Round(CDbl(Tableau_bdd(Ligne, 2) * 100), 0)
Decimale = Right(CStr(valeur_balise), 2)
valeur_balise = Left(CStr(valeur_balise), Len(valeur_balise) - 2)
Nombre_separe = ""
longueur = Len(valeur_balise)
milliers = Len(valeur_balise) / 3
If milliers > 1 Then
milliers = Int(milliers - 0.1)
For k = 1 To milliers + 1
Nombre_separe = Right(Left(valeur_balise, longueur - 3 * (k - 1)), 3) & Chr(160) & Nombre_separe
Next k
valeur_balise = Left(Nombre_separe, Len(Nombre_separe) - 1) & "," & Decimale & Chr(160)
Else
valeur_balise = valeur_balise & "," & Decimale & Chr(160)
End If
Case "Heure"
heure = CDbl(Tableau_bdd(Ligne, 2)) 'Sous format % de 24 h
HH = Int(heure * 24)
MM = Int((heure * 24 - HH) * 60)
valeur_balise = HH & ":" & MM
Case Else
valeur_balise = Tableau_bdd(Ligne, 2)
End Select
'--------------------------------------------------------------------------
'Remplacement de "<Balise>" par "Valeur_balise" dans tout le document
'--------------------------------------------------------------------------
Set myRange = Document_Rapport.Content 'Sélection de tout le document
myRange.Find.Execute FindText:=Balise, _
ReplaceWith:=valeur_balise, Replace:=wdReplaceAll 'Remplacement"
Select Case Balise
Case "<NOM_CLIENT>"
For k = 2 To Document_Rapport.Sections.Count
Document_Rapport.Sections(k).Footers(wdHeaderFooterPrimary).Range.Tables(1).Cell(1, 1).Range.Find.Execute FindText:=Balise, ReplaceWith:=valeur_balise, Replace:=wdReplaceAll 'Remplacement"
Next k
Case "<NOM_SITE>"
For k = 2 To Document_Rapport.Sections.Count
Document_Rapport.Sections(k).Footers(wdHeaderFooterPrimary).Range.Tables(1).Cell(2, 1).Range.Find.Execute FindText:=Balise, ReplaceWith:=valeur_balise, Replace:=wdReplaceAll 'Remplacement"
Next k
End Select
'
If Balise = "<NUM_CONVENTION>" Then
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Select
With Selection.Find
.Text = Balise
.Replacement.Text = valeur_balise 'valeur_balise
.Forward = True
.ClearFormatting
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
'Application.ActiveWindow.View.Type = wdPrintView
End If
End Sub |
Partager