Boucle sur une recherche à 2 critères
Résolu/Fermé
grutz
Whismeril
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
Whismeril
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
A voir également:
- Boucle sur une recherche à 2 critères
- Recherche V - 2 Critères (date et nom) ✓ - Forum - Excel
- Recherche avec 2 critères ✓ - Forum - Excel
- Recherche suivants deux critères ✓ - Forum - Excel
- Recherche à deux critères sur excel ✓ - Forum - Excel
- Recherche excel 2 critères ( encore et toujours...) ✓ - Forum - Excel
11 réponses
Whismeril
2 mars 2021 à 19:05
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
2 mars 2021 à 19:05
Essaye ça
Avec

Function RechercheGrutz(Plage As Range, Critere1 As String, Critere2 As String) As Date Dim tableau As Variant tableau = Plage.Value Dim b, c, d As Integer b = LBound(tableau, 2) 'dimension de la première colonne E dans le tableau c = b + 1 'dimension de la deuxième colonne d = UBound(tableau, 2) 'dimension de la troisième colonne For i = LBound(tableau, 1) To UBound(tableau, 1) 'i du début à la fin du tableau If tableau(i, b) = Critere1 Then 'si dans le tableau en colonne 1 = critère 1 'si on trouve le critère 1 dans la colonne 1, on regarde la valeur de la même ligne en colone 2 If tableau(i, c) = Critere2 Then 'si dans le tableau en colonne 2 = critère 2 'on retourne la valeur de la troisième colonne RechercheGrutz = tableau(i, d) Exit Function End If End If Next End Function
Avec
=RechercheGrutz($D$2:$F$7;A2;B2)dans C2 et
=RechercheGrutz($D$2:$F$7;A3;B3)dans C3

Whismeril
25 févr. 2021 à 16:38
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
25 févr. 2021 à 16:38
Bonjour
T’aider oui, à condition de ne pas paraître agaçant et impatient en postant ta question toutes les 3 minutes
https://forums.commentcamarche.net/forum/affich-37109514-boucle-sur-une-recherche-a-2-criteres
T’aider oui, à condition de ne pas paraître agaçant et impatient en postant ta question toutes les 3 minutes
https://forums.commentcamarche.net/forum/affich-37109514-boucle-sur-une-recherche-a-2-criteres
grutz
Modifié le 25 févr. 2021 à 16:41
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
Modifié le 25 févr. 2021 à 16:41
Oui je viens de voir que ça l'avait mis 3 fois alors que les deux premières il y a eu une erreur ... je viens de m'en apercevoir et j'ai pas trouvé ou supprimer les demandes
yg_be
25 févr. 2021 à 16:47
- Messages postés
- 20050
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 17 août 2022
25 févr. 2021 à 16:47
tu n'as pas trouvé non plus comment y ajouter un commentaire pour expliquer la situation?
grutz
25 févr. 2021 à 16:52
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
- Messages postés
- 20050
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 17 août 2022
25 févr. 2021 à 16:52
Je ne suis pas un habitué du forum... je cherchais en vain un bouton "supprimer"
yg_be
25 févr. 2021 à 16:45
- Messages postés
- 20050
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 17 août 2022
25 févr. 2021 à 16:45
bonjour,
cela me fait plutôt penser à une boucle imbriquée dans une autre.
bien que tu ne mentionnes qu'une seule fois "valeur suivante"
cela me fait plutôt penser à une boucle imbriquée dans une autre.
bien que tu ne mentionnes qu'une seule fois "valeur suivante"
yg_be
25 févr. 2021 à 16:50
- Messages postés
- 20050
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 17 août 2022
25 févr. 2021 à 16:50
il serait préférable de t'expliquer en français.
grutz
Modifié le 25 févr. 2021 à 16:56
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
Modifié le 25 févr. 2021 à 16:56
Bonjour,
Il est possible qu'il y est plus de 6 fois la même valeur "AM1" en plage B:B sur le fichier mais toutes à des dates différentes "02 2021"; "06 2021" ....
donc valeurs suivante jusqu'a ce qu'il est epuisé toute les valeurs "AM1"
merci,
Il est possible qu'il y est plus de 6 fois la même valeur "AM1" en plage B:B sur le fichier mais toutes à des dates différentes "02 2021"; "06 2021" ....
donc valeurs suivante jusqu'a ce qu'il est epuisé toute les valeurs "AM1"
merci,
yg_be
25 févr. 2021 à 16:57
- Messages postés
- 20050
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 17 août 2022
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
25 févr. 2021 à 16:57
montre déjà ton code avec une boucle.
tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Whismeril
25 févr. 2021 à 16:45
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
25 févr. 2021 à 16:45
Un modérateur viendra s’en charger
Whismeril
25 févr. 2021 à 17:44
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
25 févr. 2021 à 17:44
En utilisant un tableau (voir un tuto ici si tu ne connais pas https://silkyroad.developpez.com/vba/tableaux/ )
Soit la feuille suivante

Dans un module la fonction suivante
Et dans la cellule E2 la formule
Soit la feuille suivante

Dans un module la fonction suivante
Function RechercheGrutz(Critere1 As String, Critere2 As String) As Boolean Dim tableau As Variant tableau = Range("B1:C21").Value Dim b, c As Integer b = LBound(tableau, 2) 'dimension de la colonne B dans le tableau c = UBound(tableau, 2) 'dimension de la colonne C For i = LBound(tableau, 1) To UBound(tableau, 1) If tableau(i, b) = Critere1 Then 'si on trouve le critère 1 dans la colonne b, on regarde la valeur de la même ligne en c If tableau(i, c) = Critere2 Then RechercheGrutz = True Exit Function End If End If Next End Function
Et dans la cellule E2 la formule
=RechercheGrutz(A1;A2)
grutz
26 févr. 2021 à 10:29
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
26 févr. 2021 à 10:29
Bonjour,
merci beaucoup pour cette réponse, J'ai compris la macro+ formule, elle dit vrai en E2 si elle trouve l'association des deux (A1 et A2)
C'est une première piste pour moi, mais encore assez loin de ce que je souhaitais faire.
je joins un imp ecran pour que cela soit plus complet :

Encore merci :)
merci beaucoup pour cette réponse, J'ai compris la macro+ formule, elle dit vrai en E2 si elle trouve l'association des deux (A1 et A2)
C'est une première piste pour moi, mais encore assez loin de ce que je souhaitais faire.
je joins un imp ecran pour que cela soit plus complet :

