Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Importer des fonctions excel dans des macro

benoa

XLDnaute Junior
Bonjour,

J'ai un problème pour construire des fonctions, pour l'exemple j'aimerais redéfinir la fonction JOUR qui retourne le jour d'une date:

Function monjour(d As Date) As Long
monjour = Application.WorksheetFunction.DAY(d)
End Function

J'ai essayé avec JOUR à la place de DAY, avec uniquement WorksheetFunction mais rien n'y fait, cela ne fonctionne pas.

Auriez vous une idée? A bientôt
 

Efgé

XLDnaute Barbatruc
Re : Importer des fonctions excel dans des macro

Bonjour benoa
Dans ton cas il faut employer soit Evaluate :
VB:
Function monjour2(d As Date) As Long
    monjour2 = Evaluate(Day(d))
End Function
Soit passer par une instruction purement VBA
VB:
Function monjour3(d As Date) As Long
    monjour3 = Format(d, "dd")
End Function

Cordialement
 

benoa

XLDnaute Junior
Re : Importer des fonctions excel dans des macro

Votre solution marche avec la fonction Evaluate.
Merci à vous.

Par contre, est ce que cette fonction marchera avec une recherche horizontale Hlookup?
Je n'y arrive pas avec cette dernière fonction
 

Efgé

XLDnaute Barbatruc
Re : Importer des fonctions excel dans des macro

Re
Salut Pierrot
@benoa
Tu devrais plutot utiliser réellement le language VBA, plutot que de vouloir utiliser des WorksheetFunction, qui comme le nom l'indique, sont des fonctions de Feuille..
Pour VLookUp regarde du coté de Find, ou Match....
Bon courage pour la suite
Cordialement
 

benoa

XLDnaute Junior
Re : Importer des fonctions excel dans des macro

Merci, mais je n'arrive toujours pas à utiliser ma fonction :
Je débute tout juste en VBA...


Public Function DJU(d1 As Date, d2 As Date, t As Integer) As Double

'n est le nbr de jours entre les deux dates d1 et d2, S est la somme totale

Dim n As Double, S As Double
Dim date1 As Long, date2 As Long

'on passe les deux dates en entiers ... Je ne sais pas si c'est la bonne méthode

date1 = Int(CDbl(d1))
date2 = Int(CDbl(d2))

'on calcul n et on initialise S

n = date2 - date1
S = 0

'Pour toutes les dates entre d1 et d2, on va cherché le coefficient correspondant dans le tableau t

For i = 0 To n Step 1

date1 = date1 + i
j = Evaluate(Day(date1)) + 1
m = Evaluate(Month(date1))
S = S + Application.WorksheetFunction.HLookup(m, t, j, FAUX)

Next i

'on affecte le resultat
DJU = S

End Function


En fait je souhaiterais savoir si mes fonctions sont bien définies dans la boucle et lors de l'initialisation sont bien définies. N'y aurait-il pas une erreur dans le typage des variables?

Merci à tous
 

benoa

XLDnaute Junior
Re : Importer des fonctions excel dans des macro

Je n'arrive pas à utiliser FIND et MATCH,

y aurait-il un moyen de palier à : Application.WorksheetFunction.HLookup(m, t, j, FAUX) en utilisant toujours la fonction HLookup ?

Merci à tous
 

Efgé

XLDnaute Barbatruc
Re : Importer des fonctions excel dans des macro

Re
Il serait surtout judicieux d'expliquer ce que tu veux faire et de fournir un petit fichier exemple sur lequel s'appuyer.
Car pour l'instant ton code est assez flou quant à sa finalité.
Cordialement
 

benoa

XLDnaute Junior
Re : Importer des fonctions excel dans des macro

Bien

Voici ce que je dois faire, j'ai un tableau :


A partir de deux dates au format jj/mm/yyyy, par exemple 01/09/2012 et 03/09/2012, je dois pouvoir sommer tous les coefficients du tableau compris entre ces deux dates.

Rmq : On ne s'occupe pas de l'année... pour diverses raisons

On cherche le NOMBRE de jour entre ces deux dates, ensuite, on cherche pour chacune de ces dates le JOUR et le MOIS correspondant, après on cherche le coefficient dans le tableau à l'aide de HLookup(MOIS, B2:K33, JOUR+1, FALSE). On ajoute ce coefficient à la somme. On réitère la procédure.

Sur l'exemple :
nbr de jour entre ces deux dates : 2
on doit donc sommer à partir du tableau : 6 + 3

Je débute en VBA, excuser moi si ce n'est pas clair. Et merci à tous

Cordialement
 

Pièces jointes

  • projet.jpg
    58.6 KB · Affichages: 63
  • projet.jpg
    58.6 KB · Affichages: 59

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…