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 :

Excel 2010 - Utilisation du nom d'une colonne comme paramètre d'une fonction personnalisée


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Excel 2010 - Utilisation du nom d'une colonne comme paramètre d'une fonction personnalisée
    Bonjour à tous,

    J'ai un soucis lors de l'utilisation de fonctions personnalisées développées en VBA.

    Je veux développer une feuille de calcul qui fera les mêmes calculs sur toutes les lignes, avec une caractéristique calculée ou donnée par colonne.
    Les calculs seront nombreux, et pour que l'utilisateur puisse comprendre facilement comment ces calculs fonctionnent, je cherche à nommer les cellules pour rendre les formules plus lisibles.

    Mettons que la colonne A contienne une liste de températures.
    Je n'ai pas trouvé de moyen automatique de nommer la cellule A1 "T1", la cellule A2 "T2", etc... Je peux avoir un nombre très important de lignes, il n'est donc pas envisageable pour moi d'aller les nommer une par une à la main.

    Je me suis donc penché sur l'option de nommer les colonnes. Je nomme la première colonne "T". Dans une autre colonne (colonne B par exemple), si je fais un traitement "basique" en m'appuyant sur le nom "T", ça fonctionne très bien.
    Par exemple, T*2, ou un test SI (T<200; ... ) etc. : quand je duplique la formule vers le bas, le calcul dans chaque cellule de B prends la valeur dans la ligne qui lui correspond dans la colonne A. La correspondance en ligne fonctionne donc bien.

    Par contre, ça coince quand j'utilise des fonctions personnalisées développées en VBA. J'en ai beaucoup, qui sont toutes indépendants de la feuille de calcul : elles prennent un ou plusieurs arguments en paramètre et renvoient une valeur.

    Lorsque je passe le nom de la colonne "T" en paramètre de ces fonctions personnalisées, excel me renvoie une erreur de valeur.

    Pourquoi ça ne fonctionne pas, et comment faire pour que ça fonctionne ?

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Je n'ai pas trouvé de moyen automatique de nommer la cellule A1 "T1", la cellule A2 "T2", etc... Je peux avoir un nombre très important de lignes, il n'est donc pas envisageable pour moi d'aller les nommer une par une à la main.
    A mon avis, si tu utilises comme nom de plage nommée des adresses de cellules valides, tu vas droit dans le mur.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Certes, ces T1 etc. étaient des mauvais exemples. Mes noms ne seront pas de ce type là. Mettons qu'au lieu de nommer ma colonne "T" je la nomme "TempEntree" : sur ma feuille test le problème reste le même...

    Merci d'avance,

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Et si tu passes comme paramètre la référence à la plage plutôt que le plage nommée, cela fonctionne ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ca fonctionne avec les fonctions standard excel, que je mette le nom de la colonne ou la référence.

    Mais avec les fonctions personnalisées, ni l'un ni l'autre ne fonctionne : j'ai toujours l'erreur #Valeur! comme si le paramètre était incorrect.
    Tout se passe comme si lors de l'exécution du code VBA, Excel ne faisait pas la liaison entre nom de colonne et ligne à utiliser pour le calcul. Liaison qui se fait pourtant lors de l'utilisation de fonctions standards.

    J'ai beau chercher sur le net et les forums spécialisés, je ne trouve rien sur ce problème précis...

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Post nous le code de la fonction, car la impossible de t'aider

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'avoue, pas évident d'expliquer clairement mon problème.

    Ma fonction en question est toute bête, elle fait juste un nombre fois 2. Ci-joint la feuille excel complète. Ce que je ne comprends pas c'est que la colonne B fonctionne très bien, mais pas la colonne D...
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    La fonction fois2 attend un paramètre non typé (pas top)

    Je ne comprend pas bien pourquoi tu chercher à lui transmettre une colonne entière.
    Dans ton exemple si tu envois comme paramètre la cellule A2 cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function fois2(CelAdd As Range) As Long
     
    fois2 = CelAdd .Value * 2
     
    End Function

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pour info, solution trouvée en utilisant la méthode Application.Caller.Address :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function fois2spe(rng) As Long
     
    fois2spe = Cells(Range(Application.Caller.Address).Row, rng.Column) * 2
     
    End Function
    En passant le nom de la colonne en paramètre, ça fonctionne.

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

Discussions similaires

  1. Définir une colonne comme geom dans une vue
    Par mdubuis dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 01/09/2014, 15h31
  2. Réponses: 6
    Dernier message: 24/05/2013, 16h25
  3. [XL-2003] Trier une colonne de moyenne, rattachée à une colonne de noms
    Par floctc dans le forum Excel
    Réponses: 3
    Dernier message: 11/03/2011, 09h57
  4. Réponses: 11
    Dernier message: 08/07/2008, 13h16
  5. Réponses: 1
    Dernier message: 25/12/2007, 20h22

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