Vb récupérer le numero de ligne

oisillon Messages postés 3 Statut Membre -  
Prog44 Messages postés 17 Date d'inscription   Statut Membre -
Bonjour,
je veux en vb faire une recherche sur un mot dans un document word ça j'ai réussi a le faire par contre je n'arrive pas a la suite de ma recherche à récupérer le numero de ligne pour ensuite copier toute la ligne
Configuration: Windows XP
Firefox 3.0.1

1 réponse

  1. Prog44 Messages postés 17 Date d'inscription   Statut Membre 3
     
    voici un exemple :

    Sub copier_ligne()

    Dim i, j, nbcar, maxpar, nbcarmot, nbpar, pos1, pos2, p1, p2 As Integer
    Dim oncopie As Boolean
    Dim mot As String
    Dim vpar As Paragraph
    Dim vrange As Range

    mot = "pigeon" 'mot à rechercher --> modifier le mot ici uniquement
    nbcarmot = Len(mot) 'longueur du mot

    'parcours du document
    With ActiveDocument

    nbpar = .Paragraphs.Count 'nombre deparagraphes dans le texte de départ --> ne doit pas changer

    For i = 1 To nbpar 'parcours des paragraphes
    Set vpar = .Paragraphs(i) 'vpar est le paragraphe en cours
    nbcar = .Paragraphs(i).Range.Characters.Count 'nombre total de caractères dans le paragraphes
    oncopie = True 'flag pour éviter les doublons de mot à rechercher dans le même paragraphe
    For j = 0 To nbcar - 1 'parcours des caractères du paragraphe vpar
    pos1 = j 'position dans le paragraphe
    p1 = vpar.Range.Start + pos1 'position dans le document (nécessaire pour vrange)
    If pos1 + nbcarmot < nbcar Then 'test longueur du mot recherché
    pos2 = pos1 + nbcarmot
    p2 = p1 + nbcarmot
    Else
    pos2 = pos1
    p2 = p1
    End If

    Set vrange = .Range(p1, p2)

    If vrange = mot Then
    If oncopie = True Then
    .Paragraphs.Add
    maxpar = .Paragraphs.Count 'déplacement de la fin du texte
    .Paragraphs(maxpar).Range.InsertAfter vpar.Range.Text
    oncopie = False
    End If

    End If

    Next j

    Next i
    End With

    End Sub
    2