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 :

numéro de ligne de la case qui effectue la fonction


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut numéro de ligne de la case qui effectue la fonction
    j'essaie d'écrire une fonction en VBA afn de pouvoir l'utiliser dans excel. J'aurais besoin pour cette fonction du numero de la ligne de la case dans laquelle la fonction est exécutée ?
    Je ne sais pas comment faire, si quelqu'un peu m'aider.

    merci d'avance

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour et bienvenue sur le forum,
    Dans Excel ont dit pas une case mais une cellule.
    A-tu déjà fait quelque chose en VBA ?
    A+

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci de m'acceuilir ici.
    Effectivement, une cellule, désolé

    Je suis débutant en VBA.
    Oui, j'ai déjà écrit qqch, plus précisemment une fonction que j'aimerais pouvoir utiliser après dans ma feuille excel.
    J'aurais besoin dans cette fonction de pouvoir récupérer la valeur de la ligne de la cellule qui execute la fonction.

    Par exemple, j'utilise ma fonction dans la case A1, alors j'aimerais pouvoir récupérer dans la fonction la valeur de la ligne, ici 1 !

    J'espère que c'est clair.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Une piste, sans savoir exactement comment tu a rédigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim L
    Range("A1").select
    L = ActiveCell.Row
    Sinon, met le code de ta fonction, (sans oublié les balises CODE > Dans l'éditeur tu sélectionne ton code et clic sur # dans la barre d'outils.)

  5. #5
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        If TypeOf Application.Caller Is Range Then
            MsgBox "la ligne de la cellule appelante est :" & Application.Caller.Row
        End If

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    ça ne marche pas trop.

    Bon on va faire plus simple.
    Peux tu m'écrire une fonction:
    Public Function seuil()
    ...

    qui une fois utilisé dans une cellule, écrirait dedans le numéro de la ligne.
    Par exemple, en tappant "seuil()" dans la case B4, j'aimerais que ça écrive 4 dans la case.
    A partir de là, je pense que j'arriverai à me débrouiller, le reste de ma fonction marche.

    Merci encore pour ton aide précieuse.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Non, je ne vais pas t'écrire une fonction toute faite, décarcasse toi un peu pour amorcé ta fonction et quand tu bloquerras ont pourras alors t'aider.
    Pas oublier les Tuto, les FAQ et
    PS: Si le reste de la fonction 'marche' fait comme demandé, met la dans un poste, ont pourras alors t'aiguillé ou la modifié pour avoir le résultat souhaiter.

  8. #8
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    OK voilà ma fonction en l'état, elle marche, le code n'est peut-être par très élégant.
    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
    18
    19
    20
    Public Function seuil(lin As Integer, thr As Integer)
    Dim i As Double, j As Integer, col As Integer
        Set ws = Worksheets("thresholds")
        col = 10
        j = 0
        Do
            If ws.Cells(lin, col).Value >= thr Then
            i = ws.Cells(2, col).Value
            j = 1
            End If
            col = col + 1
            If col = 20 Then
            i = 4
            j = 1
            End If
        Loop Until j = 1
     
        seuil = i
     
    End Function
    J'ai dans les cellules J2 à T2, les valeurs qui doivent être retournés

    ca marche en l'état, mais je dois utiliser la fonction comme suit.
    par exemple, en U3, le met: =seuil(3,2). 3 étant le numéro de la ligne.
    Ce n'est pas très pratique, je dois éditer chaque formule 1 à 1 et mon tableau excel est très grand.
    J'aimerais transformer ma fonction pour que je ne mettre plus qu'un paramètre, thr dans ma fonction. Pour ce faire il me faut un moyen pour récupérer le numéro de la ligne de la cellule dans laquelle est executée la fonction.
    J'ai déjà cherché avec Google, sans résultats, voilà pourquoi je suis là.

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Beh heureusement que finalement tu à mis ta fonction, ont aurrais pu tournés en rond pendant 25 ans.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function seuil()
    dim lin as integer, thr as integer
        lin = ActiveCell.row
        thr = 2
        'Le reste du code que j'ai pas regardé.  !
        '..........
    End Function
    et dans les cellules =seuil()
    A+
    Edit:
    J'ai supposé que thr était toujours égale à 2, sinon tu devrais quand même édité toutes tes cellules.

  10. #10
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci ça marche comme ça quand j'écris la fonction dans la cellule.
    Le seul problème, c'est que si je la copie vers le bas (en étirant), toutes les cellules affichent le même résultat, celui de la première cellule.

    Comme faire sans devoir écrire 1 par 1 =seuil() dans chaque cellule ?

    EDIT: j'ai vu ton édit, j'ai que quelques valeurs de thr différentes, c'est pas un problème d'éditer ça.

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Comme dit plus haut par Bidou, il faut utiliser Application.Caller.Row et non ActiveCell.Row.

    Cordialement,

    Tirex28/

  12. #12
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup à tous, c'est exactement ça, marche très bien maintenant...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/06/2013, 09h42
  2. Problème de case qui se change lors de la validation de ligne
    Par kamix003 dans le forum Sql Developer
    Réponses: 3
    Dernier message: 30/05/2012, 15h42
  3. fonction prédéfini qui retourne numéro de ligne selectionné ?
    Par khadi8 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 11/04/2012, 09h26
  4. [XL-2007] Recherchev avec numéro de ligne qui varie
    Par Loki83 dans le forum Excel
    Réponses: 3
    Dernier message: 05/09/2010, 11h47
  5. Réponses: 12
    Dernier message: 08/10/2008, 15h05

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