Fonctions Excel dans VBA

Bonjour,

Dans mon apprentissage j'en suis arrivé aux calculs sur les dates et l'intégration des fonctions Excel dans le code VBA. J'essaie de faire des exercices en prenant comme argument ce qu'il y a dans la cellule Excel et c'est beaucoup plus compliqué que je ne le pensais. j'ai donc besoin de l'aide des membres du Forum pour m'expliquer ce qu'il faut faire .

D'avance merci

en annexe le fichier

Bonjour,

Qu'attends-tu du forum ?

Cdlt.

Bonjour,

Quel est le but de l'exercice? Donner le trimestre qui est en lien avec la date dans la callule?

ça serait bien d'avoir un exemple de ce que tu veux dans la feuille, surtout qu'il semble y avoir des fonctions déjà écrites mais passées en commentaire dans tes modules, je ne comprends pas à quoi ils servent, d'où tu pars et à quoi veux-tu arriver? Je veux bien aider, mais j'aimerais d'abord comprendre

Bonjour à tous,

Ce que j'essaie de faire c'est appliquer les fonctions excel dans le code VBA. Les trois fonctions qui m'intéressent sont fin de mois, Nb jours ouvrés et série jours ouvrés Dans un premier temps j'avais tenté d'écrire une fonction et j'avais repris comme exemple la fonction somme qui reprenait les arguments NB. je les ai mis en commentaire pour m'en inspirer. Comme les fonctions personnalisés que j'ai essayé de mettre au point n'ont donné aucun résultat dans excel je les mises en commentaire. Ce sont celle qui suivent

1er jour de la période de trois mois

'D_Trim = Application.WorksheetFunction.EoMonth(ActiveSheet.Cells(1, 1), 0) + 1

' dernier jour de la période de trois mois

'F_Trim = Application.WorksheetFunction.EoMonth(ActiveSheet.Cells(1, 2), 5)

J'ai continué à faire des recherches et lire des commentaires sur le sujet qui traite du calcul sur les dates . Finalement ne sachant plus que faire, je sollicite l'aide des membres du Forum pour m'expliquer la marche à suivre.

Dans le fichier il y a deux dates qui sont le 31/12/2012 et le 01/02/2013 (elles se trouvent respectivement en A1 et A2 )ce que je voudrais c'est

1) insérer dans le code VBA en faisant références aux cellules le 1er jour du trimestre qui suit décembre à savoir le 1er janvier 2013 et le dernier jours du 1er trimestre 2013 à savoir le 31 mars 2013 à l'aide de la fonction EoMonth;

2) calculer le nbre de jour ouvré entre le 1er janvier 2013 et le 31 mars 2013 ce qui me donnera un nombre de jours ouvrés X à l'aide de la fonction Networkday si c'est la bonne;

3) trouver la première date qui se trouve après ce nombre de jour ouvrés à l'aide de la fonction worday.

j'ai également mis ces fonctions en commentaire pour me rappeler ce qu'elles font

Pour arriver à un résultat, j'aimerais obtenir des membres du Forum la marche à suivre et les explications :

I)Faut-il d'abord mettre au point une fonction, si oui comment faire et que faut-il mettre argument,

II) comment faire ensuite pour :

1)obtenir dans la cellule C la date du 1er janvier 2013, dans la cellule D a date du 31 mars 2013 ,

2)dans la cellule E le nombre de jours ouvrés entre les cellules C et D

3) obtenir en F la première date qui se trouve après le nombre de jour ouvrés en me basant sur la date qui sera contenue dans la cellule C à savoir le 1er janvier 2013.

III) comment intégrer ces fonctions s'il en faut dans une ce procédure sub

Ce sont des exercices que je mets au point pour tenter de mettre en application ce qui est contenu dans le livre que j'ai emprunté dans une bibliothèque.

D'avance merci pour le temps que vous consacrerez à m'aider dans cette matière

Bien à vous

Re,

Une question : Sais-tu faire avec les formules de feuille de calcul ?

Cdlt.

oui j'utilise ces formules dans mon travail

et j'ai suivi un cours d'un an de spécialisation excel niveau 2 et ensuite un livre reprenant toute les fonctions d'excel

Cordialement

Bonjour,

En clair tu veux déjà deux fonctions distinctes, une qui renvoie la date du début du trimestre dont tu fournis la date, en clair si tu donnes le 2 février 2018, ça doit te donner le 1er janvier 2018, et une autre qui te donne le dernier jour du trimestre dont tu fournis la date : donc 31 mars 2018 pour la même date que précédemment, c'est bien ça?

ps : "et j'ai suivi un cours d'un an de spécialisation excel niveau 2 et ensuite un livre reprenant toute les fonctions d'excel" C'est du chinois ça pour moi désolé, excel niveau1,2,3,4,5,6 moi ça ne me parle pas

pour le deuxième point tu as déjà la fonction nbJoursouvres qui fait ça dans les formules excel, si tu tiens à y faire en vba tu peux appeler worksheetfunction et trouver son équivalent anglais, à moins que tu ne veuilles la reprogrammer entièrement à la main...

le 3 sera à voir après, mais je crois que tu as aussi une fonction qui fait ça sur Excel.

Bonjour

Pour répondre

la communauté Wallonie Bruxelles classifie les niveau de cours

1 = débutant

2= moyen

3 = c'est le niveau le plus haut

et pour chaque niveau on paie un droit d'inscription

je sais appliquer les formules en excel , j'ai essayé avec applicationworksheetFunction mais cela ne donne rien et je voudrais savoir pourquoi et ce que je dois faire

Cordialement

Bonjour,

Pour utiliser la fonction somme par exemple, il faut écrire worksheetfunction.sum() puis lui donner des plages de cellules dont tu veux faire la somme, pour enregistrer la somme des cellules de a1 à a10 dans b1 par exemple:

Range("b1") = worksheetfunction.sum(range("a1:a10"))

Normalement ça devrait marcher

Merci pour cette première réponse je vais essayer

Bien à vous

Bonjour, Salut à tous !

Indépendamment de ce que tu veux obtenir, il conviendrait de prendre en considération un certain nombre d'éléments :

1) VBA, dans son arsenal dispose de pas mal de fonctions utilisables directement, qu'il est souhaitable de connaître avant de recourir aux fonctions Excel.

Certaines de ces fonctions jouent à peu près le même rôle que des fonctions Excel, certaines présentent des différences plus ou moins significatives (qu'il est utile de connaître), d'autres n'ont pas d'équivalent dans les fonctions d'Excel, et inversement il est des fonctions d'Excel qui n'ont pas d'équivalent en VBA.

2) Il est préférable d'user d'abord des fonctions VBA en VBA, et se tourner vers les fonctions Excel lorsque c'est justifié par l'absence d'équivalent en VBA..., sans oublier que certaines opérations pourront être accomplies en VBA sans utiliser de fonctions et que dans de tels cas, l'usage de fonctions Excel ne prend intérêt que s'il apporte un gain de rapidité.

En matière de date : Date, Now, DateSerial, DateValue, DateDiff, DatePart, DateAdd, CDate, Year, Month, Day, Weekday, MonthName, WeekdayName, et j'en oublie sans doute, sont à connaître. En comparant avec les fonctions Excel on pourra rapidement établir celles qui peuvent utilement venir compléter la collection VBA, et celles qui n'auront pas d'utilité parce que leur rôle est déjà rempli.

3) Pour utiliser une fonction Excel en VBA, on doit recourir à l'objet WorksheetFunction, renvoyé par la méthode WorksheetFunction de l'objet Application. Les fonctions Excel sont ainsi accessible en tant que méthodes de l'objet WorksheetFunction, donc :

Application.WorksheetFunction.FonctionInvoquée(Arguments de la fonction)

Il doit être noté que comme dans de nombreux cas la référence à Application peut être implicite et donc omise.

Egalement que si l'on utilise Application en omettant WorksheetFunction cela fonctionnera et certains codeurs utilisent une syntaxe Application.FonctionExcel....

Je trouve préférable d'omettre Application, car lors de la frappe du point à la suite de WorksheetFunction, l'assistant affichera les fonctions disponibles, et en tapant une ou deux lettres du noms de la fonction, on n'a le plus souvent qu'à la sélectionner pour compléter, ce qui n'est pas le cas à la suite de Application ; et également parce que l'expression rappelle alors facilement à la lecture que c'est une fonction Excel qu'on utilise, sans ambiguïté.

Les arguments de la fonction doivent être fournis selon une syntaxe VBA. Ne pas imiter la rédaction en feuille de calcul, donc... mais il me semble qu'Ausecour t'a éclairé sur ce point.

4) La création de fonctions personnalisées, soit de procédures Function, codées en VBA et destinées à une utilisation en feuille de calcul, ne prend intérêt que s'il n'existe pas de fonction Excel pour renvoyer le résultat voulu, ou si la formule à produire devient excessivement longue ou compliquée...

Cordialement.

Bonjour,

un tout grand merci pour ces explications

cordialement

Rechercher des sujets similaires à "fonctions vba"