IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème avec function


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Points : 54
    Points
    54
    Par défaut problème avec function


    J'aimerai créer un fonction qui me renvoi un objet de type Worksheet, selon un nom en paramètre. C'est a dire que si la sheets existe il me renvoi l'objet pointant vers celle-ci, sinon il en crée un nouvelle et me renvoi l'objet pointant vers cette nouvelle sheets.

    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    'Retourne la feuille nommé selon le paramètre sheetsName (soit une new soit celle déjà existante)
    Function GiveMeSheets(sheetsName As String) As Worksheet
        Dim oneSheets As Worksheet
     
        'Desactive les messages d'erreurs
        On Error Resume Next
     
        ' On cré un objet sheet selon le nom en paramètre
        Set oneSheets = ActiveWorkbook.Sheets(sheetsName)
     
        'Si il y a erreur, alors la feuille n'existe pas, sinon elle existe
        If Err <> 0 Then
            'Feuille inexistante, donc on la cré
            insertSheet (sheetsName) 'Cette function fonctionne correctement car la création a bien lieu
            Set oneSheets = ActiveWorkbook.Sheets(sheetsName)
        End If
     
        'Reactive les message d'erreurs
        On Error GoTo 0
     
        GiveMeSheets = oneSheets
    End Function
    Mais lorsque je fais appel a cette fonction j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    runtime-error '91':
    Object variable or With block variable not set
    Quelqu'un pourait-il m'expliquer le pourquoi du comment....

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Teste ça... mais je n'écrirais pas ça comme ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Function GiveMeSheets(sheetsName As String) As Worksheet
        Dim oneSheets As Worksheet
     
        'Desactive les messages d'erreurs
        On Error Resume Next
     
        ' On cré un objet sheet selon le nom en paramètre
        Set oneSheets = ActiveWorkbook.Sheets(sheetsName)
     
        'Si il y a erreur, alors la feuille n'existe pas, sinon elle existe
        If Err = 0 Then exit sub
        'Reactive les message d'erreurs
        On Error GoTo 0
     
        'Feuille inexistante, donc on la crée
        insertSheet (sheetsName) 'Cette function fonctionne correctement car la création a bien lieu
        Activesheet.name = sheetsName
        Set oneSheets = ActiveWorkbook.Sheets(sheetsName)
        GiveMeSheets = oneSheets
    End Function

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Points : 54
    Points
    54
    Par défaut
    hello, merci pour t'a réponse ouskel'n'or, j'ai essayé ta fonction mais elle ne fonctionne pas. Il me dit que je ne suis pas autorisé a quitter une fonction ou un sub.
    Si tu pense qu'il faudrait faire cela autrement dit le moi, c'est pas un problème si faut changer la fonction

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Remplace If Err = 0 Then exit sub
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Err = 0 Then exit function

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour


    Remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GiveMeSheets = oneSheets
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set GiveMeSheets = oneSheets


    bon après midi
    michel

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Points : 54
    Points
    54
    Par défaut
    Wééé, merci SilkyRoad, ca fonctione (avec ma fonction original aussi).

    Merci encore.

    Hé ouskel'n'or dis moi si t'as un meilleur code pour la fonction giveMeSheets

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function GiveMeSheets(sheetsName As String) As Worksheet
        Dim oneSheets As Worksheet
        On Error Resume Next
        Set GiveMeSheets = ActiveWorkbook.Sheets(sheetsName)
        On Error GoTo 0
        If GiveMeSheets Is Nothing Then
            ActiveWorkbook.Sheets.Add
            ActiveSheet.Name = sheetsName
            Set GiveMeSheets = Worksheets(sheetsName)
        End If
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec function call
    Par eleve_ingenieur_1987 dans le forum Simulink
    Réponses: 0
    Dernier message: 28/05/2011, 10h32
  2. [MySQL] Php : problème avec function mail()
    Par totoAussi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/05/2009, 19h45
  3. Problème avec function replace
    Par f.morgan3 dans le forum Services Web
    Réponses: 2
    Dernier message: 18/03/2008, 10h08
  4. [Dates] Problème avec Function
    Par pony99 dans le forum Langage
    Réponses: 8
    Dernier message: 21/11/2006, 14h13
  5. Réponses: 22
    Dernier message: 06/04/2006, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo