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 :

Copier un onglet d'un classeur A dans un classeur B selectionné [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    chef d'atelier
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : chef d'atelier

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Par défaut Copier un onglet d'un classeur A dans un classeur B selectionné
    Bonjour à tous,
    J'ai besoin de mettre à jour une qte astronomique de fichiers au coup par coup.
    Pour ce faire, j'ai un fichier A dont un onglet me sert de "modèle"
    Je souhaite choisir un fichier B avec GetOpenFilename, y insérer un nouvel onglet et y coller le "modèle" précédemment copier.

    Ma procédure est d'ouvrir le fichier A, de lancer la macro qui copie le "modèle", ouvre la boite de dialogue pour sélection du fichier B, y insére une feuille, y coller le "modèle".
    J'ai bien dégrossi le truc mais je ne trouve pas comment travailler sur le fichier B que je viens de sélectionner , la feuille que j'insère se crée dans le fichier A

    Même si j'utilise souvent de petites macros, je ne suis pas un as du VBA et là... je sèche.

    Par avance merci aux généreux contributeurs

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    une piste :
    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
    34
    35
    36
     
    Sub Test()
     
        Dim Cls As Workbook
        Dim Fe As Worksheet
        Dim Fich As String
     
        Set Fe = ThisWorkbook.Worksheets("Feuil1")
     
        Fich = Fichier("C:\Mon Dossier\") '<-- adapter !
     
        Set Cls = Workbooks.Open(Fich)
     
        Fe.Copy Cls.Sheets(Cls.Sheets.Count)
     
    End Sub
     
    Function Fichier(Dossier As String) As String
     
        With Application.FileDialog(3) 'fichiers
     
            .Filters.Clear
            .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
            .InitialFileName = Dossier
            .AllowMultiSelect = False '1 seul
            .Show
     
            If .SelectedItems.Count <> 0 Then
                Fichier = .SelectedItems(1)
            Else
                Fichier = ""
            End If
     
        End With
     
    End Function

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    chef d'atelier
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : chef d'atelier

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Par défaut
    Merci Theze, je regarde à ta piste dès que possible mais comme je n'aime pas trop recopier sans comprendre et que je ne demande qu'à apprendre, pourrais tu, s'il te plait, donner quelques explications sur la traduction de tout ça.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Commentaire dans le code :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Sub Test()
     
        Dim Cls As Workbook
        Dim Fe As Worksheet
        Dim Fich As String
     
        'défini la feuille à copier qui se situe dans le classeur contenant cette macro en utilisant une variable feuille
        Set Fe = ThisWorkbook.Worksheets("Feuil1") 'le nom de la feuille est à adapter bien sûr !
     
        'appelle la fonction pour récupérer le classeur à ouvrir
        Fich = Fichier("C:\Mon Dossier\") 'adapter le chemin à tes besoins !
     
        'traite la non sélection d'un classeur (sortie de procédure)
        If Fich = "" Then Exit Sub
     
        'utilise une variable objet "Classeur" pour ensuite travailler avec
        Set Cls = Workbooks.Open(Fich)
     
        'copie la feuille dans le classeur venant d'être ouvert et en dernière position
        Fe.Copy , Cls.Sheets(Cls.Sheets.Count) '<-- là, j'avais homis la virgule pour placer la feuille au bon endroit :-(
     
    End Sub
     
    Function Fichier(Dossier As String) As String
     
        With Application.FileDialog(3) 'fichiers
     
            'seuls les classeurs avec les extensions précisées apparaîtront
            .Filters.Clear
            .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
     
            .InitialFileName = Dossier 'ouvre sur le dossier passé en argument
            .AllowMultiSelect = False 'ne permet qu'une seu1e sélection
            .Show 'affiche la boite
     
            'si sélection il y a, passe le chemin à la fonction sinon retourne une chaine vide
            If .SelectedItems.Count <> 0 Then
                Fichier = .SelectedItems(1)
            Else
                Fichier = ""
            End If
     
        End With
     
    End Function

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    chef d'atelier
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : chef d'atelier

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Par défaut
    Pinaize, j'y crois pô

    Ça marche trop bien

    Même si j'ai pas bien compris le "adapter le chemin à tes besoin" puisque je n'ai rien adapté du tout et que ça roule

    Et comme bien sûr, j'ai un 2ème onglet à copier/coller faut que je recopie quelle séquence ?

    Grand merci Ô Theze.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    chef d'atelier
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : chef d'atelier

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Par défaut
    Bon, tout est Ok, j'ai compris le "adapter le chemin", j'ai ajouter mon 2ème onglet.
    C'est parfait

    dois-je clôturer le sujet somewhere ?

    a yé

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/11/2014, 11h54
  2. [XL-2007] Lire dans un classeur depuis un autre classeur
    Par Kimy_Ire dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2013, 18h30
  3. Réponses: 1
    Dernier message: 28/11/2011, 19h48
  4. [XL-2003] Copier le contenu de classeur Excel dans un classeur Excel unique
    Par albibak dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/01/2010, 11h47
  5. récuperer des données de classeurs fermés dans un classeur
    Par peygase83 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/02/2009, 00h03

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