[VBA] impoter une feuille excel.

Fermé
tobec - 15 avril 2010 à 15:51
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 17 avril 2010 à 02:28
Bonjour a tous,

Je souhaiterais importer une feuille excel dans un projet excel différent.

Voile le code que j'ai tapé actuellement :


    Windows(vnomfichier).Activate '''''Nom du fichier contenant la feuille a importer
    Worksheets("extstk").Select    '''''Feuille a impoter
    Selection.Copy
    Windows("rupture.xls").Activate  '''tableur de reception de la feuille
    Worksheets(2).Select                  '''' feuille dans laquelle je dois copier les données
    Worksheets(2).Range("A1").Select
    ActiveSheet.Paste



Voila mon problème :

Ce code ne fonctionne pas comme je le souhaite, en effet, pour importer les données de la feuille "extstk" je dois dabord pré selectionner toute les cellules de la feuille.

Je recherche aide qui me permettrais dans l'idéal de ne pas avoir a ouvrir le classeur contenant la feuille "extstk" ("vnomchier" dans mon code).

Merci de votre aide.

Max
A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
16 avril 2010 à 08:44
Salut,
Voici une réponse à ton souci, si les 2 classeurs sont ouverts...
Workbooks(vnomfichier).Sheets("extstk").Copy Workbooks("rupture.xls").Sheets("Feuil2")


Sinon pour écire et lire dans les classeurs fermés je te recommande fortement toute cette lecture : https://silkyroad.developpez.com/VBA/ClasseursFermes/
0
dct33 Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 39
Modifié par dct33 le 16/04/2010 à 21:57
Bonsoir

pour copier un page il faut tout sélectionner dans le classeur actif dans la feuille active

on peut choisir la feuille active en tapant ex Sheets(1).select

Cells.Select ' sélectionne toute la feuille
Selection.Copy

Windows("rupture.xls").Activate ' sélectionne le classeur

Sheets(2).select ' sélectionne la feuille

Range("A1").Select
ActiveSheet.Paste


Bonne programmation
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 17/04/2010 à 02:41
Bonjour,

Voilà une procédure pour extraire le contenu d'une feuille d'un fichier Excel sans avoir besoin de l'ouvrir:

Il faut pour que ça fonctionne, cocher la référence: Microsoft ActiveX Data Objects x.x Library :

Menu Outils > Références > Cochez la ligne "Microsoft ActiveX Data Objects x.x Library".

Sub Recup_Donnees_XL_Ferme(ByVal vnomFichier As String)   'vnomfichier = chemin complet du fichier source fermé    
    Dim Cnx As ADODB.Connection    
    Dim xlSheet As String    
    Dim Query As String    
    Dim Rs As ADODB.Recordset    

    'Nom de la feuille dans le fichier source fermé    
    xlSheet = "extstk"    
    '    
    Set Cnx = New ADODB.Connection    
    '    
    'Connection     
    With Cnx    
        .Provider = "Microsoft.Jet.OLEDB.4.0"    
        .ConnectionString = "Data Source=" & vnomFichier & _    
            ";Extended Properties=Excel 8.0;"    
        .Open    
    End With    
    '        
    'Ecriture de la requête.    
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.    
    Query = "SELECT * FROM [" & xlSheet & "$]"    
    '    
    Set Rs = New ADODB.Recordset    
    Set Rs = Cnx.Execute(Query)    
    '    
    'Copie le résultat de la requête dans la cellule A2 de la feuille 1    
    ThisWorkbook.Worksheets(1).Range("A2").CopyFromRecordset Rs 
    '    
    'Fermeture de la connexion et du recordset et libération de la mémoire.    
    Cnx.Close    
    Set Cnx = Nothing    
    Rs.Close    
    Set Rs = Nothing    

End Sub    


Un exemple pour utiliser cette procédure :

Call Recup_Donnees_XL_Ferme("C:\Temp\monFichier.xls")


Bon courage

;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
0