OVH Cloud OVH Cloud

Coller des donnees selon criteres

8 réponses
Avatar
Michel
Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&10 =
tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro copier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 avec le
nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier sous
ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.

8 réponses

Avatar
justasimpleword
Bonjour,

En espérant que j'ai bien compris le problème :

Je créerai d'abord un tableau croisé dynamique.
Dans disposition, mettre "nom" sur "page" et tes données en ligne et en
colonne.
Une fois ton tableau créé (en général, ds les champs, je supprime les
totaux), tu vas dans la barre d'outil "tableau croisé dynamique" et tu
cliques sur "Afficher les pages"... (selon les versions d'Excel, tu peux
"afficher les pages" en glissant sur ton "titre de page" et clic droit.
1ère étape terminée

Ensuite, tu appliques la macro suivante qu'a créé JB suite à une question
posée : cette macro permet d'enregistrer chaque feuille dans un classeur
différent avec pour titre le nom de ta feuille... (et ce dans le dossier où
est enregistré ton document de bas)

Sub DecoupeClasseurPlusieurs()
Application.DisplayAlerts = False
ChDir ActiveWorkbook.Path
For Each s In ActiveWorkbook.Sheets
s.Copy
ActiveWorkbook.SaveAs Filename:=s.Name
ActiveWorkbook.Close
Next s
End Sub

Encore merci JB ;-)

En espérant t'avoir aidé...


Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&10 =
tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro copier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 avec le
nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier sous
ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.





Avatar
jeannot
Bonjour,
une autre solution à adapter à ton fichier

Sub Copiage()
Dim Plage As Range
Dim Cell As Range
Dim i As Integer
Dim Tableau() As String
Dim Compte As Integer
Dim Cible
Dim Nom

Range("A1").Select
Selection.AutoFilter
Cible = InputBox("Veuillez saisir le nom recherché", "RECHERCHE")
Selection.AutoFilter Field:=1, Criteria1:=Cible

Set Plage = Sheets(1).Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
Compte = Plage.Count - 1

' !!!!!!!!!Remplissage du tableau
ReDim Tableau(0 To Compte, 0 To 1)
For Each Cell In Plage
Tableau(i, 0) = Cell
Tableau(i, 1) = Cell.Offset(0, 1)
i = i + 1
Next
'!!!!!!!!!remplissage des cellule A1 B1 .....Dans un nouveau classeur
Workbooks.Add
Sheets(1).Select
For i = 0 To Compte
Cells(i + 1, 1).Value = Tableau(i, 0)
Cells(i + 1, 2).Value = Tableau(i, 1)

Next i
Nom = "C:Mes Documents" & Cible & ".xls"
ActiveWorkbook.SaveAs FileName:=Nom
ActiveWorkbook.Close

Sheets(1).Select
Range("A1").Select
Selection.AutoFilter

End Sub
cordiales salutations

JL

Bonjour,

En espérant que j'ai bien compris le problème :

Je créerai d'abord un tableau croisé dynamique.
Dans disposition, mettre "nom" sur "page" et tes données en ligne et en
colonne.
Une fois ton tableau créé (en général, ds les champs, je supprime les
totaux), tu vas dans la barre d'outil "tableau croisé dynamique" et tu
cliques sur "Afficher les pages"... (selon les versions d'Excel, tu peux
"afficher les pages" en glissant sur ton "titre de page" et clic droit.
1ère étape terminée

Ensuite, tu appliques la macro suivante qu'a créé JB suite à une qu estion
posée : cette macro permet d'enregistrer chaque feuille dans un classeur
différent avec pour titre le nom de ta feuille... (et ce dans le dossie r où
est enregistré ton document de bas)

Sub DecoupeClasseurPlusieurs()
Application.DisplayAlerts = False
ChDir ActiveWorkbook.Path
For Each s In ActiveWorkbook.Sheets
s.Copy
ActiveWorkbook.SaveAs Filename:=s.Name
ActiveWorkbook.Close
Next s
End Sub

Encore merci JB ;-)

En espérant t'avoir aidé...


Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&1 0 =
tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro cop ier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 av ec le
nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier sous
ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.







Avatar
Michel
Salut,

Merci pour l'aide sauf que j'aurais voulu une solution completement
automatique sans avoir besoin de demander quelque chose a l'utilisateur.

Si tu as une centaine de noms.... ca faire long....

Merci quand meme, je vais quand meme voir l'autre partie de code.

@+

Michel.



"jeannot" a écrit dans le message de news:

Bonjour,
une autre solution à adapter à ton fichier

Sub Copiage()
Dim Plage As Range
Dim Cell As Range
Dim i As Integer
Dim Tableau() As String
Dim Compte As Integer
Dim Cible
Dim Nom

Range("A1").Select
Selection.AutoFilter
Cible = InputBox("Veuillez saisir le nom recherché", "RECHERCHE")
Selection.AutoFilter Field:=1, Criteria1:=Cible

Set Plage = Sheets(1).Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
Compte = Plage.Count - 1

' !!!!!!!!!Remplissage du tableau
ReDim Tableau(0 To Compte, 0 To 1)
For Each Cell In Plage
Tableau(i, 0) = Cell
Tableau(i, 1) = Cell.Offset(0, 1)
i = i + 1
Next
'!!!!!!!!!remplissage des cellule A1 B1 .....Dans un nouveau classeur
Workbooks.Add
Sheets(1).Select
For i = 0 To Compte
Cells(i + 1, 1).Value = Tableau(i, 0)
Cells(i + 1, 2).Value = Tableau(i, 1)

Next i
Nom = "C:Mes Documents" & Cible & ".xls"
ActiveWorkbook.SaveAs FileName:=Nom
ActiveWorkbook.Close

Sheets(1).Select
Range("A1").Select
Selection.AutoFilter

End Sub
cordiales salutations

JL

Bonjour,

En espérant que j'ai bien compris le problème :

Je créerai d'abord un tableau croisé dynamique.
Dans disposition, mettre "nom" sur "page" et tes données en ligne et en
colonne.
Une fois ton tableau créé (en général, ds les champs, je supprime les
totaux), tu vas dans la barre d'outil "tableau croisé dynamique" et tu
cliques sur "Afficher les pages"... (selon les versions d'Excel, tu peux
"afficher les pages" en glissant sur ton "titre de page" et clic droit.
1ère étape terminée

Ensuite, tu appliques la macro suivante qu'a créé JB suite à une question
posée : cette macro permet d'enregistrer chaque feuille dans un classeur
différent avec pour titre le nom de ta feuille... (et ce dans le dossier

est enregistré ton document de bas)

Sub DecoupeClasseurPlusieurs()
Application.DisplayAlerts = False
ChDir ActiveWorkbook.Path
For Each s In ActiveWorkbook.Sheets
s.Copy
ActiveWorkbook.SaveAs Filename:=s.Name
ActiveWorkbook.Close
Next s
End Sub

Encore merci JB ;-)

En espérant t'avoir aidé...


Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&10 > > tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro
copier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3
avec le
nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier
sous
ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.







Avatar
Michel
Salut,

Merci pour ta reponse.

J'ai fais le tableau croise dynamique, mais apres je la macro ne me sert a
rien dans la mesure que je ne dois pas copier mes feuilles vers un nouveau
fichier.
J'ai qu'une seule feuille avec toute ma liste de noms. d'apres ces noms, si
ils se repetent, je voudrais copier les lignes vers un nouveau
classeur(fichier) et le sauver., et cela doit se repeter pour tous les noms,
qui sont differents.

Une autre petite soluce ?

@+

Michel.


"justasimpleword" a écrit dans
le message de news:
Bonjour,

En espérant que j'ai bien compris le problème :

Je créerai d'abord un tableau croisé dynamique.
Dans disposition, mettre "nom" sur "page" et tes données en ligne et en
colonne.
Une fois ton tableau créé (en général, ds les champs, je supprime les
totaux), tu vas dans la barre d'outil "tableau croisé dynamique" et tu
cliques sur "Afficher les pages"... (selon les versions d'Excel, tu peux
"afficher les pages" en glissant sur ton "titre de page" et clic droit.
1ère étape terminée

Ensuite, tu appliques la macro suivante qu'a créé JB suite à une question
posée : cette macro permet d'enregistrer chaque feuille dans un classeur
différent avec pour titre le nom de ta feuille... (et ce dans le dossier

est enregistré ton document de bas)

Sub DecoupeClasseurPlusieurs()
Application.DisplayAlerts = False
ChDir ActiveWorkbook.Path
For Each s In ActiveWorkbook.Sheets
s.Copy
ActiveWorkbook.SaveAs Filename:=s.Name
ActiveWorkbook.Close
Next s
End Sub

Encore merci JB ;-)

En espérant t'avoir aidé...


Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&10 >> tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro
copier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 avec
le
nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier
sous
ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.







Avatar
Michel
Salut,

C'est tout bon j'ai bidouille un truc qui marche,

Merci encore a vous deux pour vos reponses,

@+

Michel.


"Michel" a écrit dans le message de
news:
Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&10 =
tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro copier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 avec
le nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier
sous ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.



Avatar
jeannot
Bonjour,

voila une macro à adapter à tes besoin
elle crée autant de classeur qu'il y a de noms sans intervention

Sub copie()
Dim NbreDeFois%
Dim Cible
Dim Plage As Range
Dim Compte%
Dim I%
Dim Cell As Range
Dim Nom
Dim PlageInitiale As Range
Dim J%
Dim TabloInital()
Dim Compteur%
Application.ScreenUpdating = False
Set PlageInitiale = Range("A1", [A1].End(xlDown))
J = PlageInitiale.Count
ReDim TabloInital(1 To J, 1 To 2)
For Compteur = 1 To J
TabloInital(Compteur, 1) = Cells(Compteur, 1)
TabloInital(Compteur, 2) = Cells(Compteur, 2)
Next


Columns("A:B").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Rang e(
_
"B2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase _
:úlse, Orientation:=xlTopToBottom, DataOption1:=xlSortNorma l,
_
DataOption2:=xlSortNormal
Cible = [A2]
NbreDeFois = WorksheetFunction.CountIf(Range("A:A"), Cible)

Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=Cible

Set Plage = Sheets(1).Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
Compte = Plage.Count - 1
ReDim Tableau(0 To Compte, 0 To 1)
For Each Cell In Plage
Tableau(I, 0) = Cell
Tableau(I, 1) = Cell.Offset(0, 1)
I = I + 1
Next
'!!!!!!!!!remplissage des cellule A1 B1 .....
Workbooks.Add
Sheets(1).Select
For I = 0 To Compte
Cells(I + 1, 1).Value = Tableau(I, 0)
Cells(I + 1, 2).Value = Tableau(I, 1)

Next I

Nom = "C:Documents and SettingsJEANBureauEssai" & Cible & ".xls"
ActiveWorkbook.SaveAs Filename:=Nom
ActiveWorkbook.Close

Sheets(1).Select
Range("A1").Select
Selection.AutoFilter

Rows("2:" & NbreDeFois + 1).Select
Selection.Delete Shift:=xlUp
I = 0
GoTo suite
suite:
If [A2] = "" Then GoTo Fin







Range("A1").Select
Range("A1:B14").Sort Key1:=Range("A2"), Order1:=xlAscending,
Key2:=Range( _
"B2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase _
:úlse, Orientation:=xlTopToBottom, DataOption1:=xlSortNorma l,
_
DataOption2:=xlSortNormal
Cible = [A2]
NbreDeFois = WorksheetFunction.CountIf(Range("A:A"), Cible)

Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=Cible

Set Plage = Sheets(1).Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
Compte = Plage.Count - 1
ReDim Tableau(0 To Compte, 0 To 1)
For Each Cell In Plage
Tableau(I, 0) = Cell
Tableau(I, 1) = Cell.Offset(0, 1)
I = I + 1
Next
'!!!!!!!!!remplissage des cellule A1 B1 .....
Workbooks.Add
Sheets(1).Select
For I = 0 To Compte
Cells(I + 1, 1).Value = Tableau(I, 0)
Cells(I + 1, 2).Value = Tableau(I, 1)

Next I
'C:Documents and SettingsJEANBureauEssai
Nom = "C:Documents and SettingsJEANBureauEssai" & Cible & ".xls"
ActiveWorkbook.SaveAs Filename:=Nom
ActiveWorkbook.Close

Sheets(1).Select
Range("A1").Select
Selection.AutoFilter

Rows("2:" & NbreDeFois + 1).Select
Selection.Delete Shift:=xlUp
I = 0
GoTo suite
Fin:

For Compteur = 1 To J
Cells(Compteur, 1) = TabloInital(Compteur, 1)
Cells(Compteur, 2) = TabloInital(Compteur, 2)
Next


Exit Sub

End Sub


Salut,

C'est tout bon j'ai bidouille un truc qui marche,

Merci encore a vous deux pour vos reponses,

@+

Michel.


"Michel" a écrit dans le message de
news:
Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&1 0 =
tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro cop ier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 av ec
le nom en colonne A et les valeurs en colonne B, puis de sauver ce fich ier
sous ce meme nom, le fermer puis de continuer la boucle pour faire le n om
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.





Avatar
JB
Bonjour,

http://cjoint.com/?imroTISgyS

Sub CreeClasseurs()
Range([A2], [B65000].End(xlUp)).Sort key1:=[A2]
[A2].Select
Do While ActiveCell <> ""
nom = ActiveCell
adr = ActiveCell.Address
Do While ActiveCell = nom
ActiveCell.Offset(1, 0).Select
Loop
Sheets(2).Cells.Clear
Range(adr, ActiveCell.Offset(-1, 1)).Copy Sheets(2).[A2]
Sheets(1).[A1:B1].Copy Sheets(2).[A1]
Sheets(2).Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs nom
ActiveWorkbook.Close
Loop
End Sub

Cordialement JB


Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&10 =
tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro copier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 avec le
nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier s ous
ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.


Avatar
justasimpleword
Bonjour,

Quand tu fais ton tableau croisé, dans les données, mets-tu "NB nom" ?
Auquel cas, tu obtiens une ligne par nom avec en face le nombre de fois où il
apparaît (donc un nom ne se répète pas).
En fait, je ne comprends pas trop ce que tu souhaites faire... Y a -t-il
d'autres données que tu souhaites avoir en face de ces noms ?
Que souhaites-tu copier au juste ?
Peux-tu envoyer ton fichier ?


Salut,

Merci pour ta reponse.

J'ai fais le tableau croise dynamique, mais apres je la macro ne me sert a
rien dans la mesure que je ne dois pas copier mes feuilles vers un nouveau
fichier.
J'ai qu'une seule feuille avec toute ma liste de noms. d'apres ces noms, si
ils se repetent, je voudrais copier les lignes vers un nouveau
classeur(fichier) et le sauver., et cela doit se repeter pour tous les noms,
qui sont differents.

Une autre petite soluce ?

@+

Michel.


"justasimpleword" a écrit dans
le message de news:
Bonjour,

En espérant que j'ai bien compris le problème :

Je créerai d'abord un tableau croisé dynamique.
Dans disposition, mettre "nom" sur "page" et tes données en ligne et en
colonne.
Une fois ton tableau créé (en général, ds les champs, je supprime les
totaux), tu vas dans la barre d'outil "tableau croisé dynamique" et tu
cliques sur "Afficher les pages"... (selon les versions d'Excel, tu peux
"afficher les pages" en glissant sur ton "titre de page" et clic droit.
1ère étape terminée

Ensuite, tu appliques la macro suivante qu'a créé JB suite à une question
posée : cette macro permet d'enregistrer chaque feuille dans un classeur
différent avec pour titre le nom de ta feuille... (et ce dans le dossier

est enregistré ton document de bas)

Sub DecoupeClasseurPlusieurs()
Application.DisplayAlerts = False
ChDir ActiveWorkbook.Path
For Each s In ActiveWorkbook.Sheets
s.Copy
ActiveWorkbook.SaveAs Filename:=s.Name
ActiveWorkbook.Close
Next s
End Sub

Encore merci JB ;-)

En espérant t'avoir aidé...


Bonjour a tout le monde,

Ce n'est pas tres dur mais j'ai du mal a concevoir comment faire...

J'ai un tableau excel avec en colonne A des noms et en colonne B des
valeurs. Ces noms peuvent se repeter ligne 1&5&15 = toto et ligne 2&10 > >> tata

Prenons l'exemple de toto.

Ce que je voudrais faire c'est de pouvoir automatiquement via macro
copier
les lignes 1&5&15 dans un nouveaux fichier qui serait en ligne 1&2&3 avec
le
nom en colonne A et les valeurs en colonne B, puis de sauver ce fichier
sous
ce meme nom, le fermer puis de continuer la boucle pour faire le nom
suivant.

Si possible en ne faisant pas de tris, sinon pas grave.

Si quelqu'un a une soluce, ca serait sympa.

D'avance un grand merci,

@+

Michel.