Utilisation du nom d'une colonne comme paramètre d'une fonction personna

  • Initiateur de la discussion Initiateur de la discussion Narsil54
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Narsil54

XLDnaute Nouveau
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 "Temperature1", la cellule A2 "Temperature2", 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 "Temperature". Dans une autre colonne (colonne B par exemple), si je fais un traitement "basique" en m'appuyant sur le nom "Temperature", ça fonctionne très bien.
Par exemple, Temperature*2, ou un test SI (Temperature<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 "Temperature" 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 ?

Merci d'avance,
 
Re : Utilisation du nom d'une colonne comme paramètre d'une fonction personna

Bonjour Narsil,
Je pense qu'il faudrait une pièce jointe (sans données confidentielles) pour pouvoir t'aider.
Car comme ça, ton problème parait un peu flou ^^
A+
 
Re : Utilisation du nom d'une colonne comme paramètre d'une fonction personna

C'est vrai que le problème est pas évident à expliquer.
Voilà ma feuille test. La fonction en question est toute bête, mais son principe est le même que les fonctions plus compliquées que je veux utiliser.

Ce que je ne comprends vraiment pas dans cette feuille c'est que la colonne B fonctionne nickel mais pas la colonne D...

Merci d'avance,
 

Pièces jointes

Re : Utilisation du nom d'une colonne comme paramètre d'une fonction personna

RE,

Pourquoi ça ne fonctionne pas, et comment faire pour que ça fonctionne ?
Dans ta formule : =Fois2(A2) tu ne fais appel qu'à une seule cellule donc le calcul se fait
Dans ta formule : =Fois2(Temperature) tu fais appel à une plage ta fonction plante sur la 1ère ligne qui est du texte
Mais même en changeant la plage du nom, le calcul ne pourra pas se faire

J'ai trouvé, il faut utiliser l'adresse de la cellule appelante 😉
Code:
Function Fois2Spé(Rng As Range) As Long
  Fois2Spé = Cells(Range(Application.Caller.Address).Row, Rng.Column) * 2
End Function

A+
 
Dernière modification par un modérateur:
Re : Utilisation du nom d'une colonne comme paramètre d'une fonction personna

Re Narsil, Bonjour Bruno,
Je ne vois pas comment faire non plus pour que ta formule marche.
Par contre, pour ce qui est du problème que tu viens d'évoquer :

"Je n'ai pas trouvé de moyen automatique de nommer la cellule A1 "Temperature1", la cellule A2 "Temperature2", 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."
Pour ça tu peux Utiliser le code suivant :
PHP:
Sub Macro1()
'
' Macro1 Macro
'
Dim i&
For i = 1 To 500 Step 1
j = i - 1

If Range("A" & i).Value <> "" Then
    Range("A" & i).Select
    ActiveWorkbook.Names.Add Name:="Temperature" & j, RefersToR1C1:=Range("A" & i).Value
    ActiveWorkbook.Names("Temperature1").Comment = ""
 
    End If
       Next
End Sub
Ce code va te nommer automatiquement toutes les cellules en A sur ton document en fonction de leur numéro de lignes. Tu peux faire jouer les numéros en changeant la variable j.
En espérant que cela te serves ! 🙂
A+
 
Re : Utilisation du nom d'une colonne comme paramètre d'une fonction personna

Bonsoir le fil

Une variante "raccourcie" de la macro de VDAVID

Code:
Sub a()
Dim c As Range, i&
For i = 1 To 10 ' adapter ici selon besoin
Set c = Cells(i, 1): c.Name = "Temperature" & i
Set c = Nothing
Next i
End Sub

EDITION: Bonsoir BrunoM45
Je n'en doute pas 😉

J'ai vu le code de VDAVID, j'ai pensé à une variante allègée, j'ai posté.

J'avais bien lu ta proposition, mais n'y trouvant rien à y ajouter ou à modifier, je n'ai point posté à son sujet.
 
Dernière édition:
Re : Utilisation du nom d'une colonne comme paramètre d'une fonction personna

Bonsoir Bruno,
Je n'en doute pas ! ^^
J'ai envoyé mon message peu après ton EDIT, je n'avais pas vu que tu avais trouver la solution 🙂
PS : Bonsoir Staple, on sent le code du MEGA barbatuc qui est effectivement beaucoup plus simple 😛
Bonne nuit
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour