Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comparer 2 feuilles

2 réponses
Avatar
Pierre
Bonjour,

J'ai deux feuilles (1 et 2). Je compare les 2 feuilles au=20
niveau du champ "Nom". Si un nom existe dans la FEUILLE1=20
et dans la FEUILE2, mettre "PAYE" dans le=20
champ "Situation" de la FEUILLE2; en m=EAme temps ajouter la=20
valeur du champ "annee" correspondante. Les etapes dans=20
les tableaux suivants:=20

FEUILLE1:=20

Nom annee =20
Pierre 1992
Paul 1995


FEUILLE2 (Avant la macro)=20
Nom
Pierre =20
Paul =20
Eric =20
Jean

FEUILLE2 (Apres ex=E9cusion de la macro)

Nom Situation Annee
Pierre PAYE 1992 =20
Paul PAYE 1995=20
Eric =20
Jean

2 réponses

Avatar
Jean-François Aubert
Salut Pierre,
j'ai supposé les noms en A2:Ax,
les "PAYE" en col B,
les années en col B de feuil1,
et les années en col C de feuil2


Sub yy()
Dim plg1 As Range, plg2 As Range, c As Range
Dim x As Variant

Sheets("feuil1").Select
Set plg1 = Sheets("feuil1"). _
Range("A2:A" & Range("A65536").End(xlUp).Row)
Sheets("feuil2").Select
Set plg2 = Sheets("feuil2"). _
Range("A2:A" & Range("A65536").End(xlUp).Row)
For Each c In plg2
x = Application.Match(c.Value, plg1, 0)
If IsError(x) = False Then
With Sheets("feuil2")
.Range(c.Address).Offset(0, 1) = "PAYE"
.Range(c.Address).Offset(0, 2) = plg1(x).Offset(0, 1).Value
End With
End If
Next
Set plg1 = Nothing: Set plg2 = Nothing
End Sub


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Pierre" a écrit dans le message de
news:009501c361b9$3d87f470$
Bonjour,

J'ai deux feuilles (1 et 2). Je compare les 2 feuilles au
niveau du champ "Nom". Si un nom existe dans la FEUILLE1
et dans la FEUILE2, mettre "PAYE" dans le
champ "Situation" de la FEUILLE2; en même temps ajouter la
valeur du champ "annee" correspondante. Les etapes dans
les tableaux suivants:

FEUILLE1:

Nom annee
Pierre 1992
Paul 1995


FEUILLE2 (Avant la macro)
Nom
Pierre
Paul
Eric
Jean

FEUILLE2 (Apres exécusion de la macro)

Nom Situation Annee
Pierre PAYE 1992
Paul PAYE 1995
Eric
Jean
Avatar
AV
Variation...

Sub zzz()
x = "Feuil1!" & Range("Feuil1!A2:A" & [Feuil1!A65536].End(3).Row).Address
y = "Feuil1!" & Range("Feuil1!B2:B" & [Feuil1!B65536].End(3).Row).Address
z = "Feuil2!" & Range("Feuil2!A2:A" & [Feuil2!A65536].End(3).Row).Address
Sheets("Feuil2").Select
For Each c In Range(z)
If Evaluate("isnumber(match(" & c.Address & "," & x & ",0))") Then
c.Item(1, 2).Value = "PAYE"
c.Item(1, 3).Value = Evaluate("index(" & y & ",match(" & c.Address &
"," & x & ",0))")
End If
Next
End Sub

PS : on pourrait alléger si les plages de référence étaient définies
dynamiquement...
AV

"Pierre" a écrit dans le message news:
009501c361b9$3d87f470$
Bonjour,

J'ai deux feuilles (1 et 2). Je compare les 2 feuilles au
niveau du champ "Nom". Si un nom existe dans la FEUILLE1
et dans la FEUILE2, mettre "PAYE" dans le
champ "Situation" de la FEUILLE2; en même temps ajouter la
valeur du champ "annee" correspondante. Les etapes dans
les tableaux suivants:

FEUILLE1:

Nom annee
Pierre 1992
Paul 1995


FEUILLE2 (Avant la macro)
Nom
Pierre
Paul
Eric
Jean

FEUILLE2 (Apres exécusion de la macro)

Nom Situation Annee
Pierre PAYE 1992
Paul PAYE 1995
Eric
Jean