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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !