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 :

Couper / Coller plusieurs feuilles dans un nouveau classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut Couper / Coller plusieurs feuilles dans un nouveau classeur
    Bonjour,

    Je voudrai couper / coller dans un nouveau classeur plusieurs feuilles.

    Je ne connais pas le nombre de feuilles ni leur nom et je les cherche avant de lancer le déplacement des feuilles.

    J'utilise le code suivant en macro automatique pour comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Array("Feuille1", "Feuille2", "Feuille3", "Feuille4")).Move
    Ce code marche sans problèmes alors je modifie ce code pour mon projet

    Je voudrai donc construire une variable String avec les noms des feuilles à déplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    '----------- totfeuill est le nombre de feuille du classeur
    '----------- feuildeplass et le nombre de feuilles à déplacées
    '----------- Chr(34) est le code ASCII de " pour construire la variable
     
    For i = totfeuill To totfeuill - feuildeplass Step -1
            lesfeuill = lesfeuill + Sheets(i).Name + Chr(34) + "," + Chr(34)
    Next i
     
    lon = Len(lesfeuill)
    lesfeuill = Left(lesfeuill, lon - 3)  '--- Pour supprimer les 3 caractère de fin
     
    Sheets(Array(lesfeuill)).Move
    Lorsque je fais tourner cette macro, j'ai un message d'erreur

    L'indice n'appartient pas à la selection
    Pourtant, lorsque je lis la variable, elle est correctement construite.

    Peut être que cela viens de Chr(34) qui est mal compris par VBA, mais cela me semble étrange. Avez-vous une méthode pour construire ma variable à moins que Array n'accepte pas de variable en paramètre ?

    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
    Ton problème vient du tableau : On ne peut pas créer un tableau ainsi.
    Ce que tu peux faire c'est créer une liste de tes feuilles puis, convertir cette liste en tableau avec split, puis parcourir ce tableau et copier les feuilles une par une.
    Attention, quand tu utilises Move, tu déplaces ta feuille, tu ne la copies pas.
    Avec copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = totfeuill To totfeuill - feuildeplass Step -1
            lesfeuill = lesfeuill + Sheets(i).Name & ","
    Next i
    lesfeuill = Left(lesfeuill, Len(lesfeuill) -1)
    Tablo = Split(lesfeuill, ",")
    For i = 0 to Ubound(Tablo) -1
             Workbooks("Classeur1").Sheets(Tablo(i)).Copy After:=Workbooks("Classeur2").Sheets.count
    Next
    Tu dis
    A+

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    Merci de ton aide.

    Je voulais utiliser Move pour déplacer toutes mes feuilles en une seule fois, c'est vrai que si ce n'est pas possible alors……

    Je vais utiliser ta solution, la simplicité et l'efficacité.
    Merci

    A+

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

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  2. [XL-2007] Copier-coller plusieurs feuilles dans un autre classeur (xlsm=>xlsx)
    Par Cesaror dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/06/2012, 11h55
  3. [XL-2010] séparation et transfert de colonnes dans plusieurs feuilles d'un nouveau classeur
    Par zohaxel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/03/2012, 09h47
  4. Copies de feuilles dans un nouveau classeur
    Par malkkom dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/09/2007, 10h45
  5. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 22h38

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