Excel: passer d'une formule à une fonction

Résolu/Fermé
VdM - 22 août 2010 à 17:38
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 - 23 août 2010 à 13:07
Bonjour,

Je viens de créer une longue formule me permettant de vérifier des données et j'aimerais maintenant en faire une fonction pour en faciliter l'utilisation. Mais je ne m'y connais pas très bien en VBA, et surtout pas en ce qui concerne la sélection des cellules. Sauriez-vous m'expliquer comment sélectionner des cellules en VBA et me dire si les fonctions excel (OU,ET,SI) fonctionnent en VBA?

Pour vous faire une idée, voici ma formule (il faudra encore que je la modifie pour qu'au lieu des "ok" et "flagger" que j'affiche pour dire si la donnée est bonne ou pas, ce soit la ligne de la cellule qui se colore en vert ou orange):

=SI(C3=1;SI(OU(D3="Physician";D3="Pharmacist";D3="Other Health Professional");SI(B3="";"ok";"flagger"); SI(ET(D3="Consumer or other non health professional";C4=2;OU(D4="Physician";D4="Other Health Professional"));SI(OU(B3="Yes";B3="No");"ok";"flagger");SI(ET(D3="Consumer or other non health professional";D4="Consumer or other non health professional";B3="no";C4=2);"ok";"flagger")));"NA")

Merci d'avance pour votre aide.

A voir également:

5 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
22 août 2010 à 19:49
Salut le forum

Pourquoi ne pas utiliser les Noms définis pour remplacer ta formule

Essaye de joindre une version épurée de données confidentielles

Explication sur quelles cellules doit s'appliquer la formule

Pour joindre un fichier, tu crèes un lien à l'aide de
https://www.cjoint.com/ ou de http://cijoint.fr/ et tu
recopies le lien dans ton prochain message.

Mytå
0
Bonjour,

Je connais un peu VBA, mais je ne suis pas un adepte des empilages des si et ou !!!

Et j'avoue que ta formule qui doit bien fonctionner est un peu indigeste ^^

Pour info, tu es condamné à réécrire en VBA mais si tu es capable de mettre au point ta formule, pas de pb, tu vas y arriver en VBA.


Un peu d'aide pour commencer :

Depuis Excel, faire Alt-F11, clic-droit sur ton classeur dans la fenetre projet. CHoisir insertion\module.
Double-cliquer sur module1 ainsi créé et dans la fenetre de droite taper :

sub Mapremieremacro()

if activecell.value="" then
msgbox "Pas la peine de me faire travailler sur une cellule vide !!!"
exit sub
end if

' les lignes qui commencent par un ' sont des commentaires que tu peux insérer dans ta macro

' le test ci-dessus vérifie simplement que ta macro n'est pas activée pour rien

' cela dit le vrai test consisterai à savoir si tu appelles ta fonction depuis une cellule réellement concernée.

'activecell est la cellule active au moment ou la macro s'exécute

'msgbox affiche un msg
' exit sub fait terminer la macro

' if ... then....end if c'est un test conditionnel

' on continue ^^

if range("C3").value =1 and (range("D3").value="physician" or range("D3").value ="Pharmacist" or ......) then entirerow(activecell.row).interior.colorindex=5

' si c3=1 et(d3=... ou d3=... ou....) alors la couleur de remplisssage de la ligne entiere contenant la cellule active va devenir=5 (vert je crois, pas sur)

end sub

>>>>>> THE END <<<<< ne pas mettre cette ligne ^^

Bon , je te laisse creuser un peu !

Petit bonus : si par exemple tu veux limiter l'utilisation de ta macro à une colonne , tu peux ajouter au début :

if activecell.column <>3 then exit sub 'en clair si la colonne de la cellule active n'est pas 3 (cad C, car 1=A,2=B...) alors on sort !






En espérant t'avoir donné envie de t'y mettre..Bonne soirée, A+
0
Désolé Mytâ, c'est vrai que j'aurais pu mieux présenter ma question...

Merci beaucoup Sylvlau, c'est exactement ce que je cherchais. Avec tout ça je devrais pouvoir réécrire ma formule dans VBA.

Par contre, juste encore une petite question: c'est quoi la différence quand on écrit en VBA entre "sub" et "function"?
(j'ai l'impression que tout le monde utilise toujours sub et jamais function...)

En tout cas, déjà merci pour tout
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
23 août 2010 à 12:50
Salut le forum

Bonjour,

1 - une fonction (Function) doit obligatoirement retourner une valeur ;
2 - une procédure (Sub) exécute une action et n'a pas de valeur de retour.

Une fonction est généralement utilisée pour augmenter le nombre de fonctions déjà existantes dans Excel. Elle peut contenir des paramètres, et retournera donc une valeur dans la cellule dans laquelle elle est utilisée. Lorsque l'on écrit en VBA, et dans le souci d'organiser le code, une fonction pourra ne pas retourner de valeur dans une cellule mais dans le code (à la procédure appelante par exemple).

Mytå
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
D'accord
Merci pour ces éclaircissements.

Me reste plus qu'à trouver le bouton "Résolu" ^^
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
23 août 2010 à 13:07
Re le forum

Regarde à droite de ton premier message, «Signaler comme résolu»

Mytå
0