Fonction Excel ou macro?

Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022 - 10 juil. 2019 à 14:55
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 17 juil. 2019 à 11:33
Bonjour,

J'ai un classeur excel avec plusieurs feuilles. Seule la première est utilisée par l'utilisateur.
Dans la cellule K4 je souhaiterais mettre une fonction type RechercheV ou Sommeprod qui donnerait le résultat tel que pour toutes les cellules remplies dans ma feuille2( 4400 lignes)
si feuil1.B4 = feuil2.A ET feuil2.H < feuil1.C4 < feuil2.I
alors ma fonction retournerait la valeur de la cellule feuil2.G correspondant à ces conditions.
J'ai tenté de créer une fonction mais elle n'est pas fiable à 100%, dans certains cas que je n'arrive pas à identifier le programme rentre dans ma seconde boucle if même si les conditions ne semblent pas réunies!!

Dim PRd, PRf, PRdtest, PRftest As Variant
Dim RDtest, RD As Integer

PRd = Cell1.Value
PRf = Cell2.Value

RD = Sheets("fiche recensement").Range("B4").Value


For i = 2 To 4424
PRdtest = Sheets("RD_par_Communes").Range("H" & i).Value
PRftest = Sheets("RD_par_Communes").Range("I" & i).Value
RDtest = Sheets("RD_par_Communes").Range("F" & i).Value
If RD = RDtest Then
'MsgBox RDtest
If PRd <= PRftest And PRd >= PRdtest Then 'PRd > PRdtest And PRd < PRftest Then

COMMUNE1 = Sheets("RD_par_Communes").Range("G" & i).Value


End If
End If

Next



End Function


Si quelqu'un peut me lancer sur une piste???

Merci d'avance



--

4 réponses

Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
10 juil. 2019 à 16:33
Petite précision.
En faisant du pas à pas je m'aperçois que le programme fonctionne pour les valeurs de 0.0000 à 9.9999. Au-delà le test reste négatif sur la 2nde boucle If!!!!!!
Je crois que j'ai besoin de vacances!!

--
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
11 juil. 2019 à 08:44
Je ne sais pas si ça peut venir de là mais je vous le précise quand même:
Mes valeurs Cell1 et Cell2 sont le résultats de la concatenation de 2 cellules au format texte en 1 cellule au format nombre avec 4 chiffres après la virgule
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
11 juil. 2019 à 10:48
Bonjour
1) Pourquoi mettre un type Variant alors que les valeurs sont des nombres décimaux avec 4 chiffres après la virgule . Le type Single serait plus approprié .
2) Dans ton dernier message tu parles d'une seconde boucle ! Moi je n'en vois qu"une
3) Quand à la concaténation des 2 cellules au format texte pour former le nombre à 4 chiffres après la virgule je ne vois pas le souci . La solution donnée par Whismeril est correcte
4) Dans le texte d'explication tu mets des signes < alors que dans le code tu mets des signes <= . Cela aurait-il une incidence ?
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
16 juil. 2019 à 13:23
Je ne comprends pas ce qu'il se passe, j'ai tenté plusieurs format de données et je ne comprends pas pourquoi cela ne fonctionne pas à 100%.
Est-il possible de joindre mon tableau? Peut-être que quelqu'un voudra bien y jeter un coup d'oeil?


--
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
17 juil. 2019 à 11:33
Bonjour
tu écris : En faisant du pas à pas je m'aperçois que le programme fonctionne pour les valeurs de 0.0000 à 9.9999. Au-delà le test reste négatif sur la 2nde boucle If!!!!!!

1) Pour les valeurs 0.0000 à 9.9999 de quelle variable ?
2) Lorsque tu passes à 10.0000 tu dis que cela ne fonctionne plus ( le test reste négatif ) . Quelles sont les valeurs de PRdtest, PRftest, PRd lorsque tu passes à 10.0000
3) A quoi sert PRf dans ton code ? Il vaut Cell2.Value mais tu ne t'en sers pas ensuite
0
Rejoignez-nous