VBA+ WorksheetFunctions imbriquees

Delux

XLDnaute Occasionnel
Bonjour a tous et a toutes,

Sauriez-vous me dire s'il est possible d'imbriquer plusieurs worksheetFunctions?

Par exemple, comment ecrire:

Code:
If WorksheetFunction.VLookup(Range("C6").Value, Sheets("Nadia Extraction").Range("C3:E500"), 3, False) <> "" Then

Sheets("MAIN").Range("C9").Value = "OK"

Else

Sheets("MAIN").Range("C9").Value = WorksheetFunction.NetworkDays(Range("C8"), Range("AR1"))

End If

Donc en gros, comment dire que si la rechercheV donne "vide", alors lancer un networkdays?

Le code ecrit en exemple ne fonctionne pas...

Je ne joinds pas de fichier car je souhaite juste savoir la procedure a suivre ;)

Merci par avance pour votre aide.

Cordialement,

Delux
 

Pierrot93

XLDnaute Barbatruc
Re : VBA+ WorksheetFunctions imbriquees

Bonjour,


peut être ainsi, code non testé.... perso utiliserais plutôt la méthode "Find" native dans vba...
Code:
If IsError(WorksheetFunction.VLookup(Range("C6").Value, Sheets("Nadia Extraction").Range("C3:E500"), 3, False)) Then

bon après midi
@+
 

Delux

XLDnaute Occasionnel
Re : VBA+ WorksheetFunctions imbriquees

Bonjour,

Merci pour ce code mais cela ne fonctionne pas.
J'ai du enlever worksheetFunction et le remplacer par Application.

Cependant, meme si je mets "If Not IsError" ou comme vous avez mis, cela me renvoie toujours la meme valeur.

Je pense qu'il faudrait rajouter une variable :/

Cordialement,
 

PrinceCorwin

XLDnaute Occasionnel
Re : VBA+ WorksheetFunctions imbriquees

Bonjour,
Bojour Pierrot,

Du même avis que Pierrot, avec la fonction Find c'est plus efficace dans la gestion des erreurs (Valeurs non trouvée).
Ou alors avec la fonction NB.SI (COUNTIF() )

Code:
if application.countif(plage, critere) >= 1 then 
 msgbox("Trouvé")
else
msgbox("Non trouvé")

Bien évidemment ce code est à adapter aux contexte qui est le tiens.
 

Delux

XLDnaute Occasionnel
Re : VBA+ WorksheetFunctions imbriquees

Bonjour a tous,

Tout d'abord, merci pour votre implication dans la resolution de mon probleme.

Finalement, j'ai reussi a trouver la solution que voici:

Code:
If WorksheetFunction.VLookup(Range("C5").Value, Sheets("Nadia Extraction").Range("E3:AD500"), 10, False) <> "" Then
    Sheets("MAIN").Range("C9") = "OK"
    Else
    Sheets("MAIN").Range("C9") = WorksheetFunction.NetworkDays(Range("AR1"), Range("C8")) 'Numbers of Days before RFQ
    End If

En fait le probleme se situait au niveau de la synthaxe:
Sheets("MAIN").Range("C9") .Value = "OK"

Merci pour votre aide :)

Cependant, ma question reste la meme, peut-on imbriquer plusieurs formules dans le code vba:
Code:
WorksheetFunction.If(AND(NETWORKDAYS(........), ........ = ........), TRUE, FALSE)

Cordialement,
 
Dernière édition:

PrinceCorwin

XLDnaute Occasionnel
Re : VBA+ WorksheetFunctions imbriquees

Bonjour,
Si tu écris en VAB, pourquoi ne pas le faire jusqu'au bout ?

Je suppose que l'instruction avec le if(and...., true, false) vient dans une variable ?
pourquoi ne pas écrire plutôt :
mavariable = IIf( networkdays(.., ..), true, false)

ou alors si plusieurs actions :
If (condition1 or condition2) and condition 3 then
action1
action2
else
action3
end if


?
Bonne journée
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87