Macro / Comparaison ligne à ligne
Fermé
popo
-
26 févr. 2014 à 16:34
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 27 févr. 2014 à 13:58
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 27 févr. 2014 à 13:58
A voir également:
- Macro / Comparaison ligne à ligne
- Aller à la ligne excel - Guide
- Partager photos en ligne - Guide
- Vente en ligne particulier - Guide
- Apparaitre hors ligne instagram - Guide
- Gps hors ligne - Guide
2 réponses
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
26 févr. 2014 à 16:42
26 févr. 2014 à 16:42
Bonjour,
Pourquoi ce serait OK sur les lignes 2 à 5 ? B2=B3=B4=B5 mais on n'a pas C2=C3=C4=C5...
En D2 tu peux mettre la formule :
=IF(COUNTIF(B:B;B2)=SUMPRODUCT((B:B=B2)*(C:C=C2));"OK";"NOK")
En français : IF=SI COUNTIF=NB.SI SUMPRODUCT=SOMMEPROD.
A+
Pourquoi ce serait OK sur les lignes 2 à 5 ? B2=B3=B4=B5 mais on n'a pas C2=C3=C4=C5...
En D2 tu peux mettre la formule :
=IF(COUNTIF(B:B;B2)=SUMPRODUCT((B:B=B2)*(C:C=C2));"OK";"NOK")
En français : IF=SI COUNTIF=NB.SI SUMPRODUCT=SOMMEPROD.
A+
Merci Zoul, ça marche très bien, par contre je galère à la passer en VBA le somme product si quelqu'un peut me débloquer :).
Merciii
Merciii
Sub Compare()
Dim i As Integer
Dim col_2 As Range
'Definition plage de cellules en memoire pour vitesse execution
Set col_2 = Worksheets("Extract").Range("B2:B15000")
With ThisWorkbook.Sheets("IP_CF")
For i = 15000 To 2 Step -1
If Application.CountIf(col_2, .Range("B" & i).Value) = Then
.Range("D" & i) = "OK"
Else: .Range("D" & i) = "NOK"
End If
End If
Next i
End With
End Sub
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
27 févr. 2014 à 10:37
27 févr. 2014 à 10:37
Bonjour,
Tu jongles sur 2 onglets ?
A+
Tu jongles sur 2 onglets ?
A+
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
27 févr. 2014 à 13:58
27 févr. 2014 à 13:58
Je ferais ça (mais ça implique que tu aurais des formules sur ta feuille) :
ou
Sub Compare() Application.Calculation = xlManual Dim ligne As Integer While ThisWorkbook.Sheets("Extract").Cells(ligne,2).Value <> "" Cells(ligne,4).FormulaR1C1 = _ "=IF(COUNTIF(C[-2],RC[-2])=SUMPRODUCT((C[-2]=RC[-2])*(C[-1]=RC[-1])),""OK"",""NOK"")" ligne=ligne+1 WEnd Application.Calculation = xlAutomatic End Sub
ou
Sub Compare() Application.Calculation = xlManual Dim ligne As Integer Dim DernLigne As Long DernLigne = Range("B" & Rows.Count).End(xlUp).Row Range("D2").Select ActiveCell.FormulaR1C1 = _ "=IF(COUNTIF(C[-2],RC[-2])=SUMPRODUCT((C[-2]=RC[-2])*(C[-1]=RC[-1])),""OK"",""NOK"")" Selection.AutoFill Destination:=Range("D2:D" & DernLigne), Type:=xlFillDefault Application.Calculation = xlAutomatic End Sub
26 févr. 2014 à 16:45
C2 est bien égale à C3 C4 C5 dans le bon fichier.
Et je souhaite utiliser une macro parce que je rajouterai le code à une macro existante qui traitera tous le fichier
Modifié par Zoul67 le 26/02/2014 à 18:21
27 févr. 2014 à 07:37