macro visual basic dans excel

Le
MCA
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
'--
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel
Le #4331541
- 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
Le #4331401
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
Le #4331341
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.





Daniel
Le #4331231
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"
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
Le #4331121
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"
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













Publicité
Poster une réponse
Anonyme