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 :

Copie plusieurs feuilles dans un nouveau Workbook [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 108
    Par défaut Copie plusieurs feuilles dans un nouveau Workbook
    Bonjour à tous,

    J'essaie de faire une petite macro pour la copie de plusieurs feuilles dans un seul nouveau workbook. Je me suis inspiré de l'enregistreur de macro, mais impossible de le faire.

    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
    31
    32
    33
     
    Dim cell As Excel.Range
        Dim wksSheet As Worksheet
        Dim lNbrSheet As Long
        Dim lCounter As Long
        Dim strSelect As String
     
        lNbrSheet = shtDefPrin.Range("rngListSheets").Cells.Count
     
        lCounter = 1
     
     
        For Each cell In shtDefPrin.Range("rngListSheets")
            For Each wksSheet In ThisWorkbook.Worksheets
                If cell.Value = wksSheet.Name Then
                    If lCounter = 1 And lNbrSheet = 1 Then
                        strSelect = """" & wksSheet.Name & """"
                        lCounter = lCounter + 1
                    ElseIf lCounter = 1 And lNbrSheet > 1 Then
                        strSelect = """" & wksSheet.Name & """, """
                        lCounter = lCounter + 1
                    ElseIf lCounter > 1 And lNbrSheet > lCounter Then
                        strSelect = strSelect & wksSheet.Name & """, """
                        lCounter = lCounter + 1
                    ElseIf lCounter = lNbrSheet Then
                        strSelect = strSelect & wksSheet.Name & """"
                    End If
                End If
            Next
        Next
        if lCounter = lNbrSheet then
            Sheets(Array(strSelect)).Copy
        end if
    Explication du code
    Je parcours mon range qui contient un x nbr de cellule. 1 cellule contient un nom de feuille. Je peux en copier un nombre aléatoire. Ensuite je crontrole que le nom de feuille existe et je construis ma string.


    Si je stoppe sur la dernière ligne et que je remplace ma variable strSelect par son contenu ca fonctionne mais pas avec la varaiable.

    Merci d'avance de votre

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 49
    Par défaut
    Bonjour,

    Essaye feuilX au lieu du nom de la feuille

    Chez moi ca semble mieux marcher comme cela.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 108
    Par défaut
    Bonjour,

    je ne comprends pas votre solution. Qu'est-ce que vous entendez pas "feuilX" ?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    si je comprends ce que vbous voulez faire vous pouvez essayer ceci en l'adaptant à votre utilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim shtDefprin As Worksheet, classdest As Workbook, cellule As Range
    Set shtDefprin = ThisWorkbook.Sheets("Feuil1") 'adaptez cette ligne pour pointer la bonne feuille
    Set classdest = Workbooks.Add 'idem à changer pour un autre classeur peut être
     
    On Error Resume Next 'au cas où la feuille saisie n'existe pas
        For Each cellule In shtDefprin.Range("rngListSheets")
     
            ThisWorkbook.Sheets(cellule.Value).Copy before:=classdest.Sheets(1)
     
        Next
    On Error GoTo 0

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 108
    Par défaut
    En faite je suis obligé de faire la copie en une fois pour que les formules suivent correctement.

    Alors j'ai fait de la manière suivante:

    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
     
    Dim cell As Excel.Range
        Dim wksSheet As Worksheet
        Dim lNbrSheet As Long
        Dim lCounter As Long
        Dim stSelect() As String
     
        lNbrSheet = shtDefPrin.Range("rngListSheets").Cells.Count
        ReDim stSelect(lNbrSheet - 1)
     
        lCounter = 0
     
        For Each cell In shtDefPrin.Range("rngListSheets")
            For Each wksSheet In ThisWorkbook.Worksheets
                If cell.Value = wksSheet.Name Then
                    stSelect(lCounter) = wksSheet.Name
                    lCounter = lCounter + 1
                End If
            Next
        Next
        Sheets(stSelect).Copy
    Il faut utiliser un tableau dynamique.

    Merci à tous

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

Discussions similaires

  1. [Toutes versions] Copie de feuilles dans un nouveau classeur.
    Par francoisclb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2014, 13h36
  2. Copie d'une feuille dans un autre workbook
    Par Tsukaasa dans le forum Documents
    Réponses: 1
    Dernier message: 06/08/2008, 12h11
  3. Couper / Coller plusieurs feuilles dans un nouveau classeur
    Par Gamal le Celte dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2008, 15h30
  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, 11h45
  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, 23h38

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