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 11/12/2007, 17h40   #1
Invité de passage
 
Inscription : octobre 2003
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 5
Points : 0
Points : 0
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
mrom34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 17h59   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 15h40   #3
Invité de passage
 
Inscription : octobre 2003
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 5
Points : 0
Points : 0
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 :
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
mrom34 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 07h08.


 
 
 
 
Partenaires

Hébergement Web