Importer des données des multiples classeurs

Bonjour à tous

Tout d’abord mes excuses si ma question à été abordé auparavant.

Mon projet consiste au début à importer des données (valeurs des certaines cellules) de plusieurs classeurs qui se trouvent dans un répertoire précis et les copier dans un autre classeur afin de créer un fichier de synthèse (Synthesedonnées.xls).

Je n’arrive pas à trouver le code qui permet d’aller ouvrir tous les classeurs successivement et les lire. Ne connaissant pas leurs noms mais seulement leur répertoire.

On peut considérer que le répertoire qui contient les classeurs de source se nom : C :\ Répértoire Clients\

Celui de destinateur C:\ Répertoire de Synthèse\Synthesedonnées.xls

Merci d’avance de votre aide

Dahlia

bonjour

sans connaître les noms des classeurs ?

ni leur organisation interne ?

dur, dur

capture
5exercice-1-v2.xlsm (17.91 Ko)

Bonjour à tous (bienvenue sur le forum dahlia),

jmd a écrit :

sans connaître les noms des classeurs ?

C'est possible par VBA A condition que ce soit bien tous les classeurs du répertoire !
jmd a écrit :

ni leur organisation interne ?

Ah là ça va être plus difficile effectivement. Parce que si on sait pas quoi copier et où

Donc question : dans quelles cellules se trouvent les données à importer ? et dans quelles cellules est-ce que ça doit être copié ?

7exercice-2-v1.xlsm (18.20 Ko)
vba-new a écrit :

Bonjour à tous (bienvenue sur le forum dahlia),

jmd a écrit :

sans connaître les noms des classeurs ?

C'est possible par VBA A condition que ce soit bien tous les classeurs du répertoire !
jmd a écrit :

ni leur organisation interne ?

Ah là ça va être plus difficile effectivement. Parce que si on sait pas quoi copier et où

Donc question : dans quelles cellules se trouvent les données à importer ? et dans quelles cellules est-ce que ça doit être copié ?

Bonjour

On connaît les noms des classeurs et leur organisation interne.

Le nom de répertoire qui contient que des fichiers client Excel est connu. Leurs classeurs ont la même structure (nombre des feuilles et disposition des cellules)

Une fois qu’on a réussi à ouvrir un classeur on cherche dans une feuille (nom connu aussi) des données dans des cellules précises.

Le problème n’est pas d’importer les données externes d’un classeur vers un autre mais plutôt comment ouvrir successivement les classeurs dans un répertoire connu pour faire l'importation.

J’espère avoir mieux exposé le problème.

Merci d’avance

Dahlia

re,

dahlia.m a écrit :

Le nom de répertoire qui contient que des fichiers client Excel est connu

Oui on sait !
dahlia.m a écrit :

Une fois qu’on a réussi à ouvrir un classeur on cherche dans une feuille (nom connu aussi) des données dans des cellules précises.

En fait, ce que je te demandais c'est justement de me donner toutes ces informations pour pouvoir adapter un code ! Tu me donnes le nom de la feuille, tu me dis exactement quelles cellules copier, dans quelles cellules coller !
dahlia.m a écrit :

Le problème n’est pas d’importer les données externes d’un classeur vers un autre mais plutôt comment ouvrir successivement les classeurs dans un répertoire connu pour faire l'importation.

D'où mes questions concernant quoi copier et où pour te donner un code qui fait ce que tu demandes !
dahlia.m a écrit :

J’espère avoir mieux exposé le problème.

Il était déjà tout à fait bien exposé, manque plus que 2-3 infos sur les cellules !

A+

vba-new a écrit :

re,

dahlia.m a écrit :

Le nom de répertoire qui contient que des fichiers client Excel est connu

Oui on sait !
dahlia.m a écrit :

Une fois qu’on a réussi à ouvrir un classeur on cherche dans une feuille (nom connu aussi) des données dans des cellules précises.

En fait, ce que je te demandais c'est justement de me donner toutes ces informations pour pouvoir adapter un code ! Tu me donnes le nom de la feuille, tu me dis exactement quelles cellules copier, dans quelles cellules coller !
dahlia.m a écrit :

Le problème n’est pas d’importer les données externes d’un classeur vers un autre mais plutôt comment ouvrir successivement les classeurs dans un répertoire connu pour faire l'importation.

D'où mes questions concernant quoi copier et où pour te donner un code qui fait ce que tu demandes !
dahlia.m a écrit :

J’espère avoir mieux exposé le problème.

Il était déjà tout à fait bien exposé, manque plus que 2-3 infos sur les cellules !

A+

Merci vba-new pour ton aide

Nom de la feuille de chaque classeur : « Feuille entraineur »

Nom de la feuille de classeur de destination : « fonction de recherche »

Données importées sur la ligne 10

E2 > B10

G2 > C10

E3 > D10

F3 > E10

E4 > F10

E5 > G10

E6 > H10

