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 :

utiliser une worksheets comme variable d'une procédure E 2003


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut utiliser une worksheets comme variable d'une procédure E 2003
    Bonsoir à tous,

    Je voudrais utiliser une worksheets comme variable d'une procédure mais j'arrive pas à m'en resservir par la suite et surtout comment définir la feuille correspondante.

    Pour illustrer voici ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Sub mfNomActifs(cellule As Range, feuil As Worksheets)
     
     'selectionne le bon format à copier coller
    Worksheets("Sous jacents").Activate
    Range("B2").Select
    Selection.Copy
     
    feuil.Activate
    cellule.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
     
    End Sub
    Et voici le code pour l'utiliser ensuite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub essai()
     
    Dim cellules As Range
    Dim feuil As Worksheets
     
    feuil = Worksheets("Performance")
    Set cellules = Range("A2:A25")
     
    mfNomActifs cellules, feuil
     
    End Sub
    Je ne sais pas où est l'erreur.
    Si vous pouvez me donner un coup de main.

    Merci,
    Arnaud.

  2. #2
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    Bonjour,

    Pour contrer l'erreur, au lieu de passer en paramêtre la feuille, passe le nom:
    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
     Sub mfNomActifs(cellule As Range, feuil As String)
     
     'selectionne le bon format à copier coller
    Worksheets("Sous jacents").Activate
    Range("B2").Select
    Selection.Copy
     
    Worksheets(feuil).Activate
    cellule.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
     
    End Sub
    Sub essai()
     
    Dim cellules As Range
     
    Set cellules = Range("A2:A25")
     
    mfNomActifs cellules, "Performance"
     
    End Sub

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Boinjour,

    en règle générale, le "s" in fine stipule non un objet, mais une collection d'objets.
    Ainsi, la collection Controls, dont chaque élément est un "Control", etc...
    Worksheets est donc une collection dont chaque élément est une worksheet (sans s)
    Le paramètre feuil de ta procédure se référant à une feuille et non à la collection des feuilles, il est donc à définir "as Worksheet"

  4. #4
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    Merci pour ce petit résumé, en somme, Worksheets, ce sont les feuilles du classeur, et non UNE feuille?
    D'où : For Each Worksheet in WorksheetS ?

    Je l'utilise machinalement mais je n'ai pas vu dans le code la déclaration avec un S.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Boinjour,

    en règle générale, le "s" in fine stipule non un objet, mais une collection d'objets.
    Ainsi, la collection Controls, dont chaque élément est un "Control", etc...
    Worksheets est donc une collection dont chaque élément est une worksheet (sans s)
    Le paramètre feuil de ta procédure se référant à une feuille et non à la collection des feuilles, il est donc à définir "as Worksheet"
    Merci pour ce point mais ensuite comment je peux réutiliser la procédure ? notamment au niveau des déclarations de variables

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

Discussions similaires

  1. utiliser le resultat d'une formule comme variable
    Par Samy21 dans le forum Débuter
    Réponses: 5
    Dernier message: 01/02/2010, 09h52
  2. Réponses: 4
    Dernier message: 20/01/2010, 11h25
  3. utiliser une chaine comme variable
    Par Pitrivief dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/11/2009, 21h43
  4. Réponses: 1
    Dernier message: 01/08/2009, 10h54
  5. Réponses: 3
    Dernier message: 03/05/2006, 15h08

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