Fonction personnalisée, Vlookup et VBA

Bruno87

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau sur ce forum, mais j'en suis un grand adepte. Plusieurs fois j'ai trouvé des solutions à mes différents problèmes sur ce forum, mais malheureusement, le dernier me donne du fil à retordre. J'ai beaucoup cherché sur le forum, mais rien à faire, je ne trouve pas la solution.

Voici mon souci:
Je suis en train de créer un logiciel de calepinage. Il ne me reste qu'une dernière étape, mais je coince totalement
J'ai écrit une fonction personnalisée à l'aide d'une macro, et bien entendu, j'ai une erreur.
Voici le code:

Code:
Function Entree(test, E1, D1) As String

Dim E_1 As String
Dim D_1 As String

If test <> "" Then
    If E1 = True Then
    E_1 = 90 & "° / D"
    D_1 = Application.VLookup(E1, Worksheets("Calcul de regard").Range("K3:012"), 5)    'Ici ça coince!'
    
    Else
    E_1 = ""
    D_1 = ""
    End If
      
  
Entree = E_1 & D_1
Else
Entree = ""

End If


End Function

Je sais que c'est la ligne avec le commentaire qui coince, car j'ai testé le reste, tout fonctionne. La fonction me donne #VALEUR

Merci!
 

Hulk

XLDnaute Barbatruc
Re : Fonction personnalisée, Vlookup et VBA

Salut Bruno et bienvenue,

Par formule, la fonction RECHERCHEV, si la valeur recherchée n'est pas dans la plage il y a erreur...

En vba c'est pareil... Peut-être que c'est ça...

Essaie juste de placer un On Error Resume Next au début de la procédure.

Si non faudrait déposer ton fichier.
 

Bruno87

XLDnaute Nouveau
Re : Fonction personnalisée, Vlookup et VBA

Merci hulk de ta réponse,

En plaçant au début de la procédure On Error Resume Next , la cellule me renvoie 90° / D sans me donner la valeur qui devait être recherchée. J'ai bien regardé et la valeurs recherchées est bien présente dans le tableau...

Code:
Function Entree(test, E1, D1) As String

Dim E_1 As String
Dim D_1 As String

If test <> "" Then
    If E1 = True Then
    E_1 = 90 & "° / D"
    D_1 = Application.VLookup(D1, Worksheets("Calcul de regard").Range("K3:012"), 5)    'Ici ça coince!'
    
    Else
    E_1 = ""
    D_1 = ""
    End If
      
  
Entree = E_1 & D_1
Else
Entree = ""

End If


End Function
 

Modeste geedee

XLDnaute Barbatruc
Re : Fonction personnalisée, Vlookup et VBA

Bonsour®
Code:
Function Entree(test, E1, D1) As String

Dim E_1 As String
Dim D_1 As String

If test <> "" Then
    If E1 = True Then
    E_1 = 90 & "° / D"
    D_1 = Application.VLookup(E1, Worksheets("Calcul de regard").Range("K3:012"), 5)    'Ici ça coince!'
    
    Else
    E_1 = ""
    D_1 = ""
    End If
      
  
Entree = E_1 & D_1
Else
Entree = ""

End If


End Function

Je sais que c'est la ligne avec le commentaire qui coince, car j'ai testé le reste, tout fonctionne. La fonction me donne #VALEUR

Merci!

les parametres de la fonction ne sont pas typés
ne pas utiliser de nom de variable ressemblant a des réferences EXCEL (adresse, mot clés)

If E1 = True Then

???? soit E1 est un booleen
dans ce cas pas d'ambiguité
mais je ne sais alors ce que renvoie (argument recherché booléen ???)
Application.VLookup(E1, Worksheets("Calcul de regard").Range("K3:012"), 5)

sinon la comparaison renvoie toujours False, pas de recherche

et comme dit par Hulk il faut test l'erreur !
 

Bruno87

XLDnaute Nouveau
Re : Fonction personnalisée, Vlookup et VBA

J'ai changé un peu le code, en ne mettant pas E1 mais Ent1 pour ne pas générer d'ambiguité, mais rien à faire. L'erreur #VALEUR est toujours présente.

Code:
Function Entree(test, Ent1, Dia1, Ent2, Dia2) As String

Dim E_1, E_2 As String
Dim D_1, D_2 As String

If test <> "" Then
    If Ent1 = True Then
    E_1 = "  " & 90 & "° / D"
    D_1 = Application.VLookup(Dia1, Worksheets("Calcul de regard").Range("K3:012"), 5)
    Else
    E_1 = ""
    D_1 = ""
    End If
    
    If Ent2 = True Then
    E_2 = "  " & 90 & "° / D"
    D_2 = Application.VLookup(Dia2, Worksheets("Calcul de regard").Range("K3:012"), 5)
    Else
    E_2 = ""
    D_2 = ""
    End If
      
  
Entree = E_1 & D_1 & E_2 & D_2
Else
Entree = ""

End If


End Function

Je sais pas si c'est important, mais les cellules Ent1, Dia1, Ent2 et Dia2 ne se trouve pas dans la feuille où j'exécute la fonction personnalisée.
 

Hulk

XLDnaute Barbatruc
Re : Fonction personnalisée, Vlookup et VBA

Re,

Ou bien place ceci en toute fin de procédure...
Code:
If D_1.Text = "#N/A" Or D_1.Text = "#VALEUR" Then
    D_1.Value = ""
End If
If D_2.Text = "#N/A" Or D_2.Text = "#VALEUR" Then
    D_2.Value = ""
End If
Mais bon à l'aveugle...
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 136
dernier inscrit
Zoulander