Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[VBA] Condition nécessaire assouplie

plombiero

XLDnaute Nouveau
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 :

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).
 

tototiti2008

XLDnaute Barbatruc
Re : [VBA] Condition nécessaire assouplie

Bonjour plombiero,

bon, je n'ai pas lu le code mais pour faire :
E25 sensiblement = E26 (à 2% près)
en fait il faut que :
Abs(E25-E26)<=2%*E26

en espérant que ça puisse t'aider
 

plombiero

XLDnaute Nouveau
Re : [VBA] Condition nécessaire assouplie

Ah bin je crois que tu m'as donné la solution là (je me demande même pourquoi je n'y ai pas pensé...).

Ca serait même plutôt :

Abs(E25-E26)<=1%*E26

Merci beaucoup tototiti2008

Damien
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…