Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2011, 20h14   #1
 
Inscription : juillet 2009
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 3
Points : -3
Points : -3
Par défaut vlookup sur 2 champs

Bjr les experts,
Je cherche le code VBA qui me permet de faire un vlookup sur 2 champs. Dans mon exemple ci-joint je voudrais ramener dans mon onglet « Recap » le matériel correspondant qui se trouve dans l’onglet « Mat ». Il faudrait que le numéro du document et le numéro de la ligne soient identiques dans « Recap » et « Mat » pour ramener le « matériel » dans la colonne C de « Recap ».
Merci d’avance de votre aide.
Fichiers attachés
Type de fichier : xls Exemple.xls (27,0 Ko, 5 affichages)
BD_NXO est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/12/2011, 21h24   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir

Ci-joint une proposition d'une fonction personnalisée à mettre dans un module standard
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
'Crit1: premier critère (colonne Docuement)
'Crit2: deuxième critère (colonne Ligne)
'Plage: Colonne de recherche du premier critère (dans ton exemple colonne A de la feuille Mat
 
Public Function RechMulti(ByVal Crit1 As String, ByVal Crit2 As String, ByVal Plage As Range) As String
Dim Prem As String, Res As String
Dim Trouve As Boolean
Dim c As Range
 
With Plage
    Set c = .Find(Crit1, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        Prem = c.Address
        Do
            If c.Offset(0, 1) = Crit2 Then
                Res = c.Offset(0, 2)
                Trouve = True
            End If
            Set c = .FindNext(c)
            If Trouve Or c Is Nothing Then Exit Do
        Loop While c.Address <> Prem
    End If
End With
RechMulti = Res
End Function
La fonction peut être appelée directement dans la feuille Recap comme ceci en C2:
Code :
=RechMulti(A2;B2;Mat!$A$2:$A$5)
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2011, 14h01   #3
 
Inscription : juillet 2009
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 3
Points : -3
Points : -3
Merci Mercatoq! j'ai ajouté le code dans un module, mais quand j'insert la fonction =RechMulti(A2;B2;Mat!$A$2:$A$5) dans la cellule C2, j’obtiens un #VALUE!
Comment je peux le résoudre ? Merci d’avance !
BD_NXO est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/12/2011, 14h11   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Sur ton fichier mis en PJ dans ton post initial, j'avais testé sans problème.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2011, 14h25   #5
 
Inscription : juillet 2009
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 3
Points : -3
Points : -3
J'ai insérais un module et fais un copier /coller du code. Est-ce qu’il y’avait autre chose à faire au préalable ? J’ai ensuite copié la formule dans la cellule C2
BD_NXO est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/12/2011, 14h51   #6
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Il faudrait adapter la formule que tu as copié en C2 par rapport à ton fichier!
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h00.


 
 
 
 
Partenaires

Hébergement Web