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 :

macro pour comparer 2 tableaux sous word


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 5
    Points : 3
    Points
    3
    Par défaut macro pour comparer 2 tableaux sous word
    Bonjour,

    J'essaye actuellement de creer une macro word qui me permette de comparer deux tableaux qui se trouvent dans 2 fichiers doc differents.
    Tout les 3 mois je fais tourner un programme qui me sort un fichier doc qui contient plusieurs tableaux. Ce que je veux faire c'est comparer avec la version precedente pour identifier les nouveaux enregistrements et les surligner.

    J'ai deja une methode avec excel, ou je copie les deux tableaux sur une feuille puis j'identifie les les cas uniques et je vais les surligner dans mon document word. Mais maintenant j'aimerais faire une macro sous word qui soit plus pratique.


    Ce que je pensais faire, c'est creer une macro qui marche a partir de 2 doc word. J'ouvre les deux fichiers. Je selectionne les 2 tableaux qui m'interessent ( car beaucoup de tableaux dans chaque fichier) et pares je lance une comparaison.
    Je suis pas sur que cela soit la meilleure methode. Ne vaut il pas mieux que je passe par une etape excel dans ma macro?
    Je debute en vba. Je pense avoir l'algorithme pour faire la comparaison ligne par ligne. Mais j'ai du mal a jongler entre les deux instances word.

    Je suis encore au debut mais j'espere bien reussir car c'est un outil qui pourrait m'etre assez utilse ainsi que a mes collegues.



    Romain

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Il y a une fonction Word qui fait très bien ce genre de choses.
    C'est la comparaison de document, elle donne les différences entre deux documents.
    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 !

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    MErci mais ce n'est pas exactement ce que je recherche.

    J'ai fait un code qui marche mais j'aimerais faire une version un peu plus correcte et qui marche sur des gros tableaux. C'est pas bien programmé mais c'est a peu pres ce que je souhaite:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Sub comparetab()
    '
     
    ' Macro enregistrée le 11/12/2007 par FR54835
    '
    Dim tabnew As Table, tabold As Table
    Dim i As Integer, j As Integer, k As Integer, l As Integer, find As Integer
    Dim linvalnew As String, linvalold As String
    Dim docnew As Document, docold As Document
    Dim objworld As Word.Application
     
     
     
     Set tabnew = Selection.Tables(1)
     Windows("doc2.doc").Activate
     Set tabold = Selection.Tables(1)
      Windows("doc1.doc").Activate
     
      For i = 1 To tabnew.Rows.Count
        find = 0
        linvalnew = ""
     
        For j = 1 To tabnew.Columns.Count
            linvalnew = linvalnew & tabnew.Cell(i, j).Range
        Next j
     
            Windows("doc2.doc").Activate
            For k = tabold.Rows.Count To 1 Step -1
             linvalold = ""
                For l = 1 To tabold.Columns.Count
                linvalold = linvalold & tabold.Cell(k, l).Range
                Next l
             If linvalold = linvalnew Then
             find = 1
             End If
            Next k
     
         Windows("doc1.doc").Activate
         If find = 0 Then
            With tabnew.Rows(i)
                With .Shading
                 .BackgroundPatternColor = wdColorYellow
            End With
          End With
          End If
     
     
    Next i
    End Sub

Discussions similaires

  1. [XL-2007] Macro pour supprimer des lignes sous conditions de valeur de cellule
    Par frisco75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/09/2011, 14h33
  2. [Tableaux] Une fonction pour comparer deux tableaux ?
    Par renaud26 dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2009, 11h11
  3. Réponses: 1
    Dernier message: 20/04/2009, 15h26
  4. Module Access pour remplacer du texte sous Word.
    Par vcapron dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/06/2008, 16h00
  5. [Pour info] petit bug sous Word
    Par loufab dans le forum Word
    Réponses: 1
    Dernier message: 16/03/2006, 22h24

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