Fonction paramètre reference 3D
Bonjour,
J'essaie de créer une fonction ou une sub ayant en paramètre une référence 3D.
Mon problème est que je n'arrive pas à trouver comment définir ce paramètre.
J'ai essayé successivement:
as variant,
() as variant,
range,
() as range,
Pour le dernier j'y croyais beaucoup, mais rien à faire.
Quelqu'un sait-il comment se référence une référence 3D en VBA ?
merci à tous.
Bonjour,
Je ne suis pas sûr d'avoir compris.
Regardez l'exemple suivant si il répond à votre question :
Type struct3D
Column As Long
Row As Long
NomFeuille As String
End Type
Sub appelFonction()
Dim param3D As struct3D
With param3D
.Column = 3 'colonne "C"
.Row = 20
.NomFeuille = "Feuil1"
End With
MsgBox AdresseCellule(param3D)
End Sub
Function AdresseCellule(arg3D As struct3D) As String
AdresseCellule = Sheets(arg3D.NomFeuille).Range(Cells(arg3D.Row, arg3D.Column), _
Cells(arg3D.Row, arg3D.Column)).Address
End FunctionCordialement.
PMO
Patrick Morange
Bonjour,
Je reprends cette question car je n'ai pas trouvé.
je vais aussi préciser.
Je veux passer à une fonction une sélection 3D d'une plage de cellule de mes feuilles, mais je n'arrive pas à savoir quel type a cette sélection.
J'obtiens toujours "#VALEUR" comme erreur avant même d'entrer dans ma fonction.
Définition de la référence 3D:
Une référence qui se rapporte à la même cellule ou plage (plage : deux cellules au minimum d’une feuille de calcul. Une plage peut contenir des cellules adjacentes ou non adjacentes.) de cellules dans plusieurs feuilles est appelée une référence 3D (référence 3D : référence à une plage qui s’étend sur deux ou plusieurs feuilles de calcul d’un classeur.).
1.Cliquez sur la cellule dans laquelle vous voulez entrer la fonction.
2.Tapez = (signe égal), entrez le nom de la fonction, puis tapez une parenthèse ouvrante.
3.Cliquez sur l'onglet correspondant à la première feuille de calcul à référencer.
4.Maintenez la touche MAJ enfoncée et cliquez sur l'onglet correspondant à la dernière feuille de calcul à référencer.
5.Sélectionnez la cellule ou la plage de cellules à référencer.
6.Complétez la formule et appuyez sur ENTRÉE.
par exemple: j'entre comme formule =test(Feuil1:Feuil3!A1:A3)
et test est une fonction que j'ai défini comme :
Function test(sel As Range) As Single
pour info de dernière minute, j'ai essayé ce qui suit:
Function test(sel As Variant) As Single
MsgBox TypeName(sel)
MsgBox "coucou"
End Function
et à l'usage j'obtiens un message "error" puis le message "coucou"
donc variant semble pas mal, mais je ne sais pas comment faire pour l'utiliser ensuite ...
autre essai: (en commentaire, ce qui m'est retourné)
Function test(ParamArray sel() As Variant) As Single
MsgBox TypeName(sel) ' -> variant()
MsgBox UBound(sel) ' -> 0
MsgBox TypeName(sel(0)) ' -> error
MsgBox "coucou" ' -> coucou
End Function