Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives


 
 
LinkBack Outils de la discussion
Vieux 25/04/2003, 11h19   #1 (permalink)
Ber Nar
Guest
 
Messages: n/a
Par défaut Comparer 2 tables

Bonjour à tous !

Voilà mon souci :

J'ai construit (il y a longtemps) une macro xl4 qui compare la 1ère colonne de 2 tables (triées par ordre croissant) et qui insère une ligne dans l'une des deux tables lorsque les 2 données comparées sont différentes.

J'aimerais pouvoir écrire cette macro en procédure VBA. quelqu'un peut-il m'aider ?

=ECRAN(FAUX)
=TANT.QUE(CELLULE.ACTIVE()<>"")
Debut=LIRE.CELLULE(5)
=SELECTIONNER("LC11")
=SI(CELLULE.ACTIVE()=Debut;ATTEINDRE(A7);SI(CELLUL E.ACTIVE()>Debut;ATTEINDRE(A9);SI(CELLULE.ACTIVE() ="";ATTEINDRE(A17);ATTEINDRE(A13))))
=SELECTIONNER("L(1)C1")
=ATTEINDRE(A3)
=SELECTIONNER("LC:LC17")
=INSERER(2)
=SELECTIONNER("L(1)C1")
=ATTEINDRE(A3)
=SELECTIONNER("LC1:LC10")
=INSERER(2)
=SELECTIONNER("L(1)C1")
=ATTEINDRE(A3)
=SUIVANT()
=RETOUR()

Par ailleurs, j'aimerais pouvoir indiquer au moyen d'une boite de dialogue, les coordonnées et longueurs des 2 tables.

Votre aide m'est précieuse.

Merci par avance.

Ber Nar.
 
ANNONCES
Vieux 25/04/2003, 12h34   #2 (permalink)
sousou
Guest
 
Messages: n/a
Par défaut Re: Comparer 2 tables

Voilà qui devrait t'aider en tous les cas avec des nombres.


Sub test()
Set debtable1 = ThisWorkbook.Worksheets(1).Range("a1")
Set debtable2 = ThisWorkbook.Worksheets(1).Range("b1")

inc1 = 0
inc2 = 0
While debtable1.Offset(inc1, 0) <> ""
Set donnée1 = debtable1.Offset(inc1, 0)
Set donnée2 = debtable2.Offset(inc1, 0)
If donnée1 = donnée2 Then GoTo suite
If donnée1 = "" Then debtable1.Offset(inc1, 0) = debtable2.Offset(inc1, 0)
If donnée2 = "" Then debtable2.Offset(inc1, 0) = debtable1.Offset(inc1, 0)
If donnée2 < donnée1 Then
donnée1.Insert (xlShiftDown)
debtable1.Offset(inc1, 0) = debtable2.Offset(inc1, 0)
Else
donnée2.Insert (xlShiftDown)
debtable2.Offset(inc1, 0) = debtable1.Offset(inc1, 0)
End If

suite:
inc1 = inc1 + 1

Wend
 
Vieux 25/04/2003, 15h40   #3 (permalink)
Jon
Guest
 
Messages: n/a
Par défaut Re: Comparer 2 tables


'pour ceux que cela intéresse, j'ai eu quelques problèmes pour l'insertion, alors j'ai été obligé de manipuler les zones (areas) de l'objet rgTarget. Cela marche mais ce n'est pas trop beau.

cela suppose l'existence de deux plages nommées table1 & table2

Sub d()
Dim i As Integer
Dim cl
Dim rgTarget As Range
Application.ScreenUpdating = False

For Each cl In [table1].Columns(1).Cells
i = i + 1
If cl <> [table2].Columns(1).Cells.Item(i) Then
If Not rgTarget Is Nothing Then
Set rgTarget = Union(rgTarget, [table2].Columns(1).Cells.Item(i).EntireRow)
Else
Set rgTarget = [table2].Columns(1).Cells.Item(i).EntireRow
End If

End If
Next cl
rgTarget.Select
If Not rgTarget Is Nothing Then
For j = 1 To rgTarget.Areas.Count
For Each rw In rgTarget.Areas(j).Rows
x = x & rw.Address & IIf(j < rgTarget.Areas.Count, ",", "")
Next rw
Next j
End If

Range(x).Insert shift:=xlDown
End Sub
 
ANNONCES
 

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 09h50.


(C) 2006 Excel Downloads