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

VBA Word Discussion :

Lister les titres selon le style (Titre 1, Titre 2, ...)


Sujet :

VBA Word

  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut Lister les titres selon le style (Titre 1, Titre 2, ...)
    Bonsoir,
    La raison est simple, la première ligne de code (Selection.HomeKey Unit:=wdStory, etc) n'est pas exécutée lors du premier lancement
    Pourquoi ?
    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
    Sub test()
    Dim tablo(), i As Integer, ok As Boolean
        Selection.HomeKey Unit:=wdStory, Extend:=wdMove 'On se place en début de document
        Selection.Find.Style = ActiveDocument.Styles("Titre 1")
        Do
            With Selection.Find
                .Forward = True
                .Format = True
                ok = .Found
                .Execute
                .Wrap = wdFindStop
            End With
            If ok Then
                i = i + 1
                ReDim Preserve tablo(i)
                tablo(i) = Selection
                ElseIf Not ok Then Exit Do
            End If
        Loop While ok
        'simple contrôle par affichage des titres
        For i = 1 To UBound(tablo)
            MsgBox i & " - " & tablo(i)
        Next
    End Sub
    Par avance, merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut Ousk,

    Je viens d'essayer ton code, mais ce n'est pas sur la première ligne HomeKey que je coince, mais sur l'indice du tableau.

    en ajoutant

    Il fonctionne.

    Mais j'ai peut-être rien compris !

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Salut l'homme heureux,
    Non, tu as bien compris, tel quel mon code fonctionne une fois sur deux. Et effectivement, cela venait bien de l'indice. Je teste avec base 1 mais je ne comprends pas plus, je n'ai jamais eu à faire appel à Option ... pour que l'indice d'un tableau soit correct.

    Edit
    Test réalisé : avec ou, sans option, rien de changé.
    Je répète, ça fonctionne une fois sur 2 et je ne comprends pas le pourquoi de la chose.

    Edit bis
    Youki rudement content :
    ............J'ai compris ! j'ai viendu ! j'ai vaincu !
    Suffisait d'inverser Execute et ok = found
    Avant
    ok = .Found
    .Execute
    Après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                .Execute
                ok = .Found
    Fallait être bête pour faire ça mais heureusement je suis beaucoup intelligent
    Merci à toi maître des lieux

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    euh ...

    as-tu essayé ?


  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Non. D'ailleurs l'exécution est systématique puisque la ligne .execute lance la recherche, tandis que found n'est vrai que si la recherche a été fructueuse. Logiquement...
    Bonne soirée

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    .Execute renvoie vrai si l'opération a été fructueuse.

    Tu devrais gagner une ligne.

    Essaie, qu'est ce que ça coûte !

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par Heureux ?
    Essaie, qu'est ce que ça coûte !
    M'énerve ! Moi je voulais le garder pour la logique de l'histoire : On cherche, on ne trouve pas, on sort !
    Bon, pour te faire plaisir et comme tu sembles sous-entendre qu'il y a des trucs qui servent à rien dans VBA, j'ai déplacé le ok. C'est ok !

    Heureux Oli contre VBA et qui c'est qui a gagné ?

    J'ai également enlevé le Elseif qui ne sert à rien non plus vu que j'ai déjà modifié mon code et que j'avais supprimé un truc qui ne servait à rien non plus ...
    Tu aurais tout de même pu me le dire

    Merci quand même.
    Bonne nuit
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DATA] Lister les observations selon un critère
    Par maysa dans le forum SAS Base
    Réponses: 8
    Dernier message: 20/09/2011, 10h16
  2. [XL-2003] lister les infos selon une date
    Par chryssouille dans le forum Excel
    Réponses: 3
    Dernier message: 09/09/2011, 11h20
  3. Réponses: 5
    Dernier message: 19/07/2007, 16h51
  4. [Styles]lister les propriétés des styles
    Par peyo_le_fou dans le forum Word
    Réponses: 6
    Dernier message: 16/05/2007, 12h33
  5. Réponses: 1
    Dernier message: 20/10/2005, 15h59

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