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 pour copier feuille voulu d'un classeur fermé sur classeur ouvert


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Macro pour copier feuille voulu d'un classeur fermé sur classeur ouvert
    Bonjour a toutes et a tous,

    Nouveau sur le forum et novice en VBA je me permet de vous demander un service.
    J'ai fais le tour de ma question sur la toile et rien trouvé de concret.
    je suis utilisateur d'excel 2010.

    Alors, dans le cadre du boulot, je suis sur mon fichier excel A et je voudrais mettre en place une macro qui :
    - m'ouvre un fichier excel B (il change tout le tps de nom et d'emplacement)
    - me demande qu'elle feuille je souhaite copier du B sur mon A
    - me copie la feuille souhaité en m'en creant une nouvelle sur le A et me demande quelle nom je veux lui donner
    - et enfin me ferme le fichier B

    Merci a vous toutes et tous
    En attente de vous lire rapidement

  2. #2
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    Essai ce qui suit pour voir si ça te convient.
    voici les trois boites de dialogue qui vont s'ouvrir successivement :
    1 demande quel classeur est à ouvrir
    2 demande le nom de la feuille à copier
    3 demande le nouveau nom de la feuille une fois copiée

    Il y a un gestionnaire d'erreur qui permet de reprendre au cas où le nom de la feuille est faux.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    Sub RecupFeuille()
     
        Dim Cl As Workbook
        Dim Fe As Worksheet
        Dim Fichier As String
        Dim NomFeuille As String
     
        'ouvre la boite de dialogue pour le choix du fichier
        With Application.FileDialog(1)
     
            .Title = "Choisir un fichier Excel !"
     
            .InitialFileName = "D:\"
     
            'si un choix a été fait, affecte le
            'chemin à la variable sinon, fin !
            If .Show = -1 Then
     
                Fichier = .SelectedItems(1)
     
            Else
     
                Exit Sub
     
            End If
     
        End With
     
        'ouvre le classeur
        Set Cl = Workbooks.Open(Fichier)
     
    Reprise:
     
        'demande le nom de la feuille à copier
        NomFeuille = InputBox("Indiquez le nom de la feuille que vous souhaitez copier !", _
                              "Choisir la feuille à copier.")
     
        'si le nom est faux demande pour un autre essai si non, ferme le classeur
        'qui vient d'être ouvert et fin, si oui, reprend à la demande du nom de la feuille
        On Error Resume Next
        Set Fe = Cl.Worksheets(NomFeuille)
     
        If Err.Number <> 0 Then
     
            If MsgBox("Cette feuille est inexistante dans le classeur " & Cl.Name _
                      & vbCrLf _
                      & vbCrLf _
                      & "Voulez-vous réessayer ?", _
                      vbExclamation + vbYesNo, _
                      "Feuille introuvable !") = vbYes Then
     
                GoTo Reprise
     
            Else
     
                Cl.Close
                Exit Sub
     
            End If
     
        End If
     
        'fige
        Application.ScreenUpdating = False
     
        'active la feuille à copier
        Fe.Activate
     
        'demande le nouveau nom
        NomFeuille = ""
        NomFeuille = InputBox("Indiquez le nouveau nom de la feuille qui vient d'être copiée !", _
                              "Renommer.")
     
        With ThisWorkbook
     
            'copie la feuille
            ActiveWindow.SelectedSheets.Copy , .Worksheets(.Worksheets.Count)
     
            'et la renomme
            If NomFeuille <> "" Then
     
                .Worksheets(.Worksheets.Count).Name = NomFeuille
     
            End If
     
        End With
     
        'ferme le classeur
        Cl.Close
     
        'rafraîchi
        Application.ScreenUpdating = True
     
    End Sub
    Hervé.

  3. #3
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 656
    Points
    1 656
    Par défaut
    Salut,

    J'ai pas testé ce qu'a fait Theze mais je pense que c'est très bien. Pour m'amuser et pour m'entrainer, je l'ai fait aussi. Je te laisse voir quelle version tu préfères.
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub macro1()
     
    Dim nom_classeurB As String
    Dim Classeur_B As Workbook
    Dim nom_feuilleB As String
    Dim ws As Worksheet
    Dim Feuille_B As Worksheet
    Dim rep_ok As Boolean
    Dim nouveau_nom As String
     
    rep_ok = False
     
     
    With Application.FileDialog(msoFileDialogOpen)
        .InitialFileName = "C:\"
        .Title = "Veuillez sélectionner le fichier"
        .ButtonName = "Choisir ce classeur"
        .Show
     
        If .SelectedItems.Count = 1 Then
            nom_classeurB = .SelectedItems(1)
        Else
            msgErr = "Vous n'avez pas choisi de fichier"
            MsgBox msgErr, vbInformation, "Arrêt"
            End
        End If
     
    End With
     
    Set Classeur_B = Workbooks.Open(nom_classeurB)
     
    Do While rep_ok = False
        nom_feuilleB = InputBox("Quelle est le nom de la feuille à copier ?")
     
        For Each ws In Classeur_B.Worksheets
            If ws.Name = nom_feuilleB Then
                Set Feuille_B = ws
                rep_ok = True
            End If
     
        Next
     
        If rep_ok = False Then
            MsgBox "Nom de feuille introuvable", vbInformation, "Oupss!"
        End If
     
    Loop
     
    nouveau_nom = InputBox("Quel est le nouveau nom de la feuille")
     
    Feuille_B.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
     
    Classeur_B.Close False
     
    With ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
        .Name = nouveau_nom
        .Select
    End With
     
    End Sub
    PS: J'ai essayé d'offrir une autre méthode que celles utilisées par Theze, notamment au niveau du GoTo (moi, on m'a dit "PAS DE GOTO!", mais c'est 2 école différentes)

    PPS(et pas PS2): J'espère que le fait que je poste une autre façon de faire ne te dérange pas Theze.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour Theze et nchal,

    Je vous suis très reconnaissant de l'aide que vous m'avez apporté.
    Vos macros sont toutes deux, en point de vu utilitaire, semblables et parfaitement fonctionnelles.

    Je vous remercie beaucoup car mon problème est résolu
    Je me permettrais de revenir vers vous si je rencontre d'autres problèmes.

    Encore merci 20/20

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

Discussions similaires

  1. macro pour copier une feuille d'un classeur à un autre
    Par rihab92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/05/2015, 21h05
  2. [XL-2002] Macro pour copier une feuille dans un autre classeur
    Par JBeaunez dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/02/2012, 21h46
  3. [XL-2007] Macro pour copier une feuille
    Par francky62000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2011, 16h36
  4. une seule macro pour plusieurs feuilles d'un même classeur
    Par pouldom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/12/2010, 11h38
  5. [XL-2003] Macro pour copier une cellule d'un classeur à un autre sous condition
    Par mairiemeudon dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 14/06/2010, 15h28

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