IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Transmission valeur cellule pour appeler une fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur Microsoft Share Point
    Inscrit en
    Avril 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur Microsoft Share Point
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 33
    Par défaut Transmission valeur cellule pour appeler une fonction
    Bonjour,
    ayant fais beaucoup de recherches je n'ai toujours pas trouvé a solution , je crois que c'est juste une question de syntaxe, mon problème est simple:
    j'ai deux colonnes de type date :
    A1,A2,A3.....
    B1,B2,B3...

    Dans mon code VBA j'ai une fonction "datefin" qui à deux paramètres en entrés :datefin(A1,B1) ,date fin (A2,B2)......
    Cette fonction retourne une date.
    Ce que je voudrais !
    Appelez cette fonction depuis une macro qui se lance à l'ouverture du fichier :
    comment passez les paramètres de cellules dans cette foncton
    commennt affichez le résultat dans une msgbox en date .
    Je vous remercie

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 165
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Un excellent tutoriel à lire Les fonctions personnelles dans Excel
    Exemple 1 - Un fonction calculant l' hypoténuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Hypotenuse(Cote1 As Double, Cote2 As Double) As Double
     Hypotenuse = Sqr(Cote1 ^ 2 + Cote2 ^ 2)
    End Function
    Exemple 2 - Une fonction qui renvoie la date la plus grande entre les deux dates passées en argument.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function DateFin(Date1 As Date, Date2 As Date) As Date
     DateFin = Application.WorksheetFunction.Max(Date1, Date2)
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur Microsoft Share Point
    Inscrit en
    Avril 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur Microsoft Share Point
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 33
    Par défaut
    Bonjour philipe,
    Merci pour ta réponse je m'y penche sur le tuto ,je suis novice en VBA
    Voici ma macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Auto_Open()
    If MsgBox("Bienvenue vous allez déclarer un incident ", vbYesNo, "Demande de confirmation") = vbYes Then
        Dim datte As Date
        datte = DateFin(deb, duree)
        MsgBox ("la date de fin est :" & datte)
     
         End If
    End Sub
    IL y'a une erreur d'incompatibilité de type ;il y'a une erreur de syntaxe :
    La fonction que j'appelle prends en paramètres les céllules (A1,B1); (A2,B2); (A3,B3) ce sont des types dates et la fonction retourne une date que je veux afficher dans une msgbox
    comment passer les valeurs des cellules dans les paramètres de la fonction appeller??
    Mercii beaucoup je bloque depuis deux jours

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,

    montre nous la ligne de déclaration de ta fonction "DateFin"


    d'où viennent (déclaration ?) tes variables "deb" et "duree" ?

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur Microsoft Share Point
    Inscrit en
    Avril 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur Microsoft Share Point
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 33
    Par défaut
    Voici la déclaration de la fonction elle retourne une date que je veux afficher dans une msgbox mais pour cela il faut aussi passer les valeur des cellulles DateFin(A1,B1) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function DateFin(deb As Date, duree As Date) As Date

    Je vous remercie

  6. #6
    Invité
    Invité(e)
    Par défaut
    bon alors passe lui!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Auto_Open()
    If MsgBox("Bienvenue vous allez déclarer un incident ", vbYesNo, "Demande de confirmation") = vbYes Then
        MsgBox ("la date de fin est :" & DateFin([A1], [B1]))
    End If
    Dernière modification par Invité ; 22/04/2013 à 16h29.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    les valeurs deb, duree sont initialisé où car l’éventement Auto_Open() je connais pas.
    test ta fonction seule dans un premier temps qui devrait fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
     MsgBox ("la date de fin est :" & DateFin("12/12/2013", "13/12/2012"))
    End Sub
    Function DateFin(Date1 As Date, Date2 As Date) As Date
     DateFin = Application.WorksheetFunction.Max(Date1, Date2)
    End Function

Discussions similaires

  1. [AJAX] Lien <a> pour appeler une fonction
    Par onlajoy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/03/2009, 15h16
  2. Réponses: 1
    Dernier message: 08/05/2008, 08h51
  3. Utiliser une touche pour appeller une fonction
    Par Hide dans le forum Langage
    Réponses: 2
    Dernier message: 13/10/2005, 16h59
  4. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  5. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo