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 :

Extraire une feuille d'un classeur fermé vers un classeur ouvert


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Points : 73
    Points
    73
    Par défaut Extraire une feuille d'un classeur fermé vers un classeur ouvert
    Bonjour
    Je désire copier une feuille d'un classeur fermé dans un classeur ouvert. J'ai éssayé de regarder sur ce tutoriel
    http://silkyroad.developpez.com/VBA/...sFermes/#LIV-D
    mais je n'ai pas vu la partie copie de feuille.
    Est-ce possible?

  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
    Bonjour,

    Teste ce qui suit en ayant tout d'abord adapter le chemin, le nom du classeur et de la feuille dans la proc "Test" :
    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
     
    Sub Test()
     
        Dim ConCL As Object
        Dim Rs As Object
        Dim FeuilleDest As Worksheet
        Dim NomFichier As String
        Dim FeuilleSource As String
        Dim Plage As String
     
        'chemin et nom du classeur cible, à adapter...
        NomFichier = "D:\Dossier 1\Dossier 2\Classeur1.xls"
     
        'plage à récupérer ici, si on ne sait pas on peut prendre "large" (ici, colonne A à Z) !
        Plage = "A:Z"
     
        'nom de la feuille où on doit récupérer les valeurs, à adapter...
        FeuilleSource = "Feuil1"
     
        'connexion au classeur
        ConnexionCLasseur ConCL, NomFichier, Rs
     
        'effectue la récup
        With Rs
     
            .CursorType = 1
            .LockType = 3
            .Open "SELECT * FROM `" & FeuilleSource & "$" & Plage & "` ", ConCL
     
            If Not Rs.EOF Then
     
                Set FeuilleDest = ActiveWorkbook.Worksheets("Feuil1")
     
                FeuilleDest.Range("A1").CopyFromRecordset Rs
     
            Else
     
                'si la feuille est vide...
                MsgBox "Aucun enregistrement renvoyé.", vbCritical
     
            End If
     
        End With
     
        ConCL.Close
     
        Set Rs = Nothing
        Set ConCL = Nothing
     
    End Sub
     
    'Sub de connexion (séparée ici pour plus de lisibilité)
    Private Sub ConnexionCLasseur(ConnexCL As Object, _
                                  Fichier As String, _
                                  Optional Rs)
     
        'création de l'objet en relation tardive (évite de cocher la référence)
        Set ConnexCL = CreateObject("ADODB.Connection")
     
        'si demandé, crée l'objet pour le jeu d'erregistrements
        If Not IsMissing(Rs) Then
            Set Rs = CreateObject("ADODB.Recordset")
        End If
     
        'ouvre la connexion
        ConnexCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                  "Data Source=" & Fichier & ";" & _
                  "Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""
     
    End Sub
    Hervé.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Points : 73
    Points
    73
    Par défaut
    J'ai appliqué ce code, mais ca ne me rapatrie que les données sans les mises en formes et les tableaux. Je ne sais pas si c'est possible de faire une copie parfaite de la feuille d'un fichier excel fermé.

  4. #4
    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,

    Avec ADO tu ne récupère que les champs et non la mise en forme puisque le classeur est considéré comme une base de données.
    Si tu veux récupérer la feuille à l'identique, il te faut ouvrir le classeur et faire une copie de la feuille. Ceci peut se faire sans que le classeur que tu ouvres soit visible.

    Hervé.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Points : 73
    Points
    73
    Par défaut
    Effectivement. L'ouverture du classeur en arrière plan, c'est ça je j'entrevois comme solution. Y'aurait-il une option dans la commande

    thank's

  6. #6
    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
    Bonjour,

    1 seul argument est obligatoire dans la commande open, c'est le chemin et nom du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Ouvrir()
     
        Dim Cl As Workbook
     
        Set Cl = Workbooks.Open("F:\Calculs Déperditions\Calcul déperditions Albrecht.xls")
     
        'cache le classeur
        Windows(Cl.Name).Visible = False
        'ici le reste du code...
     
    End Sub
    Hervé.

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/05/2013, 19h33
  2. Requete SQL d'un classeur fermé vers une listebox
    Par steph77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/09/2009, 09h59
  3. Copier des données de classeurs Excel fermés vers un classeur ouvert
    Par gwen-al dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 11/03/2008, 17h00
  4. extraire une feuille
    Par briget dans le forum Word
    Réponses: 3
    Dernier message: 11/01/2008, 09h13
  5. Déplacer une feuille vers un classeur fermé
    Par kedas dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/10/2007, 17h06

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