Bonjour,
J'utilise une macro pour scinder un gros fichier (avec une feuille) en
petits fichiers. Le découpage s'effectue correctement. Il me reprend bien à
chaque fois la ligne de titre pour chaque fichier.
Maintenant, j'ai un autre fichier à découper :
- le titre à reproduire est sur 8 lignes
- j'ai des colonnes avec des listes déroulantes (données/validation)
- et j'ai deux feuilles.
Ma macro existante n'est pas adaptée.
Est-ce que quelqu'un pourrait m'aider à modifier ma macro. Je suis novice
en la matière !!
Merci pour vos réponses.
--
MCA
Je vous copie ci-après ma macro :
'--------------------------------------
Sub DécouperGRH()
Dim Rg As Range, A As Integer
Dim Wk As Workbook, Rg1 As Range
Dim Sh As Worksheet, Chemin As String
'Chemin où tu veux enregistrer chacun des fichiers
Chemin = "D:\Mes documents\"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "ENQUETE"
'Où sont les données
'Nom feuille à déterminer
Worksheets("Tableau final").Copy before:=Sheets(1)
Set Sh = ActiveSheet
'Ici tu modifies la lettre N pour
'la lettre de la colonne que tu désires.
With Sh
Set Rg = .Range("A9:P" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
Application.EnableEvents = False
Do
With Rg
'trier par ordre croissant
.Sort Key1:=Rg(2, 1), Header:=xlYes
'Filtre automatique
.AutoFilter Field:=1, Criteria1:=Rg(2, 1)
Set Rg1 = Sh.Range("_FilterDataBase")
.SpecialCells (xlCellTypeVisible)
'Copie du résultat du filtre vers nouveau classeur
Rg1.Copy Wk.Sheets(1).Range("A1")
Rg1.Offset(1).Clear
A = A + 1
'Sauvegarde du classeur
Wk.SaveAs Chemin & nom & A & ".xls"
Wk.Sheets(1).Cells.Clear
.AutoFilter
.Sort Key1:=Rg(2, 1), Header:=xlYes
End With
Loop Until Rg(2, 1) = ""
Application.EnableEvents = True
Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing: Set Rg1 = Nothing
End Sub
'--------------------------------------
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel
- j'ai des colonnes avec des listes déroulantes (données/validation)
- et j'ai deux feuilles.
Bonjour.
Quelques précisions.
Les classeurs cibles doivent récupérer les listes de validation, et, dans ce
cas, comment sont-elles définies et à quelles plages s'appliquent-elles ?
Tu veux également récupérer deux feuilles dans les classeurs cible ?, les
données des deux feuilles ont-elles la même structure ?
Si possible, dépose un classeur exemple (en effaçant les données
confidentielles) et en diminuant la masse de données afin que le classeur ne
soit pas trop gros sur le site :
www.cjoint.com et poste l'adresse générée.
Cordialement.
Daniel
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel
MCA
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
-- MCA
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel
Merci Daniel de ta réponse.
Ci-dessous le lien pour accéder au fichier :
http://cjoint.com/?djojJg2G3q
Précisions :
-Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8
-j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière
colonne, le détail de ma liste déroulante se trouve dans la feuille appelée
"affectation" que je masque par la suite.
-les feuilles à récupérer dans chaque fichier sont "tableau final" et
"affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter
les éclaircissements attendus.
--
MCA
- j'ai des colonnes avec des listes déroulantes (données/validation)
- et j'ai deux feuilles.
Bonjour.
Quelques précisions.
Les classeurs cibles doivent récupérer les listes de validation, et, dans ce
cas, comment sont-elles définies et à quelles plages s'appliquent-elles ?
Tu veux également récupérer deux feuilles dans les classeurs cible ?, les
données des deux feuilles ont-elles la même structure ?
Si possible, dépose un classeur exemple (en effaçant les données
confidentielles) et en diminuant la masse de données afin que le classeur ne
soit pas trop gros sur le site :
www.cjoint.com et poste l'adresse générée.
Cordialement.
Daniel
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
-- MCA
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel
RGI
Bonjour
pourquoi ne mets-tu pas ce fichier en modèle xlt qui se transformera en xls par la suite ? ton xlt restant inchangé
Salutations
RGI
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
Bonjour
pourquoi ne mets-tu pas ce fichier en modèle xlt qui se transformera en
xls par la suite ?
ton xlt restant inchangé
Salutations
RGI
Merci Daniel de ta réponse.
Ci-dessous le lien pour accéder au fichier :
http://cjoint.com/?djojJg2G3q
Précisions :
-Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8
-j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière
colonne, le détail de ma liste déroulante se trouve dans la feuille appelée
"affectation" que je masque par la suite.
-les feuilles à récupérer dans chaque fichier sont "tableau final" et
"affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter
les éclaircissements attendus.
pourquoi ne mets-tu pas ce fichier en modèle xlt qui se transformera en xls par la suite ? ton xlt restant inchangé
Salutations
RGI
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
Daniel
Mets la macro dans un module du classeur enquete.xls :
Sub DécouperGRH()
Dim Rg As Range, A As Integer Dim Wk As Workbook, Rg1 As Range Dim Sh As Worksheet, Chemin As String
'Chemin où tu veux enregistrer chacun des fichiers Chemin = "D:Mes documents"
'Nom du classeur (racine du nom) 'à ceci s'ajoute un numéro dans la procédure nom = "ENQUETE"
'Où sont les données 'Nom feuille à déterminer Worksheets("Tableau final").Copy Before:=Sheets(1)
Set Sh = ActiveWorkbook.ActiveSheet 'Ici tu modifies la lettre N pour 'la lettre de la colonne que tu désires. With Sh Set Rg = .Range("A9:P" & .Range("A65536").End(xlUp).Row) End With
Application.ScreenUpdating = False 'Ajout d'un classer ThisWorkbook.Sheets("affectation").Copy ThisWorkbook.Sheets("Tableau final").Copy Before:¬tiveWorkbook.Sheets(1) Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents Set Wk = ActiveWorkbook Application.EnableEvents = False Do With Rg 'trier par ordre croissant .Sort Key1:=Rg(2, 1), Header:=xlYes 'Filtre automatique .AutoFilter Field:=1, Criteria1:=Rg(2, 1) Set Rg1 = Sh.Range("_FilterDataBase") .SpecialCells (xlCellTypeVisible) 'Copie du résultat du filtre vers nouveau classeur Rg1.Copy Wk.Sheets(1).Range("A9") Rg1.Offset(1).Clear A = A + 1 'Sauvegarde du classeur Wk.SaveAs Chemin & nom & A & ".xls" Wk.Sheets(1).Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents .AutoFilter .Sort Key1:=Rg(2, 1), Header:=xlYes End With Loop Until Rg(2, 1) = "" Application.EnableEvents = True Application.DisplayAlerts = False Sh.Delete Application.DisplayAlerts = True Wk.Close False Set Wk = Nothing: Set Sh = Nothing: Set Rg1 = Nothing End Sub
Cordialement. Daniel "MCA" a écrit dans le message de news:
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
-- MCA
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel
Mets la macro dans un module du classeur enquete.xls :
Sub DécouperGRH()
Dim Rg As Range, A As Integer
Dim Wk As Workbook, Rg1 As Range
Dim Sh As Worksheet, Chemin As String
'Chemin où tu veux enregistrer chacun des fichiers
Chemin = "D:Mes documents"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "ENQUETE"
'Où sont les données
'Nom feuille à déterminer
Worksheets("Tableau final").Copy Before:=Sheets(1)
Set Sh = ActiveWorkbook.ActiveSheet
'Ici tu modifies la lettre N pour
'la lettre de la colonne que tu désires.
With Sh
Set Rg = .Range("A9:P" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
ThisWorkbook.Sheets("affectation").Copy
ThisWorkbook.Sheets("Tableau final").Copy Before:¬tiveWorkbook.Sheets(1)
Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents
Set Wk = ActiveWorkbook
Application.EnableEvents = False
Do
With Rg
'trier par ordre croissant
.Sort Key1:=Rg(2, 1), Header:=xlYes
'Filtre automatique
.AutoFilter Field:=1, Criteria1:=Rg(2, 1)
Set Rg1 = Sh.Range("_FilterDataBase")
.SpecialCells (xlCellTypeVisible)
'Copie du résultat du filtre vers nouveau classeur
Rg1.Copy Wk.Sheets(1).Range("A9")
Rg1.Offset(1).Clear
A = A + 1
'Sauvegarde du classeur
Wk.SaveAs Chemin & nom & A & ".xls"
Wk.Sheets(1).Range("A9:P" &
Range("A65536").End(xlUp).Row).ClearContents
.AutoFilter
.Sort Key1:=Rg(2, 1), Header:=xlYes
End With
Loop Until Rg(2, 1) = ""
Application.EnableEvents = True
Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing: Set Rg1 = Nothing
End Sub
Cordialement.
Daniel
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
A8F29840-1617-4CC3-9692-1587C3973F41@microsoft.com...
Merci Daniel de ta réponse.
Ci-dessous le lien pour accéder au fichier :
http://cjoint.com/?djojJg2G3q
Précisions :
-Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8
-j'ai des listes déroulantes dans les colonnes F, L, O (pour cette
dernière
colonne, le détail de ma liste déroulante se trouve dans la feuille
appelée
"affectation" que je masque par la suite.
-les feuilles à récupérer dans chaque fichier sont "tableau final" et
"affectation".
Je ne sais pas si mes explications sont suffisamment claires pour
t'apporter
les éclaircissements attendus.
--
MCA
- j'ai des colonnes avec des listes déroulantes (données/validation)
- et j'ai deux feuilles.
Bonjour.
Quelques précisions.
Les classeurs cibles doivent récupérer les listes de validation, et, dans
ce
cas, comment sont-elles définies et à quelles plages s'appliquent-elles ?
Tu veux également récupérer deux feuilles dans les classeurs cible ?, les
données des deux feuilles ont-elles la même structure ?
Si possible, dépose un classeur exemple (en effaçant les données
confidentielles) et en diminuant la masse de données afin que le classeur
ne
soit pas trop gros sur le site :
www.cjoint.com et poste l'adresse générée.
Cordialement.
Daniel
Mets la macro dans un module du classeur enquete.xls :
Sub DécouperGRH()
Dim Rg As Range, A As Integer Dim Wk As Workbook, Rg1 As Range Dim Sh As Worksheet, Chemin As String
'Chemin où tu veux enregistrer chacun des fichiers Chemin = "D:Mes documents"
'Nom du classeur (racine du nom) 'à ceci s'ajoute un numéro dans la procédure nom = "ENQUETE"
'Où sont les données 'Nom feuille à déterminer Worksheets("Tableau final").Copy Before:=Sheets(1)
Set Sh = ActiveWorkbook.ActiveSheet 'Ici tu modifies la lettre N pour 'la lettre de la colonne que tu désires. With Sh Set Rg = .Range("A9:P" & .Range("A65536").End(xlUp).Row) End With
Application.ScreenUpdating = False 'Ajout d'un classer ThisWorkbook.Sheets("affectation").Copy ThisWorkbook.Sheets("Tableau final").Copy Before:¬tiveWorkbook.Sheets(1) Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents Set Wk = ActiveWorkbook Application.EnableEvents = False Do With Rg 'trier par ordre croissant .Sort Key1:=Rg(2, 1), Header:=xlYes 'Filtre automatique .AutoFilter Field:=1, Criteria1:=Rg(2, 1) Set Rg1 = Sh.Range("_FilterDataBase") .SpecialCells (xlCellTypeVisible) 'Copie du résultat du filtre vers nouveau classeur Rg1.Copy Wk.Sheets(1).Range("A9") Rg1.Offset(1).Clear A = A + 1 'Sauvegarde du classeur Wk.SaveAs Chemin & nom & A & ".xls" Wk.Sheets(1).Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents .AutoFilter .Sort Key1:=Rg(2, 1), Header:=xlYes End With Loop Until Rg(2, 1) = "" Application.EnableEvents = True Application.DisplayAlerts = False Sh.Delete Application.DisplayAlerts = True Wk.Close False Set Wk = Nothing: Set Sh = Nothing: Set Rg1 = Nothing End Sub
Cordialement. Daniel "MCA" a écrit dans le message de news:
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
-- MCA
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel
MCA
Merci beaucoup Daniel, c'est exactement ce que je voulais. Bon week-end -- MCA
Mets la macro dans un module du classeur enquete.xls :
Sub DécouperGRH()
Dim Rg As Range, A As Integer Dim Wk As Workbook, Rg1 As Range Dim Sh As Worksheet, Chemin As String
'Chemin où tu veux enregistrer chacun des fichiers Chemin = "D:Mes documents"
'Nom du classeur (racine du nom) 'à ceci s'ajoute un numéro dans la procédure nom = "ENQUETE"
'Où sont les données 'Nom feuille à déterminer Worksheets("Tableau final").Copy Before:=Sheets(1)
Set Sh = ActiveWorkbook.ActiveSheet 'Ici tu modifies la lettre N pour 'la lettre de la colonne que tu désires. With Sh Set Rg = .Range("A9:P" & .Range("A65536").End(xlUp).Row) End With
Application.ScreenUpdating = False 'Ajout d'un classer ThisWorkbook.Sheets("affectation").Copy ThisWorkbook.Sheets("Tableau final").Copy Before:¬tiveWorkbook.Sheets(1) Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents Set Wk = ActiveWorkbook Application.EnableEvents = False Do With Rg 'trier par ordre croissant .Sort Key1:=Rg(2, 1), Header:=xlYes 'Filtre automatique .AutoFilter Field:=1, Criteria1:=Rg(2, 1) Set Rg1 = Sh.Range("_FilterDataBase") .SpecialCells (xlCellTypeVisible) 'Copie du résultat du filtre vers nouveau classeur Rg1.Copy Wk.Sheets(1).Range("A9") Rg1.Offset(1).Clear A = A + 1 'Sauvegarde du classeur Wk.SaveAs Chemin & nom & A & ".xls" Wk.Sheets(1).Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents .AutoFilter .Sort Key1:=Rg(2, 1), Header:=xlYes End With Loop Until Rg(2, 1) = "" Application.EnableEvents = True Application.DisplayAlerts = False Sh.Delete Application.DisplayAlerts = True Wk.Close False Set Wk = Nothing: Set Sh = Nothing: Set Rg1 = Nothing End Sub
Cordialement. Daniel "MCA" a écrit dans le message de news:
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
-- MCA
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel
Merci beaucoup Daniel, c'est exactement ce que je voulais.
Bon week-end
--
MCA
Mets la macro dans un module du classeur enquete.xls :
Sub DécouperGRH()
Dim Rg As Range, A As Integer
Dim Wk As Workbook, Rg1 As Range
Dim Sh As Worksheet, Chemin As String
'Chemin où tu veux enregistrer chacun des fichiers
Chemin = "D:Mes documents"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "ENQUETE"
'Où sont les données
'Nom feuille à déterminer
Worksheets("Tableau final").Copy Before:=Sheets(1)
Set Sh = ActiveWorkbook.ActiveSheet
'Ici tu modifies la lettre N pour
'la lettre de la colonne que tu désires.
With Sh
Set Rg = .Range("A9:P" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
ThisWorkbook.Sheets("affectation").Copy
ThisWorkbook.Sheets("Tableau final").Copy Before:¬tiveWorkbook.Sheets(1)
Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents
Set Wk = ActiveWorkbook
Application.EnableEvents = False
Do
With Rg
'trier par ordre croissant
.Sort Key1:=Rg(2, 1), Header:=xlYes
'Filtre automatique
.AutoFilter Field:=1, Criteria1:=Rg(2, 1)
Set Rg1 = Sh.Range("_FilterDataBase")
.SpecialCells (xlCellTypeVisible)
'Copie du résultat du filtre vers nouveau classeur
Rg1.Copy Wk.Sheets(1).Range("A9")
Rg1.Offset(1).Clear
A = A + 1
'Sauvegarde du classeur
Wk.SaveAs Chemin & nom & A & ".xls"
Wk.Sheets(1).Range("A9:P" &
Range("A65536").End(xlUp).Row).ClearContents
.AutoFilter
.Sort Key1:=Rg(2, 1), Header:=xlYes
End With
Loop Until Rg(2, 1) = ""
Application.EnableEvents = True
Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing: Set Rg1 = Nothing
End Sub
Cordialement.
Daniel
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
A8F29840-1617-4CC3-9692-1587C3973F41@microsoft.com...
Merci Daniel de ta réponse.
Ci-dessous le lien pour accéder au fichier :
http://cjoint.com/?djojJg2G3q
Précisions :
-Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8
-j'ai des listes déroulantes dans les colonnes F, L, O (pour cette
dernière
colonne, le détail de ma liste déroulante se trouve dans la feuille
appelée
"affectation" que je masque par la suite.
-les feuilles à récupérer dans chaque fichier sont "tableau final" et
"affectation".
Je ne sais pas si mes explications sont suffisamment claires pour
t'apporter
les éclaircissements attendus.
--
MCA
- j'ai des colonnes avec des listes déroulantes (données/validation)
- et j'ai deux feuilles.
Bonjour.
Quelques précisions.
Les classeurs cibles doivent récupérer les listes de validation, et, dans
ce
cas, comment sont-elles définies et à quelles plages s'appliquent-elles ?
Tu veux également récupérer deux feuilles dans les classeurs cible ?, les
données des deux feuilles ont-elles la même structure ?
Si possible, dépose un classeur exemple (en effaçant les données
confidentielles) et en diminuant la masse de données afin que le classeur
ne
soit pas trop gros sur le site :
www.cjoint.com et poste l'adresse générée.
Cordialement.
Daniel
Merci beaucoup Daniel, c'est exactement ce que je voulais. Bon week-end -- MCA
Mets la macro dans un module du classeur enquete.xls :
Sub DécouperGRH()
Dim Rg As Range, A As Integer Dim Wk As Workbook, Rg1 As Range Dim Sh As Worksheet, Chemin As String
'Chemin où tu veux enregistrer chacun des fichiers Chemin = "D:Mes documents"
'Nom du classeur (racine du nom) 'à ceci s'ajoute un numéro dans la procédure nom = "ENQUETE"
'Où sont les données 'Nom feuille à déterminer Worksheets("Tableau final").Copy Before:=Sheets(1)
Set Sh = ActiveWorkbook.ActiveSheet 'Ici tu modifies la lettre N pour 'la lettre de la colonne que tu désires. With Sh Set Rg = .Range("A9:P" & .Range("A65536").End(xlUp).Row) End With
Application.ScreenUpdating = False 'Ajout d'un classer ThisWorkbook.Sheets("affectation").Copy ThisWorkbook.Sheets("Tableau final").Copy Before:¬tiveWorkbook.Sheets(1) Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents Set Wk = ActiveWorkbook Application.EnableEvents = False Do With Rg 'trier par ordre croissant .Sort Key1:=Rg(2, 1), Header:=xlYes 'Filtre automatique .AutoFilter Field:=1, Criteria1:=Rg(2, 1) Set Rg1 = Sh.Range("_FilterDataBase") .SpecialCells (xlCellTypeVisible) 'Copie du résultat du filtre vers nouveau classeur Rg1.Copy Wk.Sheets(1).Range("A9") Rg1.Offset(1).Clear A = A + 1 'Sauvegarde du classeur Wk.SaveAs Chemin & nom & A & ".xls" Wk.Sheets(1).Range("A9:P" & Range("A65536").End(xlUp).Row).ClearContents .AutoFilter .Sort Key1:=Rg(2, 1), Header:=xlYes End With Loop Until Rg(2, 1) = "" Application.EnableEvents = True Application.DisplayAlerts = False Sh.Delete Application.DisplayAlerts = True Wk.Close False Set Wk = Nothing: Set Sh = Nothing: Set Rg1 = Nothing End Sub
Cordialement. Daniel "MCA" a écrit dans le message de news:
Merci Daniel de ta réponse. Ci-dessous le lien pour accéder au fichier : http://cjoint.com/?djojJg2G3q
Précisions : -Dans chaque fichier, je veux copier le titre qui va de la ligne 1 à 8 -j'ai des listes déroulantes dans les colonnes F, L, O (pour cette dernière colonne, le détail de ma liste déroulante se trouve dans la feuille appelée "affectation" que je masque par la suite. -les feuilles à récupérer dans chaque fichier sont "tableau final" et "affectation".
Je ne sais pas si mes explications sont suffisamment claires pour t'apporter les éclaircissements attendus.
-- MCA
- j'ai des colonnes avec des listes déroulantes (données/validation) - et j'ai deux feuilles.
Bonjour. Quelques précisions. Les classeurs cibles doivent récupérer les listes de validation, et, dans ce cas, comment sont-elles définies et à quelles plages s'appliquent-elles ? Tu veux également récupérer deux feuilles dans les classeurs cible ?, les données des deux feuilles ont-elles la même structure ? Si possible, dépose un classeur exemple (en effaçant les données confidentielles) et en diminuant la masse de données afin que le classeur ne soit pas trop gros sur le site : www.cjoint.com et poste l'adresse générée. Cordialement. Daniel