Recherchev sous VBA avec conditions multiples

Résolu
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011 - 4 déc. 2007 à 15:43
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011 - 6 déc. 2007 à 09:29
Bonjour,

Bon.... vous allez me détester, j'ai encore une merde que j'essaie de résoudre depuis 5 heures.
Ma recherchev ne marche pas.
Le code en question ne met aucun résultat et au bout d'un moment "l'indice n'appartient pas à la sélection" (je zappe cette erreur avec un "on error resume next")

Le coupable :

(...)
Dim NbLignes As Long
Dim j As Long
'--Recherche du type d'OPCVM


    NbLignes = ActiveSheet.UsedRange.Rows.Count
    For j = NbLignes To 1 Step -1
                If Range("c" & j).Value "ACTION" And Range("d" & j).Value "Jule" Then
        Range("n" & j).Value = Application.WorksheetFunction.VLookup(Range("e" & j).Value, Worksheets("valeur").Range("A101:E150"), 3, False)
        End If        If Range("c" & j).Value "INTER" And Range("d" & j).Value "Jule" Then
        Range("n" & j).Value = Application.WorksheetFunction.VLookup(Range("e" & j).Value, Worksheets("valeur").Range("A51:E100"), 3, False)
        End If        If Range("c" & j).Value "EURO" And Range("d" & j).Value "Jule" Then
        Range("n" & j).Value = Application.WorksheetFunction.VLookup(Range("e" & j).Value, Worksheets("valeur").Range("A2:E50"), 3, False)
        End If
        Next j


(...)

Ma première impression, c'est que la valeur à rechercher dans la matrice fait merder le recherchev :
"VLookup(Range("e" & j).Value,(...)"
Probléme, cette valeur varie à chaque ligne (c'est un code pour être précis)
Cette même valeur se trouve dans la matrice dans une autre feuille colonne 1 et VBA doit me renvoyer la valeur de la colonne 3

Enfin, je suis vraiment au bout du rouleau avec mes recherchev de merde, pour une fois que j'étais fier de mon code... il merde.
Je précise que la personne trouvant la solution sera moutement remerciée

Bière qui roule bière qui mousse

6 réponses

idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011
5 déc. 2007 à 11:30
Merci swan94 pour ta réponse !

Bon, je vais être honnète avec toi, ce que j'ai mis sur mon premier post marché mais la je n'obtenais pas de réponse car la base valeur de recherchev n'était sur le même classeur de la macro...
Donc du coup, pas de résultat...
Je suis vraiment désolé de t'avoir fait perdre ton temps

Pour ceux que ça interesse voila la macro et le principe :

Principe :
Faire une recherchev sur critères multiples de recheche
Dans mon cas il y a 2 conditions (qui varient sur chaque ligne) pour faire la rechechev et la rechechev recherche le résultat de la valeur cible (qui varie à chaque ligne) dans la base valeur mais que sur certaines certaines lignes (d'ou le range limité de la recherchev dans la base).
Si la macro ne trouve rien, elle ne m'est rien.
Attention la macro ne met pas de formule dans les cases mais le résultat de la formule.

La macro :

 NbLignes = ActiveSheet.UsedRange.Rows.Count
    For i = NbLignes To 1 Step -1


        If Range("c" & i).Value "PSG" And Range("d" & i).Value "PANCRATE" Then
        Range("k" & i).Value = Application.WorksheetFunction.VLookup(Range("e" & i).Value, Worksheets("valeur").Range("A101:E150"), 3, False)
        End If        If Range("c" & i).Value "MARSEILLE" And Range("d" & i).Value "FIORESE" Then
        Range("k" & i).Value = Application.WorksheetFunction.VLookup(Range("e" & i).Value, Worksheets("valeur").Range("A2:E50"), 3, False)
        End If        If Range("c" & i).Value "LYON" And Range("d" & i).Value "MADAR" Then
        Range("k" & i).Value = Application.WorksheetFunction.VLookup(Range("e" & i).Value, Worksheets("valeur").Range("A51:E100"), 3, False)
        End If
        Next i

Voila en espérant avoir été un peu clair,

Bière qui roule bière qui mousse
3
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
4 déc. 2007 à 20:59
Salut as tu essayé sous cette forme :
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[7],Feuil2!R:R[1048575],1)"

?

bon je suis sous 2007 c'est pour ca qu'il y a de telles valeurs de lignes ;)

mais en reprenant et modifiant a tes besoins ca devrait marcher.

Swan94
===============Si la réponse vous convient, merci de l'accepter=================
0
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
5 déc. 2007 à 12:20
désolé là je ne comprends rien du tout

Swan94
===============Si la réponse vous convient, merci de l'accepter=================
0
hakima1985 Messages postés 2 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 13 mars 2009
5 déc. 2007 à 15:15
salut
je veux devolopper une application avec vb appliquer avec excel;et je veux le programme de recherche multicritères c'est à dire que j'ai des chekboxs à cocher et une fois que je clique sur le boutton de recherche j'obtient les resultats dans une nouvelle feuile excel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011
5 déc. 2007 à 17:44
Bière qui roule bière qui mousse
0
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011
6 déc. 2007 à 09:29
Alors dans le détail, je me suis peut être mal expliqué.
Ce n'est pas une recherche multicritères (qu'est ce que c'est ??) mais multiconditions.
C'est à dire que si plusieurs conditions, présentes sur une même ligne, sont remplies, alors la recherchev s'effectue.

(bon, on est sur le forum débutant, alors désolé pour l'erreur)

Le code là haut est bon mais ne gère pas les erreurs de recherchev :
Si les deux conditions pour effectuer la recherche sont remplies et que la recherche ne donne pas de résultat (c'est à dire que la base valeur ne renvoit rien), la macro plante ! "erreur propriété blablabla"
Pour éviter cela, en début de procédure, faut mettre :
On Error Resume Next

Comme ça la macro mouline jusqu'au bout et renvoie les données qu'elle trouve


En espèrant avoir été plus clair
0
Rejoignez-nous