Importé des feuilles provenant de d'autres classeurs

siocnarf

XLDnaute Occasionnel
Bonjour,

J'ai un beau problème.
Mon patron m'a demandé de compiler toutes les données se trouvant dans les feuil2 de plusieurs classeurs différent.

Cela semble aisé mais pour chaque classeur, la feuil2 fera entre 2000 et 20 000 lignes.
Est-il donc possible de créer en vba un programme qui:
1. Me laisserait la possibilité de sélectionner plusieurs classeurs
2. Sélectionnerais la feuil2 complète de chaque classeur
3. Importerais le contenu de la feuil2 de chaque classeur à la suite dans ma feuil2.

Idéalement, j'aimerais ne pas avoir à ouvrir les classeur d'origine afin de préserver la mémoire et les ressources systèmes. Je viens d'en faire un à la main et cela totalise tout de même 98 000 lignes avec une douzaine de colonne :)

Les feuil2 sont toutes identiques dans le format, seul le nombre de ligne varie et donc en bout de piste, j'aurai un cumulatif complet sur une seule feuille.


Merci,

François
 

GeoTrouvePas

XLDnaute Impliqué
Re : Importé des feuilles provenant de d'autres classeurs

Bonjour Siocnarf !

J'étais justement en train de bosser sur ce thème.

Frédéric Sigonneau propose Ce site n'existe plus même une solution de consolidation de classeurs via ADO qui devrait te convenir parfaitement.

Bonne journée
 

siocnarf

XLDnaute Occasionnel
Re : Importé des feuilles provenant de d'autres classeurs

Bonjour,

Est-il possible d'envoyer les données dans un 3e fichier au lieu de directement envoyer les données dans le fichier qui est ouvert et qui donc contient la macro?

Je souhaiterais avoir un fichier avec une macro et que lors de l'exécution les données se retrouve dans un autre fichier.

Lors de l'exécution, j'obtiens "Erreur d'exécution' -2147467259(80004005) La table externe n'est pas dans le format attendu."

Code:
Sub TestConso()
Dim Fich1$, Fich2$, Source1$, Source2$, Cible$
  Fich1 = "H:\Support PES\Analyse des erreurs\rraf005\Data\Tableau de saisie des serveurs.xls_du_20111028_au_20111028_genere_20111028_074137.xlsx"
  Fich2 = "H:\Support PES\Analyse des erreurs\rraf005\Data\Tableau de saisie des serveurs.xls_du_20111003_au_20111003_genere_20111003_083337.xlsx"
  Source1 = "Feuil2"
  Source2 = "Feuil2"
  Cible = "Feuil2"
  ConsoDatas Fich1, Source1, Cible
  ConsoDatas Fich2, Source1, Cible
End Sub

Public Sub ConsoDatas(NomFichier$, FeuilleSource$, FeuilleCible$)
'Va chercher dans le classeur NomFichier (sans l'ouvrir) les données
'de la feuille FeuilleSource et les copie dans la feuille FeuilleCible
'du classeur actif, à la suite des données (éventuellement) déjà présentes.
'(La ligne d'entêtes de FeuilleSource n'est pas importée)
'inspiré de Rob Bovey, mpep
'nécessite une référence à la librairie
'Microsoft ActiveX Data Object 2.x Library
Dim rsData As ADODB.Recordset
Dim szConnect As String
Dim szSQL As String
Dim Li&, FeuilleDest

    ''' Crée la chaîne de connexion
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & NomFichier & ";" & _
        "Extended Properties=Excel 8.0;"

    ' La requête est basée sur le nom de la feuille. Ce nom
    ' doit se terminer par un $ et doit être entouré de crochets droits.
    szSQL = "SELECT * FROM [" & FeuilleSource & "$];"

    Set rsData = New ADODB.Recordset
    rsData.Open szSQL, szConnect, adOpenForwardOnly, _
        adLockReadOnly, adCmdText

    'où envoyer les données :
    Set FeuilleDest = ActiveWorkbook.Sheets(FeuilleCible)
    Li = FeuilleDest.Range("A65536").End(xlUp).Row + 1
    'envoi sur la première ligne vide
    If Not rsData.EOF Then
      FeuilleDest.Range("A" & Li).CopyFromRecordset rsData
    Else
      'si la source était vide...
      MsgBox "Aucun enregistrement renvoyé.", vbCritical
    End If

    ''' On nettoie pour finir...
    rsData.Close
    Set rsData = Nothing

End Sub
Merci,

François Racine
 
Dernière édition:

siocnarf

XLDnaute Occasionnel
Re : Importé des feuilles provenant de d'autres classeurs

Bonjour,

Après un peu de recherche, je viens de découvrir que mes classeurs ont plusieurs feuilles ce qui sembles provoquer des erreurs Lors de l'exécution, j'obtiens "Erreur d'exécution' -2147467259(80004005) La table externe n'est pas dans le format attendu."

Si je supprime les feuilles pour ne conserver que Feuil2 alors je n'ai plus cette erreur. C'est tannant car la Feuil2 de tous mes fichiers est identique. Est-ce qu'il y a une solution à mon problème?

Merci,

François Racine
 

siocnarf

XLDnaute Occasionnel
Re : Importé des feuilles provenant de d'autres classeurs

Bonjour,

Il y a longtemps que je sius passé à autre chose. Je me rappelle avoir fait quelque chose et cela fonctionnait bien. Il faudrait que tu m'en dises plus.

Merci,

François
 

Discussions similaires

Statistiques des forums

Discussions
312 545
Messages
2 089 454
Membres
104 168
dernier inscrit
Make