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 :

Macro copier une collection d'onglet dans des autres classeurs


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Gestionnaire de production
    Inscrit en
    Août 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestionnaire de production
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2022
    Messages : 2
    Par défaut Macro copier une collection d'onglet dans des autres classeurs
    Bonjour,
    Je suis débutant en VBA. Je suis face à un problème que je n'arrive pas à résoudre seul.
    Mon pb est le suivant :
    J'ai un fichier "Fournisseur" qui contient la macro et un autre fichier "Suivi DA" qui lui est protégé par un mdp.
    Je souhaite via une macro contenue dans le fichier "Fournisseur", ouvrir le classeur "Suivi DA" et copier les feuilles dont le nom commande par DA puis refermer le fichier.
    En rechercher sur le net, je vu la macro ci-dessous. Mais je n'arrive pas à l'adapter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Exemple_3()
      Dim tbl()
      Dim sh As Worksheet
      Dim Elem As Integer
      For Each sh In ThisWorkbook.Worksheets
        If Left(sh.Name, 2) = "19" Then
          ReDim Preserve tbl(Elem): tbl(Elem) = sh.Name: Elem = Elem + 1
        End If
      Next
      Sheets(tbl).Copy
    End Sub
    J'arrive à ouvrir le fichier et saisir le mdp via la macro. Mais je n'arrive pas à copier les feuilles dont le nom commencent par DA.
    Voici ma macro (constituée d'informations trouvées sur le net) :

    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
    Sub vachercherongletetcopyonglet()
    Dim wkA As Workbook, wkB As Workbook
    Dim tbl()
    Dim sh As Worksheet
    Dim Elem As Integer
     
     
    Set wkA = ThisWorkbook
     
    Application.ScreenUpdating = False 'fige l'écran afin de ne pas voir de mouvement d'onglets
     
    Excel.Workbooks.Open Filename:="C:\Users\etche\Downloads\SUIVI DA et CDE", WriteResPassword:="EricMarc" 'ouvre le fichier B
     
      For Each sh In ThisWorkbook.Worksheets
        If Left(sh.Name, 2) = "DA" Then
        wkB.Sheets("Feuil2").Copy before:=wkA.Sheets(1)
          'ReDim Preserve tbl(Elem): tbl(Elem) = sh.Name: Elem = Elem + 1
          'Worksheets.Copy after:=wkA.Sheets("MACRO")
     
        End If
      Next
    End Sub
    Merci pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Bonjour.

    Essaye :

    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
    Sub vachercherongletetcopyonglet()
        Dim wkB As Workbook
        Dim sh As Worksheet
     
        Application.ScreenUpdating = False 'fige l'écran afin de ne pas voir de mouvement d'onglets
     
        Set wkB = Workbooks.Open(Filename:="C:\Users\etche\Downloads\SUIVI DA et CDE", WriteResPassword:="EricMarc") 'ouvre le fichier B
     
        For Each sh In wkB.Worksheets
     
            If Left(sh.Name, 2) = "DA" Then
                sh.Copy before:=ThisWorkbook.Sheets(1)
            End If
     
        Next sh
     
        Application.DisplayAlerts = False 'Évite les messages d'alerte à la fermeture du fichier.
        wkB.Close
        Application.DisplayAlerts = True
     
        Set wbk = Nothing
     
        Application.ScreenUpdating = True
     
    End Sub
    Ça devrait faire ce dont tu as besoin.
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Gestionnaire de production
    Inscrit en
    Août 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestionnaire de production
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2022
    Messages : 2
    Par défaut
    Bonjour,
    Merci pour ta réactivité. Cela fonctionne très bien.

    Deux questions pour aller un peu plus loin :
    - Est-il possible d'obtenir un seul onglet qui reprend l'ensemble des informations des différentes feuilles copiées les unes en dessous des autres ?
    - Deux messages apparaissent lorsque le fichier "Suivi DA" s'ouvre. Est il possible via la macro d'imiter le clic de la souris ?

    Par avance merci
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2016] Macro copier une collection d'onglet dans des autres classeurs
    Par Ju_69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2019, 18h37
  2. Comment copier une ligne de JTable dans un autre JTable
    Par coolanso dans le forum Composants
    Réponses: 2
    Dernier message: 03/11/2011, 08h36
  3. [XL-2007] Créer une macro pour supprimer des onglets dans un autre classeur
    Par nicosd54 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 10h01
  4. [XL-2003] Comment copier puis renommer un onglet dans un même classeur ?
    Par [ZiP] dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/04/2010, 17h45
  5. copier une partie d´un fichier dans un autre
    Par makohsarah dans le forum Langage
    Réponses: 8
    Dernier message: 23/08/2006, 09h53

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