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 :

reference a une cellule dans une fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut reference a une cellule dans une fonction
    bonjour a tous


    en aidant plusieur forumeur sur diverses question

    je me pose une question sur comment référencer une cellule

    j'explique:


    a suposer que je créé une fonction exemple "mafonction"

    et je la met dans une cellule exemple "=Mafonction"


    dans la fonction elle meme n'ya t-il pas un moyen de référencer cette cellule

    du genre "thiscells"

    exemple d'utilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function mafonction()
     dim cel1 as range,cel2 as range,cel3 as range
     
    cel3=thiscell 'designe la cellule ou est inscrite "=mafonction"
     
    mafonction=cel3.offset(0,-2)-cell3.offset(0,-1)'bien sur ca n'est pas l'operation qu'il y aura c'est juste un exemple 
    end function
    il va y avoir plusieurs cellule qui auront cette fonction


    une idée ?????

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    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
    Tiens une fonction qui te permettra d'y voir plus clair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function MaFonction() As String
    Dim r As Range
    Set r = Application.Caller
        MaFonction = r.Address
    End Function
    mais attention aux limites des fonctions personnalisés d'Excel :

    http://support.microsoft.com/kb/170787/fr



  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour bbil

    si je comprend bien pour ma fonction je n'est besoins que de ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set r = Application.Caller
    si je met cette fonction dans plusieur cellule n'y a t-il pas des risque de redondance????

    je te remercie

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  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
    Citation Envoyé par patricktoulon Voir le message
    ...
    si je met cette fonction dans plusieurs cellules n'y a t-il pas des risque de redondance????
    ..
    je vois pas ce que tu veux dire...

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re je fesais allusion au fait que plusieurs cellules aurnt cette fonction
    donc n'y a t-il pas un risque que la cellule soit mal identifiée

    voila l'ebauche de ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Function difftemps() 
    Dim S As Long, H As Long, M As Long
    Dim cellule As Range
    Set cellule = Application.Caller
     S = DateDiff("s", r.Offset(0, -2), r.Offset(0, -1))
        H = Int(S / 3600)
        M = Int((S - 3600 * H) / 60)
        S = S - 3600 * H - 60 * M
            durrée = TimeSerial(H, M, S)
        difftemps = durrée
    End Function
     
    mais ca me marque "?NOM":aie:
    heu!!...... moi pas comprendre

    EDIT!!!!!!!!!

    oupss j'ai oublé de changer le nom de variable
    voici le bon code j'ai meme ajouter un e condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Public Function difftemps()
    Dim S As Long, H As Long, M As Long
    Dim cellule As Range
     
    Set cellule = Application.Caller
     If cellule > cellule.Offset(0, 1) Then
     S = DateDiff("s", cellule.Offset(0, -2), cellule.Offset(0, -1))
      ElseIf cellule < cellule.Offset(0, 1) Then
      S = DateDiff("s", cellule.Offset(0, -1), cellule.Offset(0, -2))
     End If
     
        H = Int(S / 3600)
        M = Int((S - 3600 * H) / 60)
        S = S - 3600 * H - 60 * M
            'durrée = TimeSerial(H, M, S)
        difftemps = H & ":" & M & ":" & S
    End Function
    je suis en train de realiser cette fonction pour "lyonnaisdu26" je trouvait le sujet interressant
    un peu d'aide me serait grand utile je crois

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    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
    Je n'ai pas tous relu .. mais dans ton cas Application.Caller ne me semble pas intéressante .. il vaudrait mieux donner 2 paramètres à ta fonction du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function difftemps( rDateDeb as range, rDateFin as range )
    ces histoire d'Offset qui oblige à ce que la formule soit placé dans une positon définie en fonction de ces paramètres c'est pas la joie ...

Discussions similaires

  1. Réponses: 15
    Dernier message: 26/01/2015, 19h37
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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