XL 2016 Convertir Fonction Excel en VBA

zozo

XLDnaute Occasionnel
Le Bonjour à tous les membres,

Je demande de l'aide pour convertir la fonction Excel suivante en VBA :
=RECHERCHEV(D1;'CHGE-DIRECT'!$A$11:$M$87;13;FAUX)

Cette dernière a pour objectif, de rechercher le code de la cellule en cours dans une autre feuille "CHGE-DIRECT", et récupérer sa valeur.
La même chose pour E1, F1, G1,...

Merci pour tout effort de votre part.
Cordialement.
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour à toutes & à tous, bonjour @zozo
À partir de mon téléphone, donc sans filet !

...
Dim WSh1 as Worksheet, WSh2 as Worksheet, rg as range, C, Valeur_cherchée
Set Wsh1 = ActiveSheet ' ta feuille 1
Set Wsh2 = Worksheets("CHGE-DIRECT")
Set rg= Wsh1.[D1:G1] 'à adapter
For each C in rg
Valeur_cherchée = worksheetfunction.Vlookup(C, Wsh2.[A11:M87], 13, False)
'Faire ce que tu veux avec Valeur_cherchée
Next C
...
À bientôt
 

zozo

XLDnaute Occasionnel
Bonjour à toutes & à tous, bonjour @zozo
À partir de mon téléphone, donc sans filet !

...
Dim WSh1 as Worksheet, WSh2 as Worksheet, rg as range, C, Valeur_cherchée
Set Wsh1 = ActiveSheet ' ta feuille 1
Set Wsh2 = Worksheets("CHGE-DIRECT")
Set rg= Wsh1.[D1:G1] 'à adapter
For each C in rg
Valeur_cherchée = worksheetfunction.Vlookup(C, Wsh2.[A11:M87], 13, False)
'Faire ce que tu veux avec Valeur_cherchée
Next C
...
À bientôt
Merci
Cordialement
 

zozo

XLDnaute Occasionnel
Bonjour à toutes & à tous, bonjour @zozo
À partir de mon téléphone, donc sans filet !

...
Dim WSh1 as Worksheet, WSh2 as Worksheet, rg as range, C, Valeur_cherchée
Set Wsh1 = ActiveSheet ' ta feuille 1
Set Wsh2 = Worksheets("CHGE-DIRECT")
Set rg= Wsh1.[D1:G1] 'à adapter
For each C in rg
Valeur_cherchée = worksheetfunction.Vlookup(C, Wsh2.[A11:M87], 13, False)
'Faire ce que tu veux avec Valeur_cherchée
Next C
...
À bientôt
Merci
Cordialement
 

SAMUAL_2023

XLDnaute Nouveau
Salut je vous l'envoie

'Utilisez le mode explicite pour assurer une meilleur gestion et détection des déclarations de variables:

OptionExplicit

' nommé la feuille 1 via son CodeName: Sh01_RESULTA
', par exemple.
' nommé la feuille 2 via son CodeName: Sh02_DB par
' exemple.

Public Function mfx_varCODETROUVE( _
ByVal fx_oValeurCherchee As Excel.Range, _
ByVal fx_oPlageDeRevherche As Excel.Range, _
ByRef fx_intYCol%, _
Optional ByRef gx_booEtat As Boolean = False) As _
Variant

Dim fx_varValeurCible As Variant ' à adapter.
Dim fx_lngNbrLigne&, fx_lnglndex&

With VBA.Informarion.Err
.Clear
On Error GoTo Flag_ExitFunc

With Sh01_DB
'--- Compter le nombre de ligne de données d'un tableau
'. cible:
Let fx_lngNbrLigne = _
fx_oPlageDeRecherche.Rows.Count

'--- Boucler sur les éléments du tableau cible:
For fx_lngIndex = 1 To fx_lngNbrLigne

'--- Tester l'élément recherché:
If (fx_oPlageDeRecherche.Cells( _
fx_lngIndex, 4).Value = fx_varValeurCible) Then

'--- Retourner la valeur cherchée:
Let mfx_varCODETROUVE = _
fx_oPlageDeRecherche.Cells(fx_lngIndex, _
13).Value
'--- Si vrai: sortir de la boucle:
Exit Function
Else
'--- Si faux: Sortir de la fonction:
Let mfx_varCODETROUVE = _
Empty
On Error GoTo Flag_ExitFunc
End If
Next fx_lngIndex
End With

Exit Function
Flag_ExitFunc

On Error GoTo 0
End With
End Function

' À la bonne entente !
 

zozo

XLDnaute Occasionnel
Salut je vous l'envoie

'Utilisez le mode explicite pour assurer une meilleur gestion et détection des déclarations de variables:

OptionExplicit

' nommé la feuille 1 via son CodeName: Sh01_RESULTA
', par exemple.
' nommé la feuille 2 via son CodeName: Sh02_DB par
' exemple.

Public Function mfx_varCODETROUVE( _
ByVal fx_oValeurCherchee As Excel.Range, _
ByVal fx_oPlageDeRevherche As Excel.Range, _
ByRef fx_intYCol%, _
Optional ByRef gx_booEtat As Boolean = False) As _
Variant

Dim fx_varValeurCible As Variant ' à adapter.
Dim fx_lngNbrLigne&, fx_lnglndex&

With VBA.Informarion.Err
.Clear
On Error GoTo Flag_ExitFunc

With Sh01_DB
'--- Compter le nombre de ligne de données d'un tableau
'. cible:
Let fx_lngNbrLigne = _
fx_oPlageDeRecherche.Rows.Count

'--- Boucler sur les éléments du tableau cible:
For fx_lngIndex = 1 To fx_lngNbrLigne

'--- Tester l'élément recherché:
If (fx_oPlageDeRecherche.Cells( _
fx_lngIndex, 4).Value = fx_varValeurCible) Then

'--- Retourner la valeur cherchée:
Let mfx_varCODETROUVE = _
fx_oPlageDeRecherche.Cells(fx_lngIndex, _
13).Value
'--- Si vrai: sortir de la boucle:
Exit Function
Else
'--- Si faux: Sortir de la fonction:
Let mfx_varCODETROUVE = _
Empty
On Error GoTo Flag_ExitFunc
End If
Next fx_lngIndex
End With

Exit Function
Flag_ExitFunc

On Error GoTo 0
End With
End Function

' À la bonne entente !
Bonjour,
Merci pour la macro.
 

Discussions similaires

  • Question
XL 2016 Macro
Réponses
3
Affichages
458

Statistiques des forums

Discussions
315 095
Messages
2 116 166
Membres
112 675
dernier inscrit
Tazra_IMOU