Fonction personnalisée, Vlookup et VBA

  • Initiateur de la discussion Initiateur de la discussion Bruno87
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Bruno87

Guest
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!
 
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.
 
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
 
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 !
 
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.
 
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...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
409
Réponses
4
Affichages
519
Retour