IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème de signets


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Agronome
    Inscrit en
    juillet 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Agronome
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : juillet 2021
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème de signets
    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 !

  2. #2
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    août 2013
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : août 2013
    Messages : 644
    Points : 2 886
    Points
    2 886
    Par défaut
    Citation Envoyé par Andria5 Voir le message
    ElseIf 0.3 < Ph <= 1 Then
    Bonjour.
    Cette syntaxe n'existe pas en VBA.
    Il faut faire quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF Ph > 0.3 AND Ph <=1 THEN
    Ou utiliser Select Case.

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    décembre 2008
    Messages
    2 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2008
    Messages : 2 171
    Points : 5 456
    Points
    5 456
    Par défaut
    hello,
    il y a aussi un truc bizarre dans ton code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    signetDeb = "DEB_PH"
    signetFin = "ACIDEF"
    signetDeb = "BASIQUEF"
    signetFin = "FIN_PH"
    
    Si tu fais comme ceci tu perds les deux premières affectations (signetDeb et signetFin) qui ne servent alors à rien.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Candidat au Club
    Homme Profil pro
    Agronome
    Inscrit en
    juillet 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Agronome
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : juillet 2021
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Merci
    Merci à vous grâce à vos observations j'ai pu réadapter mon code (d'enfant) et avancer. J'ai arrêté de tourner en rond, et j'ai même atteint mon objectif final.

    Merci beaucoup !

  5. #5
    Membre expert
    Homme Profil pro
    retraité
    Inscrit en
    juin 2012
    Messages
    2 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : juin 2012
    Messages : 2 107
    Points : 3 529
    Points
    3 529
    Par défaut
    Et pour les if --- if else, il est inutile de reprendre la condition précédente puisque satisfaite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        If Ph > 1 Then
     
        ElseIf Ph > 0.3 Then '--- est déjà <= 1 pour atteindre cette instruction
     
        ElseIf Ph > -0.3 Then
     
        ElseIf Ph > -0.8 Then
     
        Else
     
        End If
    Cordialement.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/06/2009, 11h41
  2. Problème selection signet
    Par Ofsco dans le forum Word
    Réponses: 19
    Dernier message: 28/01/2008, 14h49
  3. Réponses: 4
    Dernier message: 08/02/2007, 00h32
  4. VBA Word - Problèmes de signets
    Par Milapyl dans le forum VBA Word
    Réponses: 6
    Dernier message: 05/01/2007, 09h39
  5. problème avec signets dans Word
    Par Kenia dans le forum Access
    Réponses: 1
    Dernier message: 02/07/2006, 18h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo