Application.WorksheetFunction

  • Initiateur de la discussion Initiateur de la discussion Claudy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Claudy

XLDnaute Accro
Bonjour à tous,
J'ai, trouvé une formule assez longue et compliquée sur ce forum....
J'aimerais bien la raccourcir par une fonction personnalisée:
Function zaza
'etc etc...
End Function

Pour cela il me faudrait passer par Application.WorksheetFunction(la fonction avec des termes en français traduits en anglais)
Ma question: y a t il moyen de traduire facilement cette formule pour complèter ce worksheetFunction?
Tout en évitant des R[-1]C[-3],2,3, mais plutot des range("A2").
Merci d'avance
a+
Claudy
 
Re : Application.WorksheetFunction

Bonjour Claudy

pas sur d'avoir tout compris...

Tu veux créer une fonction, reprenant une ou des fonctions de feuilles de calculs (WorksheetFunction)...

tu dis que la formule est longue et compliquée, je suppose qu'elle utilise plusieurs fonctions... tu devrait peut être mettre la formule en question, cela pourrait nous aider à t'aider.

essaye peut être de mettre un fichier explicite avec le type de donnée de base et le résultat attendu. parce que comme ca, en l'état dur de te donner une piste...

bonne fin d'après midi
@+
 
Re : Application.WorksheetFunction

Bonjour et merci,
Mon essai:
Function zone() ' As Range
'zone=application.WorksheetFunction.offset(Feuil1!B5:G5;;;MAX(if(Feuil1!B5:B72<>"";row(Feuil1!B5:$B72)-4)))
End Function
'=DECALER(Feuil1!$B$5:$G$5;;;MAX(SI(Feuil1!$B$5:$B$72<>"";LIGNE(Feuil1!$B$5:$B$72)-4)))

Et je pourrais ainsi l'inserer dans ma zone "Nom"
A+
Claudy
 
Re : Application.WorksheetFunction

Bonsoir Claudy,
Déjà, je ne vois pas "nom" mais zone.
Pour ce qui est d'application WorksheetFunction, tu ne peux pas utiliser Offset, qui est une fonction Excel, de cette façon.
Ensuite que signifient ";;;"
Tu ne peux pas non plus utiliser ;row(.......) ainsi dans un fonction Excel.
Enfin il serait intéressant que tu expliques (en français, pas en formule ni en code) ce que tu souhaites réaliser.
Pour ma part, je t'avoue que je n'ai rien compris, outre le fait que ce que tu as mis est, tu t'en doutes, n'importe quoi 🙁
Bon courage pour trouver une explication
@+
 
Re : Application.WorksheetFunction

Bonjour Banzai64, bonjour Claudy,
Je parlais de cette formule
'zone=application.WorksheetFunction.offset(Feuil1! B5:G5;;;MAX(if(Feuil1!B5:B72<>"";row(Feuil1!B5:$B72)-4)))
pas de la seconde qui m'a l'air "plus conforme" à ce qu'on peut attendre d'une formule... Mais je n'ai pas saisi le rapport entre les deux 🙁
Bonne journée

Edit
Youpi, je viens de comprendre !
On reprends ! La formule
=DECALER(Feuil1!$B$5:$G$5;;;MAX(SI(Feuil1!$B$5:$B$72<>"";LIGNE(Feuil1!$B$5:$B$72)-4)))
est la formule enregistrée en faisant. Ok !

Le premier problème est que dans VBA, Offset se contente de décaler la ligne et la colonne d'une adresse donnée. Pas de plusieurs adresses. Les ";;;" s'expliquent avec Decaler, pas avec Offset.
Qu'en est-t-il avec worksheetFunction ? Je n'en sais rien.
Le second problème est que visiblement worksheetFunction ne reconnaît pas row comme une fonction Excel.
Par contre, en VBA on peut écrire le code correspondant à cette formule, encore faut-il la décortiquer.
Peux-tu, en français, expliquer ce que tu veux obtenir ? Ce ne devrait pas être bien compliqué à réaliser.
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour