1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

copier une feuille d'un classeur fermé dans un classeur ouvert

Discussion dans 'Forum Excel' démarrée par zirhalihgi, 8 Février 2019.

  1. zirhalihgi

    zirhalihgi XLDnaute Nouveau

    Inscrit depuis le :
    8 Février 2019
    Messages :
    1
    "J'aime" reçus :
    0
    Bonjour à tous,

    Je souhaite copier une feuille d'un classeur fermé dans un classeur ouvert. Ayant des connaissances assez limitées en VBA, j'ai essayé de lire des tutoriels ( le silkyroad sur développez.net) mais sans réel succès. Par ailleurs, j'ai trouvé sur le forum un petit bout de code qui permet d'atteindre mon objectif.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    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
    NomFichier = "D:\Users\ighilahrizrya\Desktop\SRM 2018 11 27 22H30.xlsm"

    'plage à récupérer
    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
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Des que je lance la macro, une erreur s'affiche :
    ' -2147467259 (80004005)'
    External table is not in the format expected


    Des que je clique sur débogage, une partie du code est en surbrillance :

    ConnexCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Fichier & ";" & _
    "Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""

    Je travaille avec la version Excel 2013. J'ai par ailleurs activé le Microsoft Active x Data objects.
    Il me semble que le problème vient du fait que le classeur cible ( celui ou je vais récupérer mes données) n'est pas au bon format.
    Plus précisément, il s'agit d'un classeur avec une seule feuille. Dans celle ci il y a une colonne et une ligne avec des noms et pour chaque couple ligne-colonne correspond une valeur numérique. En gros il s'agit d'une matrice.

    Si l'un de vous à la réponse, ca m'aiderait beaucoup pour mon travail.
    Merci d'avance [​IMG]
     
  2. Chargement...

    Discussions similaires - copier feuille classeur Forum Date
    XL 2010 copier coller une feuille dans le même classeur Forum Excel 19 Janvier 2019
    copier une feuille dans autre classeur en supprimant les macros Forum Excel 10 Décembre 2018
    Copier-coller plusieurs feuilles de classeurs Forum Excel 28 Août 2017
    Excel2007 - copier coller feuille classeur partagé Forum Excel 21 Juillet 2017
    XL 2010 Copier données dans une feuille d'un autre classeur Forum Excel 17 Juin 2017

  3. herve62

    herve62 XLDnaute Barbatruc

    Inscrit depuis le :
    14 Octobre 2005
    Messages :
    2207
    "J'aime" reçus :
    71
    Sexe :
    Masculin
    Habite à:
    Arques ( ville du Cristal) 62
    Utilise:
    Excel 2010 (PC)
    Bonjour
    Il semblerait qu'il y ait Pb entre 32bits et 64 ; As tu éssayé avec :
    Microsoft.ACE.OLEDB.12.0 au lieu de Jet ? test du genre :
    Code (Visual Basic):
    [code=VB]Sub essai()
    Path = "c:\DATA\"
    file = "agenda.xls"
    If Val(Application.Version) < 12 Then
            strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                                  "Data Source=" & Path & file & ";" & _
                                  "Extended Properties=""Excel 8.0;HDR=NO;IMEX=1;"""
        Else
            strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                  "Data Source=" & Path & file & ";" & _
                                  "Extended Properties=""Excel 12.0;HDR=NO;IMEX=1;"""
        End If
    End Sub
     
    [/code]
     
    Dernière édition: 10 Février 2019

Partager cette page