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 :

savoir a quel paragraphe on en est dans word


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut savoir a quel paragraphe on en est dans word
    Bonjour,

    Je souhaite créer une maccro sous Excell qui m'ouve un Word, cherche un mot, et me dit a quel paragraphe il se trouve (si ce n'est pas possible, alors a quel page il est)

    J'ai deja effectué la partie ouverture du word et recherche du mot, par contre je n'ai aucune piste pour trouver le numero de paragraphe associé ou la page correspondante.......

    Si vous avez des idées, je suis plus que preneur.

    Merci d'avance

    Ps:ce que j'entendais par paragraphe c'etait la valeur du dernier titre renseigné, par exemple:

    1 Explication
    1.1 Mise en relief
    La mise en relief de mon exemple passe par ce corps de texte

    Ici le paragraghe dont je parlais correspondrait a: 1.1
    Je ne souhaite pas renvoyer le nom du paragraphe, mais juste son numero.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    J'ai trouvé ça dans l'aide VBA de Word
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Information(wdActiveEndAdjustedPageNumber)
    cette instruction donne le N° de page (tient compte d'une numérotation personnalisée) où se trouve le curseur

  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
    Tu peux également identifier les titres par macro.
    Si je retrouve ça je te le mets.

    Edit
    Regarde déjà ça, ça devrait te permettre d'identifier le style des paragraphes.
    Je n'ai pas sous la main de doc pour tester mais un simple test sur le style devrait te permettre d'identifier les titres...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Dim styl as ???
    For Each styl In ActiveDocument.Styles
        MsgBox styl.NameLocal
    Next
    Tu dois bien sûr l'adapter dans Excel. ApplWd. etc.
    Je continue mes recherches, ce n'est pas de cet exemple dont je parlais.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci, ca marche plutot bien.

    Si part hasard vous trouvez la solution pour le paragraphe, pensez à moi ^^

    Edit: Je viens de voir ta reponse ouskel'n'or,
    Le souci étant de trouvé le dernier titre avant l'endroit ou se situe ma selection....

  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
    Tu devrais enregistrer une macro qui fait ça dans Word, on pourra toujours t'aider à la traduire pour Excel... Sinon, les questions sur word étant peu fréquentes, c'est nous qui devrions le faire pour toi... Et ce n'est pas ce que tu veux ? Hein ?
    A+

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    A l'attention de ouskel'n'or
    Tu devrais enregistrer une macro qui fait ça dans Word
    Même dans Word, je ne crois pas que l'on puisse savoir dans quel chapitre on se trouve.
    En théorie, il faudrait retrouver le paragraphe hiérarchisé précédent la position du curseur. C'est faisable ça ??

  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
    Si, on peut avoir la liste des titres par leur style. Cette liste est ordonnée.
    On teste les styles, si le style recherché est le bon, on note le contenu du paragraphe (correspondant au titre) dans un tableau.
    Le tableau créé, en recherche dans le document tu retrouves les titres comme tu veux par leur contenu et si le texte qui suit t'intéresse, tu sélectionnes depuis le titre ou sa fin jusqu'au titre suivant en maintenant la sélection (sous VBA -> Extend:=wdExtend)
    Suffit de demander

  8. #8
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    un exemple avec l'enregistreur de macro a adapter :

    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
        Selection.Find.ClearFormatting
        Selection.Find.Style = ActiveDocument.Styles("Titre 1")
        Selection.Find.ParagraphFormat.Borders.Shadow = False
        With Selection.Find
            .Text = ""
            .Replacement.Text = ""
            .Forward = False
            .Wrap = wdFindAsk
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute

  9. #9
    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
    Une idée de recherche avec mise en tableau des titres.
    Corrigé pour fonctionner chaque fois
    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
    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")
        i = 0
        Do
            With Selection.Find
                .Forward = True
                .Format = True
                .Execute
                .Wrap = wdFindStop
                ok = .Found
            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
        If i > 0 Then
            For i = 1 To UBound(tablo)
                MsgBox i & " - " & tablo(i)
            Next
        End If
    End Sub

  10. #10
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Je viens de tester et effectivement le code fonctionne une fois sur 2, une fois il trouve la fois d'après non, étrange.

    Edit : j'ai rajouté Selection.Find.ClearFormatting, mais ça ne change rien

  11. #11
    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
    Ça y est, j'ai trouvé la cause, il suffit d'inverser les deux lignes ok = .found et .Execute

    Avant
    ok = .Found
    .Execute
    Après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                .Execute
                ok = .Found
    Evident ? Oui, bien sûr ! Encore faut-il tout écrire en une seule fois pour suivre la logique...
    Je corrige dans le message

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2012, 01h33
  2. Savoir par quel champ une table est partitionnée
    Par labolabs dans le forum PL/SQL
    Réponses: 2
    Dernier message: 15/09/2011, 11h05
  3. Comment savoir avec quel JDK une classe est compilé
    Par menzlitsh dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2009, 18h21
  4. [WiFi] savoir sur quel canal le PA est connecté
    Par interhossa007 dans le forum Hardware
    Réponses: 3
    Dernier message: 04/09/2008, 13h46
  5. Réponses: 5
    Dernier message: 15/06/2007, 15h56

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