Bonjour le forum
Je cherche à effectuer un test sous deux conditions nécessaires, et à copier la valeur si ces conditions sont vérifiées.
Ceci fonctionne :
Mon problème, c'est que l'une des deux conditions, même si elle est nécessaire, est trop restrictive sur son test de valeur.
Il s'agit plus précisément de celle-ci :
En pratique, j'aimerai que le "=" devienne un "sensiblement égal" avec 2% de marge globale (1% en moins, 1% en plus)
Par exemple, si j'ai :
E25 = 99,5
E26 = 100
J'aimerais que ma condition E25=E26 soit remplie quand même.
J'ai tenté avec des arrondis pour traiter les données dans les deux sens (avec un "ROUNDUP" et un "ROUNDDOWN" à chaque fois testé en condition suffisante), mais ça n'est pas convenable. Je n'arrive pas à gérer le pourcentage.
Quelqu'un aurait-il une idée ? Une piste ?
Je vous remercie par avance.
Amicalement,
Damien
PS: J'ai estimé que le code présenté était suffisamment clair pour ne pas joindre un fichier Excel, les données y étant totalement confidentielles. Si jamais il est nécessaire de le joindre, n'hésitez pas à me le faire savoir et je le retravaillerai avec grand plaisir (mais ça demande vraiment beaucoup de temps).
Je cherche à effectuer un test sous deux conditions nécessaires, et à copier la valeur si ces conditions sont vérifiées.
Ceci fonctionne :
Code:
Sub correlation_pnl_nom()
Dim L As Long
Dim i, j As Integer
i = j = 2
derlig = Worksheets("Feuilcalcul").Range("D" & Cells.Rows.Count).End(xlUp).Row
derligb = Worksheets("Conso").Range("A" & Cells.Rows.Count).End(xlUp).Row
For i = 2 To derlig
For j = 2 To derligb
If Worksheets("Source").Range("I" & j).Value = Worksheets("Feuilcalcul").Range("D" & i).Value And Worksheets("Conso").Range("E" & j).Value = Worksheets("Feuilcalcul").Range("C" & i).Value Then
Worksheets("Conso").Range("N" & j).Value = Worksheets("Feuilcalcul").Range("E" & i).Value
Worksheets("Conso").Range("O" & j).Value = Worksheets("Feuilcalcul").Range("F" & i).Value
Worksheets("Conso").Range("P" & j).Value = Worksheets("Feuilcalcul").Range("G" & i).Value
Worksheets("Conso").Range("Q" & j).Value = Worksheets("Feuilcalcul").Range("H" & i).Value
Worksheets("Conso").Range("R" & j).Value = Worksheets("Feuilcalcul").Range("I" & i).Value
Worksheets("Conso").Range("S" & j).Value = Worksheets("Feuilcalcul").Range("J" & i).Value
Worksheets("Conso").Range("U" & j).Value = Worksheets("Feuilcalcul").Range("K" & i).Value
End If
Next j
Next i
End Sub
Mon problème, c'est que l'une des deux conditions, même si elle est nécessaire, est trop restrictive sur son test de valeur.
Code:
If Worksheets("Source").Range("I" & j).Value = Worksheets("Feuilcalcul").Range("D" & i).Value And Worksheets("Conso").Range("E" & j).Value = Worksheets("Feuilcalcul").Range("C" & i).Value Then
Il s'agit plus précisément de celle-ci :
Code:
Worksheets("Conso").Range("E" & j).Value = Worksheets("Feuilcalcul").Range("C" & i).Value
En pratique, j'aimerai que le "=" devienne un "sensiblement égal" avec 2% de marge globale (1% en moins, 1% en plus)
Par exemple, si j'ai :
E25 = 99,5
E26 = 100
J'aimerais que ma condition E25=E26 soit remplie quand même.
J'ai tenté avec des arrondis pour traiter les données dans les deux sens (avec un "ROUNDUP" et un "ROUNDDOWN" à chaque fois testé en condition suffisante), mais ça n'est pas convenable. Je n'arrive pas à gérer le pourcentage.
Quelqu'un aurait-il une idée ? Une piste ?
Je vous remercie par avance.
Amicalement,
Damien
PS: J'ai estimé que le code présenté était suffisamment clair pour ne pas joindre un fichier Excel, les données y étant totalement confidentielles. Si jamais il est nécessaire de le joindre, n'hésitez pas à me le faire savoir et je le retravaillerai avec grand plaisir (mais ça demande vraiment beaucoup de temps).