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!
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 B37mais 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
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 SubBonjour 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
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