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 :

recherche de mots entre crochets


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Assistant de recherche
    Inscrit en
    Février 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant de recherche

    Informations forums :
    Inscription : Février 2011
    Messages : 8
    Par défaut recherche de mots entre crochets
    Bonjour à tous,

    je suis occupé à créer un code dans Visual Studio (sur lequel je débute depuis 1 semaine) afin de vérifier des références biblio citées au sein d'un texte word2003.
    J'ai plus ou moins créé un code qui devrait fonctionner mais je n'arrive pas à savoir comment stocker la référence contenue entre [...], à savoir l'auteur et la date : [auteur, date]. J'arrive à faire identifier le premier [ mais pas celui de la fin...or les longueurs des références varient fortement...

    Quelqu'un aurait-il un idée de comment stocker ces références entre crochets??

    Merci d'avance!!

  2. #2
    Membre très actif Avatar de Ju1.0
    Homme Profil pro
    Ingénieur Automaticien
    Inscrit en
    Novembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 125
    Par défaut
    De quelle manière recherche tu ton premier crochet ?
    Tu n'aurais pas un bout de code à nous montrer ?
    Je pense que dans une variable de type string j'enregistrerai caractère par caractère chaque caractère suivant ton premier crochet jusqu'à tomber sur le 2ème crochet, mais peut-être que il y a mieux, ou plus adapté à ton code.

  3. #3
    Membre habitué
    Homme Profil pro
    Assistant de recherche
    Inscrit en
    Février 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant de recherche

    Informations forums :
    Inscription : Février 2011
    Messages : 8
    Par défaut
    Salut Ju.1

    C'est justement ce crochet qui m'embête...J'ai testé plus ou moins deux codes mais il y a des foirages aux deux:

    1er:

    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
     Dim reference() As String
        Dim n As Integer
        Dim i As Integer
        Dim mot() As String
     
    'ouverture du fichier word
            FileOpen(1, chaplivre.Text, OpenMode.Input)
     
            Do While Not EOF(1)
                i = i + 1
                ReDim Preserve mot(0 To i)
                Input(1, mot(i))
     
                MsgBox(mot(i))  'il lit les mots dans une autre language si issu de .word, et par paquet si issu de .txt
     
                If mot(i) = "[" Then
                    MsgBox("ok")           'c'est ici qu'il y a un stuut!
                    reference(i) = reference(i) + mot(i)  'début d'enregistrement des references
                    MsgBox(reference(i))
     
                    If mot(i) = "]" Then reference(i) = reference(i)
     
                End If
     
            Loop
    -->dans ce cas le fichier word est lu sous un autre langage, si je le met en .txt, il lit par "paquets" de mots... Et en plus j'ai un stuut dans ma boucle car quand je n'obtiens rien dans mon fichier de sortie.




    J'ai commencé aussi avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim DocWord As Microsoft.Office.Interop.Word.Document
      DocWord = GetObject(chaplivre.Text)
            DocWord.Activate()
    -->le souci est que je ne vois pas du tout, mais alors pas du tout, comment continuer (lire le fichier, enregistrer les mots et identifier le crochet) avec cette deuxième solution possible (qui sait lire les .word logiquement)...

  4. #4
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Personnellement, j'aurais recherché le premier crochet [ avec la fonction de recherche de Word Find.
    Ensuite, j'enregistre le myrange(i).start
    Je recherche le deuxième crochet ]
    Ensuite, j'enregistre le myrange(i).end
    J'incrémente mon i
    Et je fais cela en bouclant jusqu'à la fin du document en cherchant le crochet suivant [.
    (Il y a autant de crochet ouvrant que fermant?)

    Normalement myrange(i) contiendrait tes bouts de texte.

  5. #5
    Expert confirmé
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Par défaut
    Bonjour,

    Ben personnellement, j'aurais demandé à Word de faire le boulot pour moi. L'algo est le suivant
    Tu recherches tout ce qui est entre un "[" et "]" dans un document Word, ben ça devrait être ma référence (si tu veux plus d'explications sur les recherches dans Word, clique ici). Après tu la stockes dans une variable ou ailleurs dans un autre document, peu importe, ce qui compte après c'est de recommencer en partant de la position où tu étais auparavant.
    Voilà le code en VBA

    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
     
       '// Variable de stockage des références. Évidemment pour une application professionnelle, il faut disposer de la taille nécessaire au stockage des variables, sinon ça va finir par planer Word sévère, mais ce n'est pas le sujet
       mesReferencesBibliographiques = ""
     
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "[[]*[]]"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
        While Selection.Find.Found
            mesReferencesBibliographiques = mesReferencesBibliographiques
            '// Il n'y a pas besoin de séparateur de texte puisque le texte sélectionné commence par un "[" et finit par "]"
            Selection.MoveRight Unit:=wdCharacter, Count:=1
     
            Selection.Find.Execute
        Wend
    @+

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Un petit mot en plus, la méthode find de l'objet selection est de loin plus puissante que les autres méthodes que l'on pourrait utiliser y compris une boucle sur le contenu.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. [2008R2] variable texte unique en entrée pour recherche avec mots clés
    Par rikidi dans le forum Développement
    Réponses: 6
    Dernier message: 19/02/2013, 14h40
  2. [RegEx] Recherche de texte entre crochets
    Par thib3113 dans le forum Langage
    Réponses: 5
    Dernier message: 18/09/2011, 06h18
  3. [WD14] Recherche d'un mot entre deux textes
    Par wojc01 dans le forum WinDev
    Réponses: 6
    Dernier message: 09/11/2009, 19h38
  4. recherche mot entre deux délimiteurs
    Par dz_robotix dans le forum C++Builder
    Réponses: 8
    Dernier message: 19/10/2009, 11h29
  5. Supprimer mot entre crochets en shell
    Par sebcah dans le forum Linux
    Réponses: 2
    Dernier message: 05/05/2008, 12h21

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