Copier plusieurs classeurs dans classeur unique

Bonjour à tous,

J’aimerais encore profiter une dernière fois de vos talent VBA. J’aimerais pouvoir copier 4 fiches clients dans un classeur unique.

Concernant les fiches clients :

• Une fiche client correspond à un classeur.

• La structure d’une fiche client est toujours identique. Seules les informations relatives aux clients changent.

J’aimerais pouvoir copier de manière automatique les cellules coloriées (toujours les mêmes) des fiches clients et les coller dans un classeur « synthèse ».

A noter que les fiches clients et le classeur « synthèse » se trouve dans le même répertoire.

Je vous joins les fichiers pour expliquer davantage mon besoin

Merci de votre aide!

28synthese.xlsx (13.50 Ko)
16client-4.xlsx (10.26 Ko)
13client-3.xlsx (10.26 Ko)
13client-2.xlsx (10.23 Ko)
20client-1.xlsx (10.26 Ko)

Bonjour,

si je comprend bien il faut transférer les données suivante:

par exemple pour le client1, les cellules à transférer:

synthèse    Client
D8        B21
D9        B22
D10        B23
D11        D34
D15        F26
D16        E26
D18        B34
D19        B35
D20        B36
D21        B37

mais je vois 2 lignes pour Article 3, client1

il peut y avoir plusieurs lignes différentes pour chaque client ?

est ce que "La structure d’une fiche client est toujours identique" ?

Bonjour,

pourquoi ne pas tout simplement copier/coller avec liaison les cellules des fichiers "CLIENT" dans le fichier "synthèse"

la mise à jour des valeurs se fera automatiquement à l'ouverture de ce dernier

à te relire, cordialement

Bonjour sabV,

Bonjour le Forum,

Merci d'avoir pris le temps de lire mon post.

C'est exactement cela que j'aimerais faire. Tu as parfaitement compris. J'ajouterai les cellules à copier pour la synthèse:

synthèse Client

D22 D28

D24 D30

D25 C50

Concernant l'article 3 je te prie de m'excuser mais effectivement il y a une ligne en trop. Une fiche client a toujours la même structure. C'est un Template que le client renseigne.

Merci de ton aide,

John89


Ednoork a écrit :

Bonjour,

pourquoi ne pas tout simplement copier/coller avec liaison les cellules des fichiers "CLIENT" dans le fichier "synthèse"

la mise à jour des valeurs se fera automatiquement à l'ouverture de ce dernier

à te relire, cordialement

Bonjour Ednoork,

Je pense que cela n'est pas possible avec un copier/coller avec liaison car le nom des fiches clients peuvent changer. En d'autre termes lorsque je renseigne le nom du client Ex: CLIENT_1 en cellule D2 du classeur synthèse alors la macro viendrait me récupérer les informations de la fiche client du nom CLIENT_1.

Merci de ton aide,

John89

Bonjour,

voici un exemple avec ExecuteExcel4Macro,

les fichiers à lire n'ont pas besoin d'être ouvert, mais il doivent être dans le même répertoire du fichier principal.

Sub test1()
Dim rep As String, fich As String, feuille As String, rw As Long, cl As Integer
rng1 = Array(8, 9, 10, 11, 15, 16, 18, 19, 20, 21, 22, 24, 25)
rng2 = Array(4, 7, 10, 13)
rng3 = Array("B21", "B22", "B23", "D34", "F26", "E26", "B34", "B35", "B36", "B37", "D28", "D30", "C50")

rep = ThisWorkbook.Path
feuille = "Feuil1"

For n = 1 To 4
 fich = "CLIENT_" & n & ".xlsx"

    For i = LBound(rng1) To UBound(rng1)
     rw = Range(rng3(i)).Row
     cl = Range(rng3(i)).Column
     Cells(rng1(i), rng2(n - 1)) = Data_in_closed_workbook(rep, fich, feuille, rw, cl)
    Next

Next
End Sub

Function Data_in_closed_workbook(sRep As String, sFile As String, sSh As String, rw As Long, cn As Integer) As Variant
x = ExecuteExcel4Macro _
      ("'" & sRep & "\[" & sFile & "]" & sSh & "'!R" & rw & "C" & cn & "")
      Data_in_closed_workbook = x
End Function

sabV,

Super travail. Je serais toujours impressionné par la faculté de pouvoir comprendre un besoin (souvent exprimé pour ma part ) et le traduire en ligne de code.

Une remarque: Pourrais-tu copier la cellule B19 de n'importe quelle fiche client pour la coller dans le fichier synthèse en A1?

Merci de ton aide.

John89

Bonjour,

oui, regarde la dernière ligne de la macro,

Sub test1()
Dim rep As String, fich As String, feuille As String, rw As Long, cl As Integer
rng1 = Array(8, 9, 10, 11, 15, 16, 18, 19, 20, 21, 22, 24, 25)
rng2 = Array(4, 7, 10, 13)
rng3 = Array("B21", "B22", "B23", "D34", "F26", "E26", "B34", "B35", "B36", "B37", "D28", "D30", "C50")

rep = ThisWorkbook.Path
feuille = "Feuil1"

For n = 1 To 1
 fich = "CLIENT_" & n & ".xlsx"

    For i = LBound(rng1) To UBound(rng1)
     rw = Range(rng3(i)).Row
     cl = Range(rng3(i)).Column
     Cells(rng1(i), rng2(n - 1)) = Data_in_closed_workbook(rep, fich, feuille, rw, cl)
    Next

Next
Cells(1, 1) = Data_in_closed_workbook(rep, fich, feuille, 19, 2)
End Sub

Bonjour sabV,

J'utilise la macro quotidiennement et elle fonctionne très bien. Depuis, quelques jours j'ai l'idée d'ajouter une fonctionnalité. C'est la raison pour laquelle je me permets de revenir vers toi . En effet, les fiches clients ne s’appellent pas toujours "client_1 , client_2...client_10".

Ainsi, est-il possible que la macro puisse coller les informations dans le fichier synthèse en fonction du nom des classeurs clients.

Par exemple, Si le classeur d'une fiche client porte le nom de "hydro" et que ce même nom figue en ligne 2 du classeur "synthèse" alors la macro viendrait coller les informations dans la bonne colonne.

Penses-tu que cela est faisable sans trop complexifier le code?

Merci de ton aide,

John89

Bonjour,

Par exemple, Si le classeur d'une fiche client porte le nom de "hydro" et que ce même nom figue en ligne 2 du classeur "synthèse" alors la macro viendrait coller les informations dans la bonne colonne.

peut-tu joindre ce nouveau fichier ?

Bonjour sabV,

Voici deux exemples. J'ai deux fiches clients. La première du nom de "hydro" et la seconde "elec". Les deux nom se retrouvent dans le ficher synthèse en ligne 2. Ainsi, la macro viendrait coller les informations dans le fichier synthèse en fonction du nom du client renseigné en B2 ou G2.

L'idée est la même que pour la première version de la macro. Mais cette fois-ci on copie les informations en fonction des noms des classeurs.

Cela pourrait beaucoup m'aider car je n'aurais plus besoin de renommer les fiches clients en "client_1", "client_2"... . Mais j'aurais simplement à renseigner le nom du client en B2, G2, J2.... du fichier synthèse pour que la macro copie la bonne fiche client.

A noter que je peux avoir jusqu'à 10 fiches clients à copier.

En esperant avoir été claire,

Merci

John89

15elec.xlsx (10.26 Ko)
14hydro.xlsx (10.26 Ko)
Rechercher des sujets similaires à "copier classeurs classeur unique"