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 :

Copy ou duplicata conditionnel


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    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 Fichiers attachés

  2. #2
    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
    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 : 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
    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)

Discussions similaires

  1. Copie de cellules soumis à une mise en forme conditionnelle
    Par nadyves dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/08/2017, 01h19
  2. Macro automatique conditionnelle insertion ligne puis copie
    Par FloRichar dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/05/2013, 12h18
  3. [XL-2003] Macro Copie conditionnelle
    Par mout94 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2010, 17h26
  4. Copie d'une mise en forme conditionnelle
    Par jnauche dans le forum Excel
    Réponses: 3
    Dernier message: 24/09/2008, 15h04
  5. Copie conditionnelle des valeurs d'une ligne
    Par frisette68 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/02/2008, 02h07

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