Encore merci :)
yg_be
26 févr. 2021 à 11:51
- Messages postés
- 20050
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 17 août 2022
26 févr. 2021 à 11:51
il suffit alors de programmer deux boucles imbriquées,
une qui parcourt les colonnes A-B, l'autre qui parcourt les colonnes E-F.
je pense, par ailleurs, que c'est facilement réalisable sans programmation, en ajoutant deux colonnes, une qui combine A et B, l'autre qui combine E et F, et en utilisant les fonctions classiques de Excel.
une qui parcourt les colonnes A-B, l'autre qui parcourt les colonnes E-F.
je pense, par ailleurs, que c'est facilement réalisable sans programmation, en ajoutant deux colonnes, une qui combine A et B, l'autre qui combine E et F, et en utilisant les fonctions classiques de Excel.
Whismeril
26 févr. 2021 à 17:46
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
26 févr. 2021 à 17:46
Tu veux que ça renvoies la valeur de la colonne G, c'est ça?
grutz
Modifié le 1 mars 2021 à 08:58
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
Modifié le 1 mars 2021 à 08:58
Oui exactement :) . Comme un recherche V ou un equiv index sauf que ces deux formules renvoient à la première valeur trouvée alors que dans mon tableau les valeurs en "E" peuvent revenir plusieurs fois.
Whismeril
1 mars 2021 à 12:15
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
1 mars 2021 à 12:15
Dans la macro que je t’ai proposé, au lieu de mettre 2 colonnes dans le tableau, tu en mets 3 et à la place de renvoyer True, tu prends la valeur de la 3ème dimension de la ligne
grutz
Modifié le 2 mars 2021 à 14:36
- Messages postés
- 18
- Date d'inscription
- mercredi 3 février 2016
- Statut
- Membre
- Dernière intervention
- 3 mars 2021
Modifié le 2 mars 2021 à 14:36
Merci,
C'est ce que j'avais essayé de faire :
Mais cela ne renvoie pas la colonne G...
C'est ce que j'avais essayé de faire :
Function RechercheGrutz(Critere1 As String, Critere2 As String, Critere3 As String) As Boolean Dim tableau As Variant tableau = Range("E2:G21").Value Dim b, c, d As Integer b = LBound(tableau, 2) 'dimension de la colonne E dans le tableau (1) c = UBound(tableau, 2) - 1 'dimension de la colonne F (2) d = UBound(tableau, 2) 'dimension de la colonne G (3) For i = LBound(tableau, 1) To UBound(tableau, 1) 'i = de 1 à 20 If tableau(i, b) = Critere1 Then 'si dans le tableau de 1 à 20 en colonne 1 = critère 1 'si on trouve le critère 1 dans la colonne e, on regarde la valeur de la même ligne en f If tableau(i, c) = Critere2 Then 'si dans le tableau de 1 à 20 en colonne 2 = critère 2 'si on trouve le critère 2 dans la colonne f, on regarde la valeur de la même ligne en g If tableau(i, d) = Critere3 Then 'si dans le tableau de 1 à 20 en colonne 3 = critère 3 RechercheGrutz = Critere3 Exit Function End If End If Next End Function
Mais cela ne renvoie pas la colonne G...
Whismeril
Modifié le 2 mars 2021 à 18:45
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
Modifié le 2 mars 2021 à 18:45
Je ne comprends pas ce que vient faire le 3eme critère en paramètre.
Pour moi c'est la valeur que tu veux découvrir, si tu l'imposes en entrée, c'est que tu la connais déjà donc ta recherche ne sert à rien.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Pour moi c'est la valeur que tu veux découvrir, si tu l'imposes en entrée, c'est que tu la connais déjà donc ta recherche ne sert à rien.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Whismeril
3 mars 2021 à 11:22
- Messages postés
- 17686
- Date d'inscription
- mardi 11 mars 2003
- Statut
- Modérateur
- Dernière intervention
- 17 août 2022
3 mars 2021 à 11:22
De rien
3 mars 2021 à 10:45