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 :

Nommer ou sélectionner : trop de "consignes" dans mes macros ? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    industrie de l'habillement
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : industrie de l'habillement
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut Nommer ou sélectionner : trop de "consignes" dans mes macros ?
    Bonjour,

    J'apprends toute seule à faire des petites macros, et je pense que je répète des consignes.
    Quand je sélectionne une feuille de calcul ou bien une cellule, qu'est-ce qui stoppe la sélection et m'oblige à sélectionner à nouveau la feuille ou cellule ?
    Dans quel cas vaut-il mieux sélectionner ou nommer ?
    je mets mes commentaires sur ce qu'il me semble pourrais être corrigé .
    Pouvez-vous me conseillez svp afin d'optimiser ?

    Par avance merci


    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
    Sub Proto1()
    '
    ' Proto1 Macro
    ' insertion fiche de suivi Proto N° 1
    '
        Sheets("PROTO 1").Select
        ActiveWindow.SelectedSheets.Delete          ' mettre plutôt :   SelectedSheets.Delete   (la macro est dans le classeur)
                                                                       'OU : Sheets("PROTO 1").Delete
     
        Sheets("SUIVI MODELE").Visible = True      'suis-obligée d'afficher la feuille masquée pour pouvoir la recopier ?
        Sheets("SUIVI MODELE").Select                 'est-ce utile , vu que je la nomme à la ligne suivante ?
        Sheets("SUIVI MODELE").Copy Before:=Sheets("listes")
        ActiveWindow.SelectedSheets.Visible = False
     
        Sheets("SUIVI MODELE (2)").Select             'idem : est-ce utile vu que je la nomme à la ligne suivante ?
        Sheets("SUIVI MODELE (2)").Name = "PROTO 1"   
        Range("A1:E2").Value = "PROTO N° 1"
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf si l'on souhaite qu'une feuille ou une cellule particulière soit active, en VBA les méthodes Select, Activate sont à proscrire. Elles ne servent à rien et sont chronophages.
    Ainsi par exemple les deux lignes 10 et 11 de votre code publié peuvent être réduite à une seule ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("SUIVI MODELE").Copy Before:=Sheets("listes")
    Une feuille masquée peut être copiée sans problème tant que cela se passe dans le même classeur

    Il est toujours préférable également de préciser l'objet classeur lorsque vous manipuler des feuilles pour éviter les surprises si d'autres classeurs sont ouverts (lire éventuellement mon billet sur le sujet Excel VBA - La parentalité d’un objet)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Femme Profil pro
    industrie de l'habillement
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : industrie de l'habillement
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut
    Bonjour Philippe,

    Tout d'abord, merci de votre réponse...

    J'ai "nettoyé" mes macros et cela fonctionne bien; j'ai beaucoup plus de rapidité dans leurs exécutions :-)

    il me reste un "Select" ligne 8 que je n'arrive pas à supprimer ; si je ne fais pas ce Select, c'est la feuille "listes" qui s'affiche, et je souhaite qu'à la fin de l'exécution de la macro, ce soit la feuille ajoutée "PROTO 2" qui apparaisse à l'écran.

    Est-il possible de n'avoir qu'une seule ligne avec les lignes 6 et 7 svp?

    Par avance merci.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Proto2()
    '
    ' insertion Proto N° 2
    '
        Sheets("SUIVI MODELE").Copy Before:=Sheets("listes")
        Sheets("SUIVI MODELE (2)").Visible = True
        Sheets("SUIVI MODELE (2)").Name = "PROTO 2"
        Sheets("PROTO 2").Select          'je suis obligée de la sélectionner pour avoir son affichage à la fin de la macro ?
        Range("A1:E2").Value = "PROTO N° 2"
        ActiveSheet.Shapes.Range(Array("Button 1")).Delete            'je n'ai pas réussi à supprimer ActiveSheet
     
    End Sub

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 249
    Par défaut
    Hello,
    Normalement tu peux remplacer tes 4 lignes du Copy au Select par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Sheets("SUIVI MODELE").Copy Before:=Sheets("listes")
        ActiveSheet.Name = "PROTO 2"
    Amicalement, J.P

  5. #5
    Membre averti
    Femme Profil pro
    industrie de l'habillement
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : industrie de l'habillement
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut
    Bonjour Jurassic Pork,

    Merci pour le retour.

    J'ai testé, mais j'ai 2 soucis :
    1) la feuille est bien copiée en "SUIVI MODELE (2) " , mais elle reste masquée, comme l'est la matrice de création "SUIVI MODELE" que je veux garder masquée
    je suppose que je suis obligée de la rendre "Visible" après création copie?

    2) c'est le nom de la feuille "listes" qui est modifié, au lieu de celui de "SUIVI MODELE (2)"
    Je ne comprends pas pourquoi c'est "listes" qui devient ActiveSheet, mais c'est ce qui se passe.

    Est-ce que l'on peut faire se succéder 3 consignes sur une même ligne ?
    J'ai essayé avec des séparations "." ou "," ou ";", mais ça n'est pas accepté (cf ci-dessous svp).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets("SUIVI MODELE (2)").Visible = True
    Sheets("SUIVI MODELE (2)").Name = "PROTO 2"
    Sheets("PROTO 2).Select
     
    Sheets("SUIVI MODELE (2)").Visible = True.Name = "PROTO 2".Select     'essai qui n'est pas accepté

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    1) la feuille est bien copiée en "SUIVI MODELE (2) " , mais elle reste masquée, comme l'est la matrice de création "SUIVI MODELE" que je veux garder masquée
    je suppose que je suis obligée de la rendre "Visible" après création copie?
    A partir du moment où vous copiez un objet (ici la feuille), la copie hérite de toutes les propriétés de celui-ci donc oui, il faut rendre visible votre nouvel objet si toutes fois c'est votre souhait.

    2) c'est le nom de la feuille "listes" qui est modifié, au lieu de celui de "SUIVI MODELE (2)"
    Je ne comprends pas pourquoi c'est "listes" qui devient ActiveSheet, mais c'est ce qui se passe.
    Lorsque l'on effectue la copie d'une feuille, celle qui est copiée devient la feuille active. C'est exactement pareil si vous le faites manuellement.

    [EDIT]
    Lorsque l'on effectue la copie d'une feuille, celle qui est copiée devient la feuille active
    J'ai omis de préciser, à condition que la feuille qui a servi à la copie soit visible évidemment
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, teste comme ceci:

    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 Proto2()
    '
    ' insertion Proto N° 2
    '
        Sheets("SUIVI MODELE").Copy Before:=Sheets("listes")
     
        With Sheets("SUIVI MODELE (2)")
            .Visible = True
            .Name = "PROTO 2"
            Range("A1:E2").Value = "PROTO N° 2"
            .Shapes.Range(Array("Button 1")).Delete
            .Activate
        End With
    End Sub

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

Discussions similaires

  1. simple quote dans mes enregistrements
    Par pbatty1 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/04/2010, 14h58
  2. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  3. Placer des quote dans un champs
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 21/04/2005, 10h36
  4. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

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