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 :

Enigme Worksheet_SelectionChange(ByVal Target As Range)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité(e)
    Invité(e)
    Par défaut Enigme Worksheet_SelectionChange(ByVal Target As Range)
    Bonjour à tous, je voulais vous faire part d’une énigme qui m’est apparus ce matin en voulant créer un nouveau classeur, grâce à un document déjà existant, qui contiendra une copie de la feuil1 déjà créée.

    J’ai donc piqué plein de bout de code de partout, avant de me rendre compte que mon classeur faisait une création d’un nouveau fichier excel tout seul. Alors que j’ai supprimé la quasi totalité des codes copiés…

    J’ai une bouton d’userform qui va commander le lancement de la création du document, ainsi que la copie de la feuil1.

    J’ai découvert le truc que je ne comprends pas en faisant du étape par étape…

    Voici donc comment ça se passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub CommandButton1_Click()
     
    Cells.Locked = False
    Range("A1:IV1").Locked = True
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Range("A1").Select
    Ensuite le pas à pas va dans un autre Sub alors que je ne lui ai jamais demandé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    Pour finalement revenir à celui d’avant qui continue ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Sheets("Feuil1").Copy 'C’est à ce niveau là que l’autre classeur est créé…
     
    Unload Me
     
    End Sub
    Avez-vous une idée du pourquoi du comment le nouveau classeur est créé ?

    Car après tout c’est ce que je voulais, mais je sais pas comment j’ai fais ni comment changer le nom du classeur qui s’appelle classeur1, puis 2 etc …

    Merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Dans ce que tu montre il n'y a rien qui crée un nouveau classeur, ça doit être ailleur.
    A+

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    La procédure ci dessus est lancée quand la cellule sélectionnée change dans la feuille de calcul, ce qui est le cas du fait de l'instruction

    Concernant la création du classeur l'aide de VBA apporte la réponse

    Si vous ne spécifiez ni l'argument Before ni l'argument After, Microsoft Excel crée un nouveau classeur contenant la feuille copiée.

    Le code ci dessous permet de renommer le classeur créé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveWorkbook.SaveAs Filename:="toto.xls", FileFormat:= _
            xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
            , CreateBackup:=False


    JP014

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut clecle69000 et Bonne et heureuse année
    Pas sûr de comprendre :
    Cells.Locked = False Libère les cellules
    Range("A1:IV1").Locked = True verrouille les cellules
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True active la protection de la feuille
    Range("A1").Select Sélectionne la cellule A1 et donc lance Worksheet_SelectionChange de la feuille, même si tu ne l'as pas voulue puis une fois cette macro finie, elle continue celle qu'elle était en train de faire à la ligne suivant la sélection.
    Sheets("Feuil1").Copy Crée une nouvelle feuille, copie de Feuil1 dans un nouveau classeur (Excel V2003)
    A+

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Si vous ne spécifiez ni l'argument Before ni l'argument After, Microsoft Excel crée un nouveau classeur contenant la feuille copiée.
    Ouppss...

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Merci beaucoup pour ces réponses, grace à vous et à un peu de débrouillardise, j'arrive à créer un nouveau fichier excel basé sur deux feuilles déjà existante avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets(Array("Feuil1", "Informations")).Copy
     
     
    ActiveWorkbook.SaveAs Filename:="toto.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    Bon bah vivement que j'aide plus de monde que l'inverse

    Merci encore

Discussions similaires

  1. [XL-2007] Macro "Activate" ou "SelectionChange(ByVal Target As Range)" ?
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2013, 14h34
  2. [Toutes versions] Private Sub Worksheet_Change(ByVal Target As Range) et protection
    Par Giantrick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2013, 10h21
  3. [XL-2007] petit soucis avec un Private Sub Worksheet_Change(ByVal Target As Range)
    Par dris974 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2011, 12h57
  4. SelectionChange(ByVal Target As Range)
    Par newsinfos dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2007, 11h00
  5. [VBA-E]evènement Change(ByVal Target As Range) et DDE
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/03/2007, 16h26

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