OVH Cloud OVH Cloud

function avec plusieurs type de variable

2 réponses
Avatar
Emcy
bonjours,

Je veux créer une fonction avec en entrée un paramettre : jusque là, pas de
souci :
Function Toto(MaFeuille)
....
End Function

le problème est que je voudrais que MaFeuille soit un string ou un sheets
comment faire ?

je voudrais un truc du genre :
Function Toto(MaFeuille As String or Sheets) As Boolean

On error Goto Fin
Toto = True

If MaFeuille Is String Then 'type string detecté
Sheets(MaFeuille).Select
Else 'type sheets detecté
MaFeuille.Select
End If

Exit Function
Fin :
Toto = False

End Function

2 réponses

Avatar
Emcy
j'ai trouvé une méthode pour le faire, qu'en pensez-vous :
y a t-il une meilleur méthode ?

Option Explicit

Function Toto(MaVariable As Variant) As Boolean

If TypeOf MaVariable Is Object Then
On Error GoTo ErreurObjet
Sheets(MaVariable.Name).Select

Else
On Error GoTo ErreurString
Sheets(MaVariable).Select
End If

Exit Function

ErreurObjet:
Err.Number = 10
Err.Description = "Erreur sur le type Objet"
Err.Raise 10
MsgBox ("Erreur n° : " + Str(Err.Number) + vbCr + "Description : " +
Err.Description)
Exit Function

ErreurString:
Err.Number = 11
Err.Description = "Erreur sur le type String"
MsgBox ("Erreur n° : " + Str(Err.Number) + vbCr + "Description : " +
Err.Description)
Err.Raise 11

End Function

Sub main()

Dim Erreur As Boolean
Dim MaFeuille As Object

On Error GoTo Resume Next
Erreur = Toto("Feuil4")

Set MaFeuille = Sheets("Feuil1")
Erreur = Toto(MaFeuille)

Set MaFeuille = Range("A1")

Erreur = Toto(MaFeuille)

End Sub
Avatar
michdenis
Bonjour Emcy,

Si tu veux passer le nom d'une feuille comme paramètre d'une fonction, il y a ceci :


Et pour appeler cette fonction
Toto activesheet.name

OU

Toto "NomDeLaFeuille"


'--------------------------
Function Toto(MaFeuille As String or Sheets)

Dim GestionErreur As String
On error goto Gestionerreur

With worksheets(MaFeuille)
.select
End with

Exit Function
GestionErreur:
Msgbox Err.Number & " : " & err.description
err=0
End Function
'--------------------------


Salutations!



"Emcy" a écrit dans le message de news:
bonjours,

Je veux créer une fonction avec en entrée un paramettre : jusque là, pas de
souci :
Function Toto(MaFeuille)
....
End Function

le problème est que je voudrais que MaFeuille soit un string ou un sheets
comment faire ?

je voudrais un truc du genre :
Function Toto(MaFeuille As String or Sheets) As Boolean

On error Goto Fin
Toto = True

If MaFeuille Is String Then 'type string detecté
Sheets(MaFeuille).Select
Else 'type sheets detecté
MaFeuille.Select
End If

Exit Function
Fin :
Toto = False

End Function