macro qui éclate un tableau en plusieurs fichier

jaba

XLDnaute Junior
Bonjour,

Je voudrai savoir s'il existe une macro qui peut éclater les données d'un tableau en plusieurs fichiers excel slon un critère.

Ci-dessous un fichier exemple : l'objectif est d'avoir un fichier excel pour chaque client.

Merci d'avance!
 

Pièces jointes

  • jaba 9.xls
    13.5 KB · Affichages: 278

jaba

XLDnaute Junior
Re : macro qui éclate un tableau en plusieurs fichier

Merci pour ta réponse, mais peux tu me dire quel mot clé rechercher? car je ne trouve pas en mettant "éclater un tableau en plusieurs fichiers."

Merci d'avance,
 

Staple1600

XLDnaute Barbatruc
Re : macro qui éclate un tableau en plusieurs fichier

Re


Fais une recherche sur mon pseudo, ou celui de Roger2327.

Tu devrais trouver de quoi t'aider

PS: si je cite mon pseudo , c'est que je sais que j'ai déjà répondu à une question de ce genre

Mais pour le moment, pas le temps de rechercher.
 

Staple1600

XLDnaute Barbatruc
Re : macro qui éclate un tableau en plusieurs fichier

Re


Maintenant j'ai du temps
(j'ai fini de diner ;) )

Voici une façon de faire

Code:
Sub eclater_jaba()
Dim nwbk As Workbook
Dim dl&, dc%, i&, iDeb&, iFn&
Dim ws As Worksheet, r As Range, iCl%
On Error Resume Next
With ActiveSheet
    Set r = .Range([A2], .[A65536].End(xlUp))
    On Error GoTo 0
    If r Is Nothing Then Exit Sub
    iCl = r.Column
    Application.ScreenUpdating = False
        dl = .Cells(Rows.Count, "A").End(xlUp).Row
        dc = .Cells(1, Columns.Count).End(xlToLeft).Column
        .Range(.Cells(2, 1), .Cells(dl, dc)).Sort Key1:=.Cells(2, iCl), Order1:=xlAscending, _
            Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        iDeb = 2
        For i = 2 To dl
            If .Cells(i, iCl).Value <> .Cells(i + 1, iCl).Value Then
                iFn = i
                Workbooks.Add xlWBATWorksheet
                Set nwbk = ActiveWorkbook
                Set ws = nwbk.Sheets(1)
                On Error Resume Next
                ws.Name = .Cells(iDeb, iCl).Text
                On Error GoTo 0
                 ws.Range(Cells(1, 1), Cells(1, dc)).Value = .Range(.Cells(1, 1), .Cells(1, dc)).Value
                 .Range(.Cells(iDeb, 1), .Cells(iFn, dc)).Copy ws.Range("A2")
                nwbk.SaveAs "C:\Temp\" & ws.Name
                nwbk.Close True
                iDeb = iFn + 1
            End If
        Next i
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
PS: code testé sur XL2000, et fonctionnel.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : macro qui éclate un tableau en plusieurs fichier

Bonsoir


jaba: :rolleyes:

Tu as lu Lien supprimé ?

Notamment ceci :
Dites vous bien que le but de ce forum est un partage de connaissance sur le Net. Les participants souhaitent ne pas avoir leur messagerie inondée de vos problèmes personnels. Si vous avez un fichier que vous désirez soumettre, faites toujours une demande préalable. Les
questions doivent rester dans le Forum
.
Sinon pourquoi ai-je recu un MP de ta part relatif à ce fil ci ?

PS: en plus, tu as un fait un double-post à ce sujet.

Sans doute, la maladresse du débutant sur le forum ...
 
Dernière édition:

jaba

XLDnaute Junior
Re : macro qui éclate un tableau en plusieurs fichier

Bonsoir,

Désolée, j'avais pas lu la charte.Maladresse de débutante car c'est la première fois que je participe à un forum.
Encore désolée.
Bonne soirée.
 

Staple1600

XLDnaute Barbatruc
Re : macro qui éclate un tableau en plusieurs fichier

Re

Au moins tu auras lu la charte maintenant ;)
(enfin j'espère ...)

Pour revenir à nouvelle question (reçue en MP)
jaba à dit:
Bonjour Staple 1600,

est il possible de faire en sorte que la macro que tu m'as envoyée éclate un tableau en plusieurs fichiers excel en fonction d'une critère en faisant un copié en valeur du tableau, et garde la couleur de la première ligne?

Merci d'avance.

Oui c'est possible

EDITION: modifies le code précédent comme suit en remplaçant le code que VBA
que j'ai mis en rouge dans mon précédent message par celui-ci
Code:
 .Range(.Cells(1, 1), .Cells(1, dc)).Copy
  ws.[A1].PasteSpecial xlValues
  ws.[A1].PasteSpecial xlFormats
  .Range(.Cells(iDeb, 1), .Cells(iFn, dc)).Copy  ws.Range("A2")
 
Dernière édition:

Discussions similaires