OVH Cloud OVH Cloud

Comparaison de données sur plusieurs Colonnes de 2 feuilles?

3 réponses
Avatar
fred
Bonjour,
J'ai des données à comparer sur 2 feuilles
Si Sur feuil4 les cellules A2, B2 et D2 sont retrouvées en feuil5 en ColA, B
et D je voudrais que la chaine de texte Message soit collée en ColE sur la
même ligne trouvée sur cette feuil5.
MichDenis m'a donné la solution qui fonctionne très bien pour une valeur en
A2 sur Feuil4
Sub test()
Dim Rg As Range, Rg1 As Range, C As Range
Set Rg = Worksheets("Feuil4").Range("A2")
With Worksheets("Feuil5")
Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
For Each C In Rg1
If C.Value = Rg.Value Then
C.Offset(, 4) = C.Value
End If
Next
Set Rg = Nothing: Set Rg1 = Nothing: Set C = Nothing
End Sub
Mais comment faire si les données à retrouver concernent A2 B2 et C2
J'ai tenté ceci mais ça ne fonctionne pas...il suffit qu'une cellule Comme
A2 soit vrai pour que ça marche...mais en fait il faut que les 3 cellules
soient vraies!!!
Dim Ra As Range, Ra1 As Range, Cel As Range
Set Ra = Worksheets("Feuil4").Range("A2,C2,D2")
With Worksheets("Feuil5")
Set Ra1 = .Range("A1:D1" & .Range("A65536").End(xlUp).Row)
End With
For Each Cel In Ra1
If Cel.Value = Ra.Value Then
Cel.Offset(, 4) = Position 'C.Value
End If
Next
Set Ra = Nothing: Set Ra1 = Nothing: Set Cel = Nothing

Merci de m'éclairer

3 réponses

Avatar
fred
Bon j'ai cherché et en utilisant comme base la macro de MichDenis j'ai
trouvé ceci ...
Il doit y avoir plus simple...si quelqu'un a une solution...j'suis preneur
;)
Dim ColA As Range, ColB As Range, ColD As Range
Dim ColA4 As Range, ColB4 As Range, ColD4 As Range
Dim position As String
Dim message As String
Dim a As Long, DerLig As Long
With Worksheets("Feuil5")
DerLig = .Range("A:D").Find(What:="*", LookIn:=xlFormulas,
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set ColA = .Range("A2:A" & DerLig)
Set ColB = .Range("B2:B" & DerLig)
Set ColD = .Range("D2:D" & DerLig)
End With
With Worksheets("Feuil4")
premrow = .Range("A:D").Find(What:="*", LookIn:=xlFormulas,
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set ColA4 = .Range("A2")
Set ColB4 = .Range("B2")
Set ColD4 = .Range("D2")
End With
For a = 1 To DerLig
If ColA(a) = ColA4 And ColB(a) = ColB4 And ColD(a) = ColD4 Then
ColA(a).Offset(, 4) = Message
End If
Next

Set ColA = Nothing: Set ColB = Nothing: Set ColD = Nothing
Set ColA4 = Nothing: Set ColB4 = Nothing: Set ColD4 = Nothing

End Sub

"fred" a écrit dans le message de news:
4356aa0c$0$21712$
Bonjour,
J'ai des données à comparer sur 2 feuilles
Si Sur feuil4 les cellules A2, B2 et D2 sont retrouvées en feuil5 en ColA,
B et D je voudrais que la chaine de texte Message soit collée en ColE sur
la même ligne trouvée sur cette feuil5.
MichDenis m'a donné la solution qui fonctionne très bien pour une valeur
en A2 sur Feuil4
Sub test()
Dim Rg As Range, Rg1 As Range, C As Range
Set Rg = Worksheets("Feuil4").Range("A2")
With Worksheets("Feuil5")
Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
For Each C In Rg1
If C.Value = Rg.Value Then
C.Offset(, 4) = C.Value
End If
Next
Set Rg = Nothing: Set Rg1 = Nothing: Set C = Nothing
End Sub
Mais comment faire si les données à retrouver concernent A2 B2 et C2
J'ai tenté ceci mais ça ne fonctionne pas...il suffit qu'une cellule Comme
A2 soit vrai pour que ça marche...mais en fait il faut que les 3 cellules
soient vraies!!!
Dim Ra As Range, Ra1 As Range, Cel As Range
Set Ra = Worksheets("Feuil4").Range("A2,C2,D2")
With Worksheets("Feuil5")
Set Ra1 = .Range("A1:D1" & .Range("A65536").End(xlUp).Row)
End With
For Each Cel In Ra1
If Cel.Value = Ra.Value Then
Cel.Offset(, 4) = Position 'C.Value
End If
Next
Set Ra = Nothing: Set Ra1 = Nothing: Set Cel = Nothing

Merci de m'éclairer



Avatar
michdenis
Bonjour Fred,

As-tu essayé quelque chose comme ceci :

'-----------------------------------------
Sub test()

Dim RgA As Range, RgB As Range, RgC As Range
Dim Rg1 As Range, C As Range

With Worksheets("Feuil4")
Set RgA = .Range("A2")
Set RgB = .Range("B2")
Set RgC = .Range("C2")
End With

With Worksheets("Feuil5")
Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

For Each C In Rg1
If C.Value = Rg.Value And _
C.Offset(, 1) = RgB And _
C.Offset(, 2) = RgC Then
C.Offset(, 4).Value = C.Value
End If
Next

Set RgA = Nothing: Set RgB = Nothing: Set RgC = Nothing:
Set Rg1 = Nothing: Set C = Nothing

End Sub
'-----------------------------------------


Salutations!




"fred" a écrit dans le message de news: 4356aa0c$0$21712$
Bonjour,
J'ai des données à comparer sur 2 feuilles
Si Sur feuil4 les cellules A2, B2 et D2 sont retrouvées en feuil5 en ColA, B
et D je voudrais que la chaine de texte Message soit collée en ColE sur la
même ligne trouvée sur cette feuil5.
MichDenis m'a donné la solution qui fonctionne très bien pour une valeur en
A2 sur Feuil4
Sub test()
Dim Rg As Range, Rg1 As Range, C As Range
Set Rg = Worksheets("Feuil4").Range("A2")
With Worksheets("Feuil5")
Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
For Each C In Rg1
If C.Value = Rg.Value Then
C.Offset(, 4) = C.Value
End If
Next
Set Rg = Nothing: Set Rg1 = Nothing: Set C = Nothing
End Sub
Mais comment faire si les données à retrouver concernent A2 B2 et C2
J'ai tenté ceci mais ça ne fonctionne pas...il suffit qu'une cellule Comme
A2 soit vrai pour que ça marche...mais en fait il faut que les 3 cellules
soient vraies!!!
Dim Ra As Range, Ra1 As Range, Cel As Range
Set Ra = Worksheets("Feuil4").Range("A2,C2,D2")
With Worksheets("Feuil5")
Set Ra1 = .Range("A1:D1" & .Range("A65536").End(xlUp).Row)
End With
For Each Cel In Ra1
If Cel.Value = Ra.Value Then
Cel.Offset(, 4) = Position 'C.Value
End If
Next
Set Ra = Nothing: Set Ra1 = Nothing: Set Cel = Nothing

Merci de m'éclairer
Avatar
fred
Et oui...c'est nettement moins lourd et plus clair!!!!
J'ai corrigé juste cette ligne..j'avais un message d'erreur
For Each C In Rg1
If C.Value = Rg.Value par
If C.Value = RgA.Value

Merci encore!!!

"michdenis" a écrit dans le message de news:

Bonjour Fred,

As-tu essayé quelque chose comme ceci :

'-----------------------------------------
Sub test()

Dim RgA As Range, RgB As Range, RgC As Range
Dim Rg1 As Range, C As Range

With Worksheets("Feuil4")
Set RgA = .Range("A2")
Set RgB = .Range("B2")
Set RgC = .Range("C2")
End With

With Worksheets("Feuil5")
Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

For Each C In Rg1
If C.Value = Rg.Value And _
C.Offset(, 1) = RgB And _
C.Offset(, 2) = RgC Then
C.Offset(, 4).Value = C.Value
End If
Next

Set RgA = Nothing: Set RgB = Nothing: Set RgC = Nothing:
Set Rg1 = Nothing: Set C = Nothing

End Sub
'-----------------------------------------


Salutations!




"fred" a écrit dans le message de news:
4356aa0c$0$21712$
Bonjour,
J'ai des données à comparer sur 2 feuilles
Si Sur feuil4 les cellules A2, B2 et D2 sont retrouvées en feuil5 en ColA,
B
et D je voudrais que la chaine de texte Message soit collée en ColE sur la
même ligne trouvée sur cette feuil5.
MichDenis m'a donné la solution qui fonctionne très bien pour une valeur
en
A2 sur Feuil4
Sub test()
Dim Rg As Range, Rg1 As Range, C As Range
Set Rg = Worksheets("Feuil4").Range("A2")
With Worksheets("Feuil5")
Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
For Each C In Rg1
If C.Value = Rg.Value Then
C.Offset(, 4) = C.Value
End If
Next
Set Rg = Nothing: Set Rg1 = Nothing: Set C = Nothing
End Sub
Mais comment faire si les données à retrouver concernent A2 B2 et C2
J'ai tenté ceci mais ça ne fonctionne pas...il suffit qu'une cellule Comme
A2 soit vrai pour que ça marche...mais en fait il faut que les 3 cellules
soient vraies!!!
Dim Ra As Range, Ra1 As Range, Cel As Range
Set Ra = Worksheets("Feuil4").Range("A2,C2,D2")
With Worksheets("Feuil5")
Set Ra1 = .Range("A1:D1" & .Range("A65536").End(xlUp).Row)
End With
For Each Cel In Ra1
If Cel.Value = Ra.Value Then
Cel.Offset(, 4) = Position 'C.Value
End If
Next
Set Ra = Nothing: Set Ra1 = Nothing: Set Cel = Nothing

Merci de m'éclairer