Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
--
MCA
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
--
MCA
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
--
MCA
Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" a écrit dans le message de news:Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
8AAC8321-81B0-4529-AFBD-4E728621ACA8@microsoft.com...
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" a écrit dans le message de news:Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" a écrit dans le message de news:
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
8AAC8321-81B0-4529-AFBD-4E728621ACA8@microsoft.com... Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" a écrit dans le message de news:
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" a écrit dans le message de news:
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
8AAC8321-81B0-4529-AFBD-4E728621ACA8@microsoft.com... Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" a écrit dans le message de news:
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
*Bonjour Daniel*,
Une petite modif semble de mise...Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" a écrit dans le message de news:Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
--
JLuc
Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
*Bonjour Daniel*,
Une petite modif semble de mise...
Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
8AAC8321-81B0-4529-AFBD-4E728621ACA8@microsoft.com...
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
--
JLuc
Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
*Bonjour Daniel*,
Une petite modif semble de mise...Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" a écrit dans le message de news:Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
--
JLuc
Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
Bonjour JLuc,Workbooks.Add -4167
Ceci te permet de créer un classeur n'ayant qu'une
seule feuille et ce nonobstant le nombre de feuille
défini dans :
menu / outils / options / Onglet Général.
C'est plus rapide que d'ajouter simplement un classeur
et de supprimer toutes les feuilles non désirées à la fin
de la procédure !
Salutations!
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
A quoi correspond la valeur negative dans :
Set Wk = Workbooks.Add(-4167)
C'est la valeur d'une des constantes possible pour le parametre
"Template" de la commande Add ?
Ou trouver ces constantes avec leurs valeurs numeriques ?Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" a écrit dans le message de news:
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Bonjour JLuc,
Workbooks.Add -4167
Ceci te permet de créer un classeur n'ayant qu'une
seule feuille et ce nonobstant le nombre de feuille
défini dans :
menu / outils / options / Onglet Général.
C'est plus rapide que d'ajouter simplement un classeur
et de supprimer toutes les feuilles non désirées à la fin
de la procédure !
Salutations!
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.bc917d5b2c187add.40692@free.fr.ns... *Bonjour michdenis*,
A quoi correspond la valeur negative dans :
Set Wk = Workbooks.Add(-4167)
C'est la valeur d'une des constantes possible pour le parametre
"Template" de la commande Add ?
Ou trouver ces constantes avec leurs valeurs numeriques ?
Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
8AAC8321-81B0-4529-AFBD-4E728621ACA8@microsoft.com... Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Bonjour JLuc,Workbooks.Add -4167
Ceci te permet de créer un classeur n'ayant qu'une
seule feuille et ce nonobstant le nombre de feuille
défini dans :
menu / outils / options / Onglet Général.
C'est plus rapide que d'ajouter simplement un classeur
et de supprimer toutes les feuilles non désirées à la fin
de la procédure !
Salutations!
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
A quoi correspond la valeur negative dans :
Set Wk = Workbooks.Add(-4167)
C'est la valeur d'une des constantes possible pour le parametre
"Template" de la commande Add ?
Ou trouver ces constantes avec leurs valeurs numeriques ?Bonjour MCA,
Essaie ceci :
Fait une sauvegarde de ton classeur.
Celui que tu utiliseras pour le "Découpage" se retrouvera
vide de ses données à la fin de l'opération.
'------------------------------------
Sub Découper()
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 = "C:"
'Nom du classeur (racine du nom)
'à ceci s'ajoute un numéro dans la procédure
nom = "Denis"
'Où sont les données
Set Sh = Worksheets("Feuil1") 'Nom feuille à déterminer
With Sh
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
'Ajout d'un classer
Set Wk = Workbooks.Add(-4167)
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 = 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) = ""
Wk.Close False
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------------
Salutations!
"MCA" a écrit dans le message de news:
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
Nul n'est parfait...
Daniel
"JLuc" a écrit dans le message de news:*Bonjour Daniel*,
Une petite modif semble de mise...Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" a écrit dans le message de news:Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
-- JLuc
Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
Nul n'est parfait...
Daniel
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.bc877d5bcfc294dd.40692@free.fr.ns...
*Bonjour Daniel*,
Une petite modif semble de mise...
Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" <MCA@discussions.microsoft.com> a écrit dans le message de news:
8AAC8321-81B0-4529-AFBD-4E728621ACA8@microsoft.com...
Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
-- JLuc
Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
Nul n'est parfait...
Daniel
"JLuc" a écrit dans le message de news:*Bonjour Daniel*,
Une petite modif semble de mise...Bonjour.
Essaie le code suivant :
Sub test()
Dim Res As String, c As Range, Plage As Range, Ligne As Long
Ligne = 1
Res = [A1]
Set Plage = Range("A1", Range("A65536").End(xlUp))
Workbooks.Add
For Each c In Plage
If c.Value = Res Then
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1
Else
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
Res = c.Value
Ligne = 1
Workbooks.Add
c.EntireRow.Copy ActiveSheet.Range("A" & Ligne)
Ligne = Ligne + 1End If
Next c
ActiveWorkbook.SaveAs Res & ".xls"
ActiveWorkbook.Close
End Sub
Cordialement.
Daniel
"MCA" a écrit dans le message de news:Bonjour,
Voilà j'ai une feuille de calcul avec beaucoup de lignes. J'ai plusieurs
lignes avec le meme code dans une colonne (A par exemple). J'aimerais
découper cette feuille en plusieurs fichiers à chaque fois que le code
change
dans la colonne A.
Est-ce possible ?
Merci de vos réponses.
-- MCA
-- JLuc
Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
Ou trouver ces constantes avec leurs valeurs numeriques ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaxl11/html/xlhowConstants_HV01049962.asp
Ou trouver ces constantes avec leurs valeurs numeriques ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaxl11/html/xlhowConstants_HV01049962.asp
Ou trouver ces constantes avec leurs valeurs numeriques ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaxl11/html/xlhowConstants_HV01049962.asp
Ou trouver ces constantes avec leurs valeurs numeriques ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaxl11/html/xlhowConstants_HV01049962.asp
Avec ça, tu passes pour un gourou !
;-)))
Daniel
Ou trouver ces constantes avec leurs valeurs numeriques ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaxl11/html/xlhowConstants_HV01049962.asp
Avec ça, tu passes pour un gourou !
;-)))
Daniel
Ou trouver ces constantes avec leurs valeurs numeriques ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaxl11/html/xlhowConstants_HV01049962.asp
Avec ça, tu passes pour un gourou !
;-)))
Daniel