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 :

Activer une feuille de calcul


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Billets dans le blog
    1
    Par défaut Activer une feuille de calcul
    Bonjour,

    L'aide du site, comme Microsoft, dit "on peut" mais s'abstient de dire "Comment" à un endroit évident.

    Mon code testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function changerFll(Fl As String) As String
        ' récupération de la feuille active
        changerFll = ActiveSheet.Name
        Worksheets(Fl).Activate
    End Function 'changerFeuille(Fl As Sring) As Sheets
    Réponse de vba sur worksheets(Fl).activate : erreur 1004


    Fl : chaine de caractère obtenue par copie du label de la feuille à activer.

    code pour controler ma fonction :

    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
    24
    25
    26
    27
    28
    29
    30
    Sub Macro1()
    '
    ' Macro1 Macro
    '
        Dim titreBx As String, Ou As String, Fl As String
        Dim Msg As String, RC As String, msgBx As Integer
        RC = Chr(10)
        Ou = "B8"
        'Fl = "mixte 4"
        Fl = "Patton"
        titeBx = "lireCllFll(Fl, Ou)"
        Msg = lireCllFll(Fl, Ou)
     
        'msg = MsgBox(lireCll(Ou), vbOKOnly + vbInformation, titreBx)
    End Sub
     
    '   Lecture du contenu de la 1ère cellule de la zone Ou de la feuille Fl
    '   1/  Est-il utile de changer de feuille active ?
    '   2/  Avec la syntaxe flOu = Sheets(Fl).name&!"&Ou : échec de Range(flOu) ?
    Function lireCllFll(Fl As String, Ou As String) As String
        ' essai du cas 2/
        '   Dim flOu As String, msg As Integer
        '   flOu = Sheets(Fl).Name & "!" & Ou
        '   lireCllFll = Range(Fl).Value
        '   msg = MsgBox(lireCellFl, vbOKOnly + vbInformation, flOu)
        ' essai cas 1
        Dim flInit As String
        fllinit = changerFll(Fl)
        lireCllFll = lireCll(Ou)
    End Function 'lireCllFll(Ou As String) As String

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    VBA n'aime pas trop réaliser des actions dans les Function.
    Normalement, les Function servent seulement à manipuler des valeurs. Il y a beaucoup d'actions qu'il n'est pas recommander d'y faire certaines commandes.
    Il faudrait peut-être que tu songes à en faire un Sub.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Bonjour,


    Tes fonctions sont dégueux... Mais bon, tu codes comme tu veux.

    Pour répondre à ton problème de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(%variable%).Activate
    C'est dû au fait que pour activer une feuille via son nom d'onglet, il faut faire appel à la collection des Sheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim nomFeuille as String
    nomFeuille = "Feuil1"
     
    Sheets(nomFeuille).Activate
    Et là c'est bon !


    Slooby

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, sans oublier le CodeName

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Slooby Voir le message
    C'est dû au fait que pour activer une feuille via son nom d'onglet, il faut faire appel à la collection des Sheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim nomFeuille as String
    nomFeuille = "Feuil1"
     
    Sheets(nomFeuille).Activate
    Et là c'est bon !
    Je ne pense pas que ce soit ce que r.mnr veut faire.
    D'après ce que je comprends de sa fonction, il veut qu'elle active une feuille dont le nom est transmis en paramètre et renvoie le nom de la feuille qui était activée auparavant.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Ceci fonctionne (le classeur cible doit bien évidemment être actif avant d'activer la feuille) :
    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
     
    Sub Test()
     
        Dim F As String
     
        F = "Feuil2"
     
        MsgBox changerFll(F)
     
    End Sub
     
    Function changerFll(Fl As String) As String
     
        ' récupération de la feuille active
        changerFll = ActiveSheet.Name
        Worksheets(Fl).Activate
     
    End Function
    Mais comme le dit Menhir, il est préférable de ne pas exécuter d'action dans une fonction donc, je verrai plutôt :
    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
     
    Sub Test()
     
        Dim F As String
     
        F = "Feuil2"
     
        MsgBox changerFll(F)
        Worksheets(F).Activate
     
    End Sub
     
    Function changerFll(Fl As String) As String
     
        ' récupération de la feuille active
        changerFll = ActiveSheet.Name
     
    End Function
    Tes fonctions sont dégueux... Mais bon, tu codes comme tu veux.
    Je ne vois pas l'utilité de l'agresser de cette façon, des conseils sur une méthode de codage serait plus sympa et surtout, plus constructif !

    C'est dû au fait que pour activer une feuille via son nom d'onglet, il faut faire appel à la collection des Sheets
    Si c'est pour activer une feuille de calcul, ce que je suppose, c'est exactement ce qu'il fait !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Worksheets(Fl).Activate

  7. #7
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Billets dans le blog
    1
    Par défaut Fonctions dégueulassas
    Bonjour et merci

    Que mes fonctions soient dégueulasses, c'est possible, mais cette critique est inutile tant que tu ne dis pas pourquoi.

    Je vais tester le code que tu proposes.
    Merci


    Citation Envoyé par Slooby Voir le message
    Bonjour,


    Tes fonctions sont dégueux... Mais bon, tu codes comme tu veux.

    Pour répondre à ton problème de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(%variable%).Activate
    C'est dû au fait que pour activer une feuille via son nom d'onglet, il faut faire appel à la collection des Sheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim nomFeuille as String
    nomFeuille = "Feuil1"
     
    Sheets(nomFeuille).Activate
    Et là c'est bon !


    Slooby
    Désolé, que mes fonctions soient dégueu, c'est possible, en quoi elles sont dégueu

  8. #8
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Billets dans le blog
    1
    Par défaut C'est exactement ce que je souhaite faire
    Bonjour et merci Menhir
    Tu as parfaitement décrit ce que je souhaite faire avec cette fonction.
    Elle ne concerne que le classeur actif.


    Citation Envoyé par Menhir Voir le message
    Je ne pense pas que ce soit ce que r.mnr veut faire.
    D'après ce que je comprends de sa fonction, il veut qu'elle active une feuille dont le nom est transmis en paramètre et renvoie le nom de la feuille qui était activée auparavant.

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

Discussions similaires

  1. Activer une feuille ?
    Par celtix dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/05/2007, 18h14
  2. [VBA-E97]Code pour déprotéger une feuille de calcul
    Par blaiso dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/04/2007, 11h30
  3. [VBA-E] Nommer chemin d'accès dans une feuille de calcul.
    Par BRUNO71 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/03/2007, 13h30
  4. [VBA-E] Passer d'un contrôle à l'autre avec tab dans une feuille de calculs
    Par small_heart dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/02/2007, 20h57
  5. Contrôles (CheckBox) sur une feuille de calcul
    Par yogyx dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/12/2006, 09h54

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