V
Vyserk
Guest
Bonjour à tous !
Dans le cadre de mon travail, je dois faire une petite formule sous VBA. Malheureusement, ma formule ne fonctionne pas correctement (elle plante à la 1ère ligne et donne #Valeur! comme si elle n'arrivait pas à lire les valeurs).
Le but de cette formule est de donner le nom d'une personne à partir d'un partir d'un tableau de correspondance. Il y a 2 données d'entrées pour la formule et sur ces 2 données, il y est effectué des recherchev. Malheureusement, les valeurs des cellules n'étant pas forcément exacte, je suis obligé d'utilisé des "*"&_&"*" pour faire retrouver la correspondance. Chaque donnée peut donner 3 résultats différents, soit il n'y a rien dedans et j'obtiens le premier mot de la colonne de mon tableau de correspondance, soit il y a quelques choses dedans mais pas de correspondance (donc erreur) ou soit il y a quelques choses et cela correspond.
Je suis désespéré car j'ai utilisé toutes les variantes possibles de formules que je connais pour que cela fonctionne... Pourriez-vous m'aider ?
Cordialement,
V
Function Qualiticien(cel_PC, cel_SAM)
If IsError(Application.VLookup("" * "" & (cel_PC.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("D1:E100"), 2, False)) = True Then 'détecte si la recherchev sur le PC donne une erreur
'La recherchev sur le PC donne une erreur
If IsError(Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)) = True Then 'détecte si la recherchev sur le SAM donne une erreur
Qualiticien = "Pas de correspondance"
Else
'la recherchev sur le SAM ne donne pas une erreur
If Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False) = "qualiticien" Then 'détecte si la recherchev sur le SAM donne qualiticien
'la recherchev sur le SAM donne qualiticien
Qualiticien = "Pas de correspondance"
Else
'la recherchev sur le SAM ne donne pas qualiticien
Qualiticien = Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)
End If
End If
'la recherchev sur le PC ne donne pas une erreur
If Application.VLookup("" * "" & (cel_PC.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("D1:E100"), 2, False) = "Qualiticien" Then 'détecte si la recherchev sur le PC donne qualiticien
'la recherchev sur le PC donne qualiticien
If IsError(Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)) = True Then 'détecte si la recherchev sur le SAM donne une erreur
Qualiticien = "Pas de correspondance"
Else
'la recherchev sur le SAM ne donne pas une erreur
Qualiticien = Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)
End If
Else
'la recherchev sur le PC est différent de qualiticien
Qualiticien = Application.VLookup("" * "" & (cel_PC.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("D1:E100"), 2, False)
End If
End If
End Function
Dans le cadre de mon travail, je dois faire une petite formule sous VBA. Malheureusement, ma formule ne fonctionne pas correctement (elle plante à la 1ère ligne et donne #Valeur! comme si elle n'arrivait pas à lire les valeurs).
Le but de cette formule est de donner le nom d'une personne à partir d'un partir d'un tableau de correspondance. Il y a 2 données d'entrées pour la formule et sur ces 2 données, il y est effectué des recherchev. Malheureusement, les valeurs des cellules n'étant pas forcément exacte, je suis obligé d'utilisé des "*"&_&"*" pour faire retrouver la correspondance. Chaque donnée peut donner 3 résultats différents, soit il n'y a rien dedans et j'obtiens le premier mot de la colonne de mon tableau de correspondance, soit il y a quelques choses dedans mais pas de correspondance (donc erreur) ou soit il y a quelques choses et cela correspond.
Je suis désespéré car j'ai utilisé toutes les variantes possibles de formules que je connais pour que cela fonctionne... Pourriez-vous m'aider ?
Cordialement,
V
Function Qualiticien(cel_PC, cel_SAM)
If IsError(Application.VLookup("" * "" & (cel_PC.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("D1:E100"), 2, False)) = True Then 'détecte si la recherchev sur le PC donne une erreur
'La recherchev sur le PC donne une erreur
If IsError(Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)) = True Then 'détecte si la recherchev sur le SAM donne une erreur
Qualiticien = "Pas de correspondance"
Else
'la recherchev sur le SAM ne donne pas une erreur
If Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False) = "qualiticien" Then 'détecte si la recherchev sur le SAM donne qualiticien
'la recherchev sur le SAM donne qualiticien
Qualiticien = "Pas de correspondance"
Else
'la recherchev sur le SAM ne donne pas qualiticien
Qualiticien = Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)
End If
End If
'la recherchev sur le PC ne donne pas une erreur
If Application.VLookup("" * "" & (cel_PC.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("D1:E100"), 2, False) = "Qualiticien" Then 'détecte si la recherchev sur le PC donne qualiticien
'la recherchev sur le PC donne qualiticien
If IsError(Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)) = True Then 'détecte si la recherchev sur le SAM donne une erreur
Qualiticien = "Pas de correspondance"
Else
'la recherchev sur le SAM ne donne pas une erreur
Qualiticien = Application.VLookup("" * "" & (cel_SAM.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("B1:E100"), 4, False)
End If
Else
'la recherchev sur le PC est différent de qualiticien
Qualiticien = Application.VLookup("" * "" & (cel_PC.Value) & "" * "", Sheets("Correspondances SAM-Qual").Range("D1:E100"), 2, False)
End If
End If
End Function