Bonjour,
Je commence tout juste à m'essayer aux codes VBA pour l'automatisation de document et je n'ai aucune expérience en codage mais j'essaye de comprendre pas à pas les méthodes. Pour l'instant je ne demande rien de compliqué à mes macros et j'ai réussi à faire quelques broutilles qui me suffisent pour le moment. Toutefois, je suis confronté à une situation qui est en train de me rendre fou. Il s'agit de la gestion des signets sur un document Word qui doivent être supprimé où non en fonction de valeurs sur Excel.
Alors, j'y arrive lorsque j'ai le choix entre deux paragraphes. Mais je suis bloqué depuis plus de 2h sur une situation qui va, à mon avis, faire rire les plus aguerris d'entre vous.
NB : J'ai cherché des solutions sur internet mais pour le moment je n'arrive nulle part.
Voici mon objectif :
La valeur d'une cellule Excel doit permettre d'afficher un paragraphe parmis 5. J'ai donc inséré 6 signets dans word. Le problème est que j'ai beau essayer les codes "If et Else If" je n'arrive jamais à un résultat satisfaisant. Et plus j'essaie plus le résultat change et je n'arrive pas à comprendre la logique qui m'empêche d'arriver à mon objectif.
J'ai d'abord essayé ça :
Code:
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 Private Sub traitement_signets8() Dim ws As Worksheet Dim signetDeb As String Dim signetFin As String Dim Ph As Integer Dim tbl As Object 'Table Set ws = Sheets("Données") Ph = ws.range("E39") If Ph > 1 Then signetDeb = "DEB_PH" signetFin = "BASIQUEH" ElseIf 0.3 < Ph <= 1 Then signetDeb = "DEB_PH" signetFin = "BASIQUEF" signetDeb = "BASIQUEH" signetFin = "FIN_PH" ElseIf -0.3 <= Ph <= 0.3 Then signetDeb = "DEB_PH" signetFin = "ACIDEF" signetDeb = "BASIQUEF" signetFin = "FIN_PH" ElseIf -0.8 <= Ph < -0.3 Then signetDeb = "DEB_PH" signetFin = "ACIDEH" signetDeb = "ACIDEF" signetFin = "FIN_PH" ElseIf Ph < -0.8 Then signetDeb = "ACIDEH" signetFin = "FIN_PH" End If WordDoc.range(WordDoc.Bookmarks(signetDeb).range.Start, WordDoc.Bookmarks(signetFin).range.End).Select WordApp.Selection.Delete End Sub
Pour information Voici l'ordre des signets : DEP_PH "Texte1" ACIDEH "Texte2" ACIDEF "Texte3" BASIQUEF "Texte4" BASIQUEH "Texte5" FIN_PH
Après j'ai essayé de séparé les double consigne "signetDeb et signetFin" pour une condition en 2 "If", puis j'ai même essayé de créé un "Private Sub traitement_signets()" pour chaque cas mais je me suis dit que ça devenait ridicule et qu'il était impossible que ce soit si "complexe". De toute façon je n'ai jamais obtenu le bon rendu.
Je me suis dit que je devait être mauvais...
C'est pour ça que je suis venu vers vous.
Et je précise à nouveau que ma compréhension des choses est plus que minime.
J'espère que vous pourrez m'aider facilement.
Bonne journée à tous !