Appel d'une fonction

Résolu
Olfactif Basic Messages postés 2 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 25 mai 2007 - 23 mai 2007 à 17:31
Olfactif Basic Messages postés 2 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 25 mai 2007 - 25 mai 2007 à 10:19
Bonjour,
J'essaie actuellement d'exploiter des tableaux de données sous Excel. J'ai réalisé une macro avec mes maigres connaissances, qui me premet de réaliser des opérations sur ces tableaux. Ces tableaux étant de tailles conséquentes (au moins 100 lignes * 1000 colonnes) je considère un tableau par feuille.
Dans ma macro j'ai besoin de faire un test sur l'existence d'une feuille :

Dim W As Worksheet
    On Error Resume Next
    Set W = ThisWorkbook.Worksheets(feuille)
    On Error GoTo 0
    '(W = Nothing quand l'objet attribué à la variable n'existe pas)
    If Not W Is Nothing Then
            MsgBox "La feuille existe dans le classeur."
        Else
            MsgBox "La feuille n'existe pas dans le classeur."
            End If

Pour éviter de reproduire de nombreuses fois ces lignes dans ma macro je voudrais les utiliser comme une fonction ou procédure, un truc du style :

Dim feuille1 As worksheet
Test_existence feuille1

Et que la fonction me renvoie 1 si la feuille existe et 0 sinon...

Merci d'avance!

3 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 mai 2007 à 17:42
Salut,
Private Function Test_existence(ByVal NomFeuille As String) As Boolean
        Dim W As Worksheet
    On Local Error Resume Next
    Set W = ThisWorkbook.Worksheets(NomFeuille)
    On Error GoTo 0
    '(W = Nothing quand l'objet attribué à la variable n'existe pas)
    If Not W Is Nothing Then
            Test_existence = True
        Else
            Test_existence = False
        End If
End Function

Exemple :
Msgbox Test_existence(feuille)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~

nouveau Forum ! Exclusivement Office / VBA
                                                                                                                    
                                                                                          
3
cs_GigaCool Messages postés 43 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 15 décembre 2008
23 mai 2007 à 17:46
je crois que tu as déja écris ta fonction mais il faut juste faire ceci :

public function FeuilleExiste(feuille as string) as boolean

Dim W As Worksheet
    On Error Resume Next
    Set W = ThisWorkbook.Worksheets(feuille)
    On Error GoTo 0
    '(W = Nothing quand l'objet attribué à la variable n'existe pas)

    If Not W Is Nothing Then
                         FeuilleExiste =true 
        Else
                   FeuilleExiste = false

    End If
end function


Cette function prendra true si la fauille existe ; il te suffira donc de l'appel

dim test as boolean

test = FeuilleExiste("feuille1")


if test = true then
msgbox " la feuille exite"
else
msgbox " elle n'existe pas
end if
3
Olfactif Basic Messages postés 2 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 25 mai 2007
25 mai 2007 à 10:19
Merci, vos deux solutions marchent niquel !
(pour info, j'avais un problème dans la déclaration de ma fonction...)
0
Rejoignez-nous