Boucle For Each pour doublons
Bonjour à toutes et tous,
Je viens vers vous car j'ai un problème dans le traitement de données avec la boucle For Each.
Je vous explique mon problème, je souhaite que la macro trouve les doublons en colonne B (ça j'ai réussi) mais ne fasse un traitement que lorsque la donnée de la colonne A soit égal à "OK Montant".
Une fois c'est deux conditions remplies, alors la donnée de la colonne A passe en "KO virmt" et le fond en rose.
Voici les codes que j'ai fait actuellement:
- Pour trouver les doublons:
Sub Trouver_Doublon()
Dim Plage As Range
Dim Cel As Range
Set Plage = ThisWorkbook.Sheets("Banque").Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
For Each Cel In Plage
If Application.CountIf(Plage, Cel.Value) > 1 Then
Cel.Interior.Color = RGB(255, 199, 206)
End If
Next Cel
End Sub- Ma condition de la colonne A:
Sub OK_Montant()
Dim x As Long
x = 2
For x = 2 To ThisWorkbook.Sheets("Banque").Cells(Rows.Count, 1).End(xlUp)
If ThisWorkbook.Sheets("Banque").Cells(x, 1).Value = "OK Montant" Then
ThisWorkbook.Sheets("Banque").Cells(x, 1).Interior.Color = RGB(255, 199, 206)
ThisWorkbook.Sheets("Banque").Cells(x, 1).Value = "KO virmt"
End If
Next x
End SubPour faire plus clair, je vous joins des images. Ci-dessous des doublons en colonne B mais seulement la première image m'intéresse car la colonne A contient le "OK Montant", après retraitement je voudrais que les données de la colonne A soient modifiées comme sur la 3ème image.
Je vous joins également le fichier source. En espérant avoir été assez clair dans mes explications. Je vous remercie par avance de l'aide que vous pourrez m'apporter.
Bonne journée
Bonjour,
Il faut donc modifier cette macro:
Sub OK_Montant()
Dim x As Long
With ThisWorkbook.Sheets("Banque")
For x = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(x, 2).Interior.Color = RGB(255, 199, 206) Then
If .Cells(x, 1).Value = "OK Montant" Then
.Cells(x, 1).Interior.Color = RGB(255, 199, 206)
.Cells(x, 1).Value = "KO virmt"
End If
End If
Next x
End With
End SubJe commence par checker si la couleur de la cellule colonne B est rose, si c'est le cas je checke si la cellule colonne A est égale à "OK Montant", et si c'est le cas je change sa couleur de fond, et la valeur à l'intérieur.
Aussi pour la boucle j'ai rajouté .Row à la fin de
Cells(Rows.Count, 1).End(xlUp)Afin que ça utilise le numéro de la dernière ligne remplie colonne A.
J'ai aussi utiliseé With pour éviter de duppliquer le nom de la feuille utilisée.
Bonjour Ausecour,
Tout d'abord merci de t'être penché sur mon sujet et des explications que tu m'apportes sur les modifs apportées sur la macro.
Malheureusement je voudrais que les deux macro que j'ai faite ci-dessous, combinent pour n'en former qu'une seule (si possible) et de ce fait éviter de changer la couleur de toutes les cellules en doublon de la colonne B mais seulement celles en doublon dont le contenu de la colonne A est égal à "OK Montant".
Ainsi le fond bleu ne bougerai pas sur la première image mais il y aurait la modification que sur la seconde image
En espérant que cela soit possible. Et merci encore pour ton aide
Oh d'accord,
je n'avais pas tout à fait compris ce qui était souhaité, oui c'est possible de combiner les deux, voici ce que ça donne:
Sub macroForumExcel()
Dim ligFin As Long, rose As Long, i As Long
With Sheets("Banque")
'initialisations
rose = RGB(255, 199, 206)
ligFin = .Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To ligFin
If .Range("A" & i) = "OK Montant" Then
If Application.CountIf(.Range("B2:B" & ligFin), .Range("B" & i)) > 1 Then
.Range("A" & i, "B" & i).Interior.Color = rose
.Range("A" & i) = "KO virmt"
End If
End If
Next i
End With
End SubAusecour,
Je te remercie énormément pour la macro c'est exactement ce que je voulais.
En effet je n'avais pas été assez clair au début de mes explications mais encore une fois merci beaucoup pour ton aide.
Bonne fin de journée.