OVH Cloud OVH Cloud

Fonction personnalisée et paramétres

5 réponses
Avatar
loamar67
Bonjour

J'ai une fonction personnalis=E9 qui renvoi des infos sur une cellule
Public Function InfoCel(ByVal MaCellule As Object, infos)

Application.Volatile
Select Case infos
Case 1
InfoCel =3D MaCellule.Interior.ColorIndex
.=2E..
elle fonctionne tr=E8s bien qd je l'utilise sans la forme =3DinfoCel(B3;1)
Par contre, probl=E8me quand je veux l'utilise avec la formule Adresse :
=3DinfoCel(ADRESSE(EQUIV(B3;A1:A5);1);2)
Comment passer ou d=E9finir correctement le param=E9tre Macellule pour
que ca fonctionne dans les 2 cas !
Merci d'avance de vos aides
LOamar

5 réponses

Avatar
michdenis
Bonjour loamar67,

Tu peux transformer ta fonction personnalisée comme ceci :

'------------------------------
Public Function InfoCel(ByVal MaCellule As String, infos)

Application.Volatile
Dim Rg As Range
Set Rg = Range(Application.Caller.Parent.Name & "!" & MaCellule)

Select Case infos
Case 1
InfoCel = Rg.Interior.ColorIndex
End Select

End Function
'------------------------------


Salutations!



"loamar67" a écrit dans le message de news:
Bonjour

J'ai une fonction personnalisé qui renvoi des infos sur une cellule
Public Function InfoCel(ByVal MaCellule As Object, infos)

Application.Volatile
Select Case infos
Case 1
InfoCel = MaCellule.Interior.ColorIndex
....
elle fonctionne très bien qd je l'utilise sans la forme =infoCel(B3;1)
Par contre, problème quand je veux l'utilise avec la formule Adresse :
=infoCel(ADRESSE(EQUIV(B3;A1:A5);1);2)
Comment passer ou définir correctement le paramétre Macellule pour
que ca fonctionne dans les 2 cas !
Merci d'avance de vos aides
LOamar
Avatar
loamar67
Merci Michdenis
Mais...
J'avais déja une solution a peu près identique
Qd on passe le paramètre Macellule en valeur (byVAL), le cas
=infoCel(B3;1) ne fonctionne car le paramètre contient la valeur de
B3 et non pas l'adresse !
C un casse tete pour que ca fonctionne ds les 2 cas d'emploi
je ne voudrais pas non plus que l'on soit oblige d'écrire
=infoCel("B3";1) qui fonctionne qd macellule est "byval"...
Avatar
michdenis
Bonjour loamar67,

Ceci répond à ta demande :

'---------------------------------
Public Function InFoCel(MaCellule, Infos)
Dim Rg As Range
Application.Volatile
Select Case TypeName(MaCellule)
Case Is = "Range"
Set Rg = MaCellule
Case Is = "String"
Set Rg = Range(Application.Caller.Parent.Name & "!" & MaCellule)
End Select
Select Case Infos
Case 1
InFoCel = Rg.Interior.ColorIndex
End Select

End Function
'---------------------------------


Salutations!




"loamar67" a écrit dans le message de news:
Merci Michdenis
Mais...
J'avais déja une solution a peu près identique
Qd on passe le paramètre Macellule en valeur (byVAL), le cas
=infoCel(B3;1) ne fonctionne car le paramètre contient la valeur de
B3 et non pas l'adresse !
C un casse tete pour que ca fonctionne ds les 2 cas d'emploi
je ne voudrais pas non plus que l'on soit oblige d'écrire
=infoCel("B3";1) qui fonctionne qd macellule est "byval"...
Avatar
Alain CROS
Bonjour.

Essayer comme ça, mais je ne sais pas ce que fait le Case 2...

=InfoCel(INDIRECT(ADRESSE(EQUIV(B3;A1:A5;1);1));2)

Alain CROS

"loamar67" a écrit dans le message de news:
Bonjour

J'ai une fonction personnalisé qui renvoi des infos sur une cellule
Public Function InfoCel(ByVal MaCellule As Object, infos)

Application.Volatile
Select Case infos
Case 1
InfoCel = MaCellule.Interior.ColorIndex
....
elle fonctionne très bien qd je l'utilise sans la forme =infoCel(B3;1)
Par contre, problème quand je veux l'utilise avec la formule Adresse :
=infoCel(ADRESSE(EQUIV(B3;A1:A5);1);2)
Comment passer ou définir correctement le paramétre Macellule pour
que ca fonctionne dans les 2 cas !
Merci d'avance de vos aides
LOamar
Avatar
loamar67
Merci A tous
La solution de MICHDENIS marche très bien ! Bravo !
je n'avais pas pensé à tester avec TypeName !!
Slts