Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 01h04   #1
Invité de passage
 
Inscription : septembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 19
Points : 3
Points : 3
Par défaut Copy ou duplicata conditionnel

Bonjour à tous,

Supposons un bulletin quotidien des conditions routières de 3 routes: Rte 1, Rte 2, Rte 3. La Rte 2 inclut 2 tronçons: est et ouest pour un total de 4 tronçons. Imaginons les bulletins suivants dans un document word:

Bulletins des conditions routières émis le mercredi 13 décembre 2011.
Rte 1
Rte 2
Rte 3.
Condition bonne, pavé dégagé, visibilité bonne.
Fin.
------------------------------------------------------------------
Bulletins des conditions routières émis le mercredi 14 décembre 2011.
Rte 1.
Condition critique, pavé glacé, visibilité nulle.
Rte 2 - ouest.
Condition acceptable, pavé enneigé, visibilité passable.
Rte 2 - est
Route 3.
Condition bonne, pavé dégagé, visibilité bonne.
Fin.


Grâce à une VBA, je voudrais copier les conditions à chacun des 4 tronçons comme suit:

Bulletins des conditions routières émis le mercredi 13 décembre 2011.
Rte 1
Condition bonne, pavé dégagé, visibilité bonne.
Rte 2 - ouest
Condition bonne, pavé dégagé, visibilité bonne.
Rte 2 - est
Condition bonne, pavé dégagé, visibilité bonne.
Rte 3.
Condition bonne, pavé dégagé, visibilité bonne.
Fin.
------------------------------------------------------------------
Bulletins des conditions routières émis le mercredi 14 décembre 2011.
Rte 1.
Condition critique, pavé glacé, visibilité nulle.
Rte 2 - ouest.
Condition acceptable, pavé enneigé, visibilité passable.
Rte 2 - est
Condition bonne, pavé dégagé, visibilité bonne.
Route 3.
Condition bonne, pavé dégagé, visibilité bonne.
Fin.

Un " copy conditionnel" me semble approprié mais j'ignore comment utiliser ces commandes. Un peu d'aide SVP.
Je joins le fichier en exemple.

Merci d'avance,
Jean-Luc
Fichiers attachés
Type de fichier : doc BCR.doc (25,0 Ko, 2 affichages)
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 19h08   #2
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Salut jeanluc0

La grande ruse est de commencer par... la fin. Tu lis tes phrases une à une, si c'est une condition, tu la gardes et si tu as une route, tu lui ajoutes la condition mémorisée et tu boucles tout simplement. A la fin, tu n'as plus qu'à ne rien faire (heu si il faut sauvegarder).

As-tu besoin d'aide pour réaliser ce parcours avec la ruse ? Allez c'est Noël, voilà la base du code magique

Code :
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
    aTexteFinal = ""
    aDerniereConditionTrouvée = ""
    For aI = ActiveDocument.Paragraphs.Count To 1 Step -1
        If InStr(ActiveDocument.Paragraphs(aI).Range.Text, "Condition") = 1 Then
            '// On a une ligne "Condition de circulation"
            aDerniereConditionTrouvée = Mid(ActiveDocument.Paragraphs(aI).Range.Text, 1, Len(ActiveDocument.Paragraphs(aI).Range.Text) - 1)
        Else
            If Len(ActiveDocument.Paragraphs(aI).Range.Text) > 2 Then
                aTexteFinal = Mid(ActiveDocument.Paragraphs(aI).Range.Text, 1, Len(ActiveDocument.Paragraphs(aI).Range.Text) - 1) + "$$$" + aDerniereConditionTrouvée + "$$$" + aTexteFinal
            End If
        End If
    Next
 
    ActiveDocument.Range.Text = aTexteFinal
 
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "$$$"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
Bonnes Fêtes (et bonne route)
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h04.


 
 
 
 
Partenaires

Hébergement Web