Macro / Comparaison ligne à ligne
popo
-
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens solliciter votre aide, je cherche à faire une macro (15000 lignes au moins de fichier) pour venir tester que pour les mêmes valeurs de cellule B , la valeur en C corresponde. Dans mon exemple ligne 2 à 5 c'est bon et ligne 6 à 10 c'est pas bon.
Je souhaiterais un Ok Nok en colonne D. J'espère être claire
Voici un exemple dessous
http://cjoint.com/?0BAqDNSmt2P
Merci d'avance,
Je viens solliciter votre aide, je cherche à faire une macro (15000 lignes au moins de fichier) pour venir tester que pour les mêmes valeurs de cellule B , la valeur en C corresponde. Dans mon exemple ligne 2 à 5 c'est bon et ligne 6 à 10 c'est pas bon.
Je souhaiterais un Ok Nok en colonne D. J'espère être claire
Voici un exemple dessous
http://cjoint.com/?0BAqDNSmt2P
Merci d'avance,
A voir également:
- Macro / Comparaison ligne à ligne
- Partager photos en ligne - Guide
- Aller à la ligne excel - Guide
- Mètre en ligne - Guide
- Apparaitre hors ligne instagram - Guide
- Formulaire en ligne de meta - Guide
2 réponses
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
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
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