Fonction Excel ou macro?

Messages postés
125
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
16 juillet 2019
- - Dernière réponse : vb95
Messages postés
1962
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 novembre 2019
- 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



--
Afficher la suite 

4 réponses

Messages postés
125
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
16 juillet 2019
0
Merci
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!!

--
Lameche15
Messages postés
125
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
16 juillet 2019
-
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
Commenter la réponse de Lameche15
Messages postés
1962
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 novembre 2019
74
0
Merci
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 ?
Commenter la réponse de vb95
Messages postés
125
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
16 juillet 2019
0
Merci
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?


--
Commenter la réponse de Lameche15
Messages postés
1962
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 novembre 2019
74
0
Merci
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
Commenter la réponse de vb95