Condition dans un IF THEN qui ne réagit pas comme d'habitude.
Bonjour,
J'ai beaucoup programmé en VBA sous Access, mais je débute en Excel.
J'écris une fonction (Test(...) As Volatile) qui retourne une valeur selon ce qui est trouvé dans un champ d'une autre feuille. Les valeurs contenues dans ce champ sont composées d'un seul caractère (A..Z).
À l'aide de WorksheetFunction.Vlookup, je réussis à déterminer le numéro de la ligne.
(Test = NoLigne retourne le bonne information)
À l'aide de Range.Offset(l,c), je retrouve l'information voulue dans le champ de départ.
Je place cette valeur dans la variable V1, DIMmentionnée comme Variant (String fait tout échouer).
(Test = V1 retourne la bonne valeur)
Mais, la ligne suivante me retourne #VALEUR :
Code:
IF V1 = "J" Then Test = "Hello"
J'ai même tenté la chose suivante avec V2 (DIMmentionnée également comme Variant) :
V2 = V1,
IF V1 = V2 Then Test = "Hello" ...qui me retourne encore #VALEUR
J'ai ensuite testé : If 4=4 Then Test = "Hello" ... J'ai obtenu mon "Hello"
Je ne sais plus quoi tenter pour obtenir mon "Hello" avec une condition qui est moins triviale.
Je soupçonne qu'il y a incompatibilité de type. J'ai tenté de multiples fonctions de changement de type sans succès.
J'apprécie que vous me preniez par la main pour celle-là.
Merci pour votre aide.
Excel refuse toujours de m'obéir.
Merci à gnain et à rdurupt.
J'ai tenté vos solutions, mais Excel ne veut rien savoir.
Je vous envoie le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Public Function CalendrierProf(LeProf As Variant, LaDate As Variant, AMPM As Integer) As Variant
Application.Volatile
Dim NoLigne As Variant
Dim H As Range
Dim PProf, Prof As Variant
Set H = Range("Affectations!H1:K253")
NoLigne = WorksheetFunction.VLookup(LaDate, Range("Affectations!D15:E253"), 2) - 1
' CalendrierProf = H.Offset(NoLigne, 0) ' Retourne la bonne valeur
Prof = H.Offset(NoLigne, 0)
' CalendrierProf = Prof ' Retourne la bonne valeur
PProf = Prof
' If PProf = Prof Then CalendrierProf = "Secrétariat" ' Retourne #VALEUR
If Trim("" & Prof) = CVar(Trim("" & "J")) Then CalendrierProf = "Secrétariat" ' Retourne Secrétariat
End Function |
En voyant le commentaire de rdurupt, j'ai aussi essayé NZ() qui fonctionne avec Access (empêche le passage de NULL), mais qu'Excel ne semble pas connaître.
Merci encore de tenter de m'aider.