E7 > I10

B10 > J10

C10 > K10

E10 > L10

F10 > M10

B12 > N10

C12 > O10

E12 > P10

F12 > Q10

B14 > R10

C14 > S10

E14 > T10

F14 > U10

B16 > V10

E18 > W10

E22 > X10

Mais peut être y'aura d’autres cellules à rajouter par la suite...

Euh...une question me taraude.

Les cellules de destination sont toujours les mêmes ? Dans ce cas-là, à chaque fois que tu fais l'import de données, les données de la ligne 10 seront écrasées non ?

vba-new a écrit :

Euh...une question me taraude.

Les cellules de destination sont toujours les mêmes ? Dans ce cas-là, à chaque fois que tu fais l'import de données, les données de la ligne 10 seront écrasées non ?

Bonsoir vba-new

Effectivement j'avais oublié ce détail désolée !

En effet les données de chaque classeur se positionnent sur une ligne de ce nouveau classeur.

Dahlia

Ok. Essaie ce code (à lancer depuis le classeur de synthèse) :

Sub import()
Dim synthese As ThisWorkbook, fichier As String, i As Integer
Dim tablo
Application.ScreenUpdating = False
    ReDim tablo(0, 1 To 23)
    i = 10
    Set synthese = ThisWorkbook
    fichier = Dir("C:\Répertoire Clients\*.xls")
    Do While fichier <> ""
        If fichier <> synthese.Name Then
            Workbooks.Open Filename:="C:\Répertoire Clients\" & fichier
            With Sheets("Feuille entraineur")
                tablo(0, 1) = .[E2]
                tablo(0, 2) = .[G2]
                tablo(0, 3) = .[E3]
                tablo(0, 4) = .[F3]
                tablo(0, 5) = .[E4]
                tablo(0, 6) = .[E5]
                tablo(0, 7) = .[E6]
                tablo(0, 8) = .[E7]
                tablo(0, 9) = .[B10]
                tablo(0, 10) = .[C10]
                tablo(0, 11) = .[E10]
                tablo(0, 12) = .[F10]
                tablo(0, 13) = .[B12]
                tablo(0, 14) = .[C12]
                tablo(0, 15) = .[E12]
                tablo(0, 16) = .[F12]
                tablo(0, 17) = .[B14]
                tablo(0, 18) = .[C14]
                tablo(0, 19) = .[E14]
                tablo(0, 20) = .[F14]
                tablo(0, 21) = .[B16]
                tablo(0, 22) = .[E18]
                tablo(0, 23) = .[E22]
            End With
            synthese.Sheets("fonction de recherche").Range("B" & i & ":X" & i) = tablo
            i = i + 1
            Workbooks(fichier).Close
        Else
            MsgBox "Un fichier porte le même nom que le fichier de synthèse", vbInformation
        End If
        fichier = Dir
    Loop
End Sub
vba-new a écrit :

Ok. Essaie ce code (à lancer depuis le classeur de synthèse) :

Sub import()
Dim synthese As ThisWorkbook, fichier As String, i As Integer
Dim tablo
Application.ScreenUpdating = False
    ReDim tablo(0, 1 To 23)
    i = 10
    Set synthese = ThisWorkbook
    fichier = Dir("C:\Répertoire Clients\*.xls")
    Do While fichier <> ""
        If fichier <> synthese.Name Then
            Workbooks.Open Filename:="C:\Répertoire Clients\" & fichier
            With Sheets("Feuille entraineur")
                tablo(0, 1) = .[E2]
                tablo(0, 2) = .[G2]
                tablo(0, 3) = .[E3]
                tablo(0, 4) = .[F3]
                tablo(0, 5) = .[E4]
                tablo(0, 6) = .[E5]
                tablo(0, 7) = .[E6]
                tablo(0, 8) = .[E7]
                tablo(0, 9) = .[B10]
                tablo(0, 10) = .[C10]
                tablo(0, 11) = .[E10]
                tablo(0, 12) = .[F10]
                tablo(0, 13) = .[B12]
                tablo(0, 14) = .[C12]
                tablo(0, 15) = .[E12]
                tablo(0, 16) = .[F12]
                tablo(0, 17) = .[B14]
                tablo(0, 18) = .[C14]
                tablo(0, 19) = .[E14]
                tablo(0, 20) = .[F14]
                tablo(0, 21) = .[B16]
                tablo(0, 22) = .[E18]
                tablo(0, 23) = .[E22]
            End With
            synthese.Sheets("fonction de recherche").Range("B" & i & ":X" & i) = tablo
            i = i + 1
            Workbooks(fichier).Close
        Else
            MsgBox "Un fichier porte le même nom que le fichier de synthèse", vbInformation
        End If
        fichier = Dir
    Loop
End Sub

Merci beaucoup vba ça fonctionne.

C'est super...

Dahlia

Rechercher des sujets similaires à "importer donnees multiples classeurs"