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

XL 2016 Appel d'une fonction avec Jour/heure/minute

Ziouda

XLDnaute Nouveau
EDIT:
Il semble que le problème vient du fait que j'appel ma fonction de la sheet 1 et que les données sont dans la sheet 2

Quand j'appel ma fonction dans la sheet 2, ça fonctionne.

Du coup comment régler le soucis ?
Je pense que le pb vient de cette partie de la fonction :
Code:
    tableau = Sheets("DATA").Range(Cells(i, col), Cells(i + nbligne - 1, col))

Need help



Bonjour tout le monde,

Je sèche sur une fonction que j'ai crée avec deux variables "string et date"

Quand j'appel cette fonction via un call j'ai aucun soucis:

Code:
Sub test()
    Dim z As Double
  
    z = VariationTime("ID001", "00:30:00")
End Sub

Cependant si j'appel la fonctionne depuis excel, j'ai un #VALEUR!

Exemple :
=VariationTime("ID001";"00:15:00")


Voici la fonction
VB:
Public Function VariationTime(ID As String, timevar As Date) As Double
    Dim nbligne As Integer, i As Integer, l As Integer, col As Integer
    Dim Timeloop As Date
    Dim tableau As Variant
    Dim c As Range
    Dim First As Double, Last As Double, diff As Double



    Set c = Sheets("DATA").Rows(1).Find(ID, LookIn:=xlValues, LookAt:=xlWhole)
    col = c.Column


    Timeloop = "00:05:00"
    nbligne = timevar / Timeloop

    i = 3

    tableau = Sheets("DATA").Range(Cells(i, col), Cells(i + nbligne - 1, col))

    First = tableau(1, 1)
    Last = tableau(nbligne, 1)

    VariationTime = First - Last


End Function

Nom du module : Mes_Fonctions
Nom de la fonction : VariationTime
Extention fichier : xlsm
Macros activées : Oui
D'autres macros fonctionnent : Oui
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
Je pense que le pb vient de cette partie de la fonction :
Code:
tableau = Sheets("DATA").Range(Cells(i, col), Cells(i + nbligne - 1, col))
C'est bien possible si la feuille active n'est pas la DATA puisqu'à défaut il assume Sheets("DATA").Range(ActiveSheet.Cells(i, col), ActiveSheet.Cells(i + nbligne - 1, col))
À mon avis il serait souhaitable que cette plage soit transmise As Range en 3ème argument.
 

Discussions similaires

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