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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
Sub Test()
Dim Plage As Range
Dim MonDossier As String
Dim Classeur As String
Dim Feuille As String
Dim ValCherchee
Dim Valeur
Dim IndexColonne As Integer
Dim Exact As Boolean
MonDossier = "D:\Mon Dossier\" 'adapter le chemin
Classeur = "Bdd.xlsx"
Feuille = "Feuil1"
Set Plage = Range("A3:M5000") 'ici, jusqu'à M pour Index 10 (colonne J)
ValCherchee = Range("B5").Value 'en B5 de la feuille active
IndexColonne = 10 'colonne J
Exact = False 'false pour correspondance exacte
'appel de la fonction
Valeur = RECHERCHE_VERT(MonDossier, _
Classeur, _
Feuille, _
ValCherchee, _
Plage, _
IndexColonne, _
Exact)
'si pas de correspondance (l'erreur à été gérée dans la fonction) donc, message et fin !
If Valeur = "Aucune valeur correspondante à '" & ValCherchee & "' !" Then
MsgBox Valeur
Exit Sub
Else
'adapter le nom du contrôle appelant !!!
Select Case Application.Caller
Case "Bouton 1"
'si c'est le bouton 1 et que la valeur retournée est égale à 1, la case est cochée sinon, décochée
With ActiveSheet.Shapes("Case à cocher 1").ControlFormat
If Valeur = 1 Then .Value = 1 Else .Value = 0
End With
Case "Bouton 2"
'si c'est le bouton 2 et que la valeur retournée est <> "", la case est cochée sinon, décochée
With ActiveSheet.Shapes("Case à cocher 2").ControlFormat
If Valeur <> "" Then .Value = 1 Else .Value = 0
End With
End Select
End If
End Sub
Public Function RECHERCHE_VERT(Chemin As String, _
Classeur As String, _
Feuille As String, _
ValRecherchee As Variant, _
Plage As Range, _
ColonneIndex As Integer, _
ValExacte As Boolean)
Dim Valeur
Dim Exact As String
Select Case ValExacte: Case False: Exact = "FALSE": Case Else: Exact = "TRUE": End Select
Valeur = ExecuteExcel4Macro("VLOOKUP(""" & ValRecherchee & _
""",'" & Chemin & _
"[" & Classeur & _
"]" & Feuille & _
"'!" & Plage.Address(1, 1, xlR1C1) & _
"," & ColonneIndex & _
"," & Exact & ")")
If IsError(Valeur) Then
RECHERCHE_VERT = "Aucune valeur correspondante à '" & ValRecherchee & "' !"
Else
RECHERCHE_VERT = Valeur
End If
End Function |
Partager