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
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
A voir également:
- Excel: passer d'une formule à une fonction
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si et excel - Guide
- Déplacer une colonne excel - Guide
- Excel moyenne - Guide
5 réponses
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
953
22 août 2010 à 19:49
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å
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å
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+
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+
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
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
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
953
23 août 2010 à 12:50
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å
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å
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" ^^
Merci pour ces éclaircissements.
Me reste plus qu'à trouver le bouton "Résolu" ^^
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
953
23 août 2010 à 13:07
23 août 2010 à 13:07
Re le forum
Regarde à droite de ton premier message, «Signaler comme résolu»
Mytå
Regarde à droite de ton premier message, «Signaler comme résolu»
Mytå