Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

création de classeur par VBA

6 réponses
Avatar
Orsu
Bonsoir à tous,

J'ai un problème qui reste partiellement irrésolu
Comme robocor (cf question du 20/02), je reçois des bases de données sous
excel de format variable en lignes et colonnes.
Je dois envoyer à chaque « Région » (données en colonne A), quelquefois
chaque « Agence » (données en colonne B ou C) les données qui les
concernent.
A noter que les données dans les différentes colonnes peuvent indifféremment
être du texte ou des nombres (en clair une région peut être désignée
littéralement ou par une codification numérique)

J'aimerai pouvoir disposer d'une macro qui crée un classeur par « Région »
(cad les données contenues dans la colonne A) à partir de la base originale.
(en fait c'est un peu plus compliqué car je peux avoir besoin de scinder à
nouveau les classeurs créés en fonction d'autres critères : par Agence, par
Année,.. ; l'idéal serait dès le départ une boite de dialogue permettant de
sélectionner la colonne qui constitue la « source » ; mais bon, je m'y
attellerai plus tard .si déjà j'arrive au premier objectif !)

Si le classeur original est Activité_janvier, le classeur cible serait :
idf_vente_janvier, PACA_vente_janvier etc....
Le must serait de pouvoir de pouvoir nommer automatiquement la feuille de
destination à l'identique du classeur dans lequel elle est créée.

Ci dessous un exemple de la base réduite Activité_janvier.

Région AGENCE ANNEE donnée1 donnée2
780 1 2007 41495405 0
DOM 9 2005 42508645 0
730 19 2005 44110295 44110295
CORSE 25 2005 45052407 45052407
CORSE 8 2006 47822725 47822725
930 19 2005 48267278 48267278
930 10 2005 55232628 55232628
PACA 25 2006 68811131 68811131
PARIS 22 2007 78836106 78836106
PARIS 10 2006 99430025 91117401
PARIS 23 2005 91151753 91151753
940 10 2005 107425377 107425377
940 3 2007 113033953 113033953
910 2 2006 476553273 476553273

L e résultat serait 9 classeurs :
730 1 enregistrement
780 1 enregistrement
910 1 enregistrement
930 2 enregistrements
940 2 enregistrements
CORSE 2 enregistrements
DOM 1 enregistrement
PACA 1 enregistrement
PARIS 3 enregistrements

J'ai essayé d'adapter la macro écrite par JB pourrobocor sur un pbme
similaire...mais le résultat n'est carrément pas à la hauteur : erreur 1004
ou quand je neutralise certaines lignes du code, création des classeurs mais
sans les enregistrements........

Je mets sur Cjoint un exemple de la base et l'ébauche de macro en cours
http://cjoint.com/?cysnPoC1ci

Merci d'avance !

Bien cordialement

6 réponses

Avatar
JB
Bonsoir,

Sub CreeClasseurs()
Application.DisplayAlerts = False
f = ActiveSheet.Name
[A1:D10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[h1],
Unique:=True
For Each c In Range("H2", Range("H65000").End(xlUp))
Range("H2") = c
Sheets.Add
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1],
Unique:úlse
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=c
ActiveWorkbook.Close
ActiveSheet.Delete
Sheets(f).Select
Next c
End Sub

http://cjoint.com/?cytdfUrWBG

JB

On 24 fév, 18:17, "Orsu" wrote:
Bonsoir à tous,

J'ai un  problème qui reste partiellement irrésolu
Comme robocor (cf question du 20/02), je reçois des bases de données s ous
excel de format variable en lignes et colonnes.
Je dois envoyer à chaque « Région » (données en colonne A), quel quefois
chaque « Agence » (données en colonne B ou C) les données qui les
concernent.
A noter que les données dans les différentes colonnes peuvent indiff éremment
être du texte ou des nombres (en clair une région peut être désign ée
littéralement ou par une codification numérique)

J'aimerai pouvoir disposer d'une macro qui crée un classeur par « Ré gion »
(cad les données contenues dans la colonne A) à partir de la base orig inale.
(en fait c'est un peu plus compliqué car je peux avoir besoin de scinder à
nouveau les classeurs créés en fonction d'autres critères : par Agen ce, par
Année,.. ; l'idéal serait dès le départ une boite de dialogue perm ettant de
sélectionner la colonne qui constitue la « source » ; mais bon, je m 'y
attellerai plus tard .si déjà j'arrive au premier objectif !)

Si le classeur original est Activité_janvier, le classeur cible serait :
idf_vente_janvier, PACA_vente_janvier etc....
Le must serait  de pouvoir de pouvoir nommer automatiquement la feuille de
destination à l'identique du classeur dans lequel elle est créée.

Ci dessous un exemple de la base réduite Activité_janvier.

Région      AGENCE     ANNEE  donnée1      donnée2
780               1            2007      4 1495405         0
DOM             9           2005      42508645         0
730               19          2005      4411 0295     44110295
CORSE         25         2005      45052407     45052407
CORSE          8          2006      47822725     47822725
930               19          2005      4826 7278     48267278
930               10          2005      5523 2628     55232628
PACA           25         2006       68811131      68811131
PARIS           22        2007       78836106      78836106
PARIS           10        2006       99430025      91117401
PARIS           23        2005       91151753     91151753
940               10         2005       107425 377    107425377
940               3           2007       113 033953    113033953
910               2           2006       476 553273    476553273

L e résultat serait 9 classeurs :
730     1 enregistrement
780     1 enregistrement
910     1 enregistrement
930     2 enregistrements
940     2 enregistrements
CORSE     2 enregistrements
DOM     1 enregistrement
PACA     1 enregistrement
PARIS     3 enregistrements

J'ai essayé d'adapter la macro écrite par JB pourrobocor sur un pbme
similaire...mais le résultat n'est carrément pas à la hauteur : erre ur 1004
ou quand je neutralise certaines lignes du code, création des classeurs mais
sans les enregistrements........

Je mets sur Cjoint un exemple de la base et l'ébauche de macro en coursh ttp://cjoint.com/?cysnPoC1ci

Merci d'avance !

Bien cordialement


Avatar
JB
Version avec choix du critère:

http://cjoint.com/?cytk1P2mgP

JB
http://boisgontierjacques.free.fr/

On 24 fév, 19:03, JB wrote:
Bonsoir,

Sub CreeClasseurs()
  Application.DisplayAlerts = False
  f = ActiveSheet.Name
  [A1:D10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[h1] ,
Unique:=True
  For Each c In Range("H2", Range("H65000").End(xlUp))
    Range("H2") = c
    Sheets.Add
    Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
       CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1],
Unique:úlse
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=c
    ActiveWorkbook.Close
    ActiveSheet.Delete
    Sheets(f).Select
  Next c
End Sub

http://cjoint.com/?cytdfUrWBG

JB

On 24 fév, 18:17, "Orsu" wrote:



Bonsoir à tous,

J'ai un  problème qui reste partiellement irrésolu
Comme robocor (cf question du 20/02), je reçois des bases de données sous
excel de format variable en lignes et colonnes.
Je dois envoyer à chaque « Région » (données en colonne A), qu elquefois
chaque « Agence » (données en colonne B ou C) les données qui le s
concernent.
A noter que les données dans les différentes colonnes peuvent indiff éremment
être du texte ou des nombres (en clair une région peut être dési gnée
littéralement ou par une codification numérique)

J'aimerai pouvoir disposer d'une macro qui crée un classeur par « R égion »
(cad les données contenues dans la colonne A) à partir de la base or iginale.
(en fait c'est un peu plus compliqué car je peux avoir besoin de scind er à
nouveau les classeurs créés en fonction d'autres critères : par Ag ence, par
Année,.. ; l'idéal serait dès le départ une boite de dialogue pe rmettant de
sélectionner la colonne qui constitue la « source » ; mais bon, je m'y
attellerai plus tard .si déjà j'arrive au premier objectif !)

Si le classeur original est Activité_janvier, le classeur cible serait :
idf_vente_janvier, PACA_vente_janvier etc....
Le must serait  de pouvoir de pouvoir nommer automatiquement la feuill e de
destination à l'identique du classeur dans lequel elle est créée.

Ci dessous un exemple de la base réduite Activité_janvier.

Région      AGENCE     ANNEE  donnée1      donné e2
780               1            2007      41495405         0
DOM             9           2005      425086 45         0
730               19          2005      44 110295     44110295
CORSE         25         2005      45052407     45052407
CORSE          8          2006      47822725     47822725
930               19          2005      48 267278     48267278
930               10          2005      55 232628     55232628
PACA           25         2006       68811131      68811131
PARIS           22        2007       78836106      78836106
PARIS           10        2006       99430025      91117401
PARIS           23        2005       91151753     91151753
940               10         2005       1074 25377    107425377
940               3           2007       1 13033953    113033953
910               2           2006       4 76553273    476553273

L e résultat serait 9 classeurs :
730     1 enregistrement
780     1 enregistrement
910     1 enregistrement
930     2 enregistrements
940     2 enregistrements
CORSE     2 enregistrements
DOM     1 enregistrement
PACA     1 enregistrement
PARIS     3 enregistrements

J'ai essayé d'adapter la macro écrite par JB pourrobocor sur un pbme
similaire...mais le résultat n'est carrément pas à la hauteur : er reur 1004
ou quand je neutralise certaines lignes du code, création des classeur s mais
sans les enregistrements........

Je mets sur Cjoint un exemple de la base et l'ébauche de macro en cour shttp://cjoint.com/?cysnPoC1ci

Merci d'avance !

Bien cordialement- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Orsu
Merci pour ces solutions JB .....mais les 2 macros me renvoient une erreur
d'exécution 1004 ("nom de champ introuvable ou incorrect dans la plage
d'extraction") sur le fragment suivant :
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1], Unique:úlse

pas comprendre....
??? une idée

Bien cordialement

Orsu


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

Version avec choix du critère:

http://cjoint.com/?cytk1P2mgP

JB
http://boisgontierjacques.free.fr/

On 24 fév, 19:03, JB wrote:
Bonsoir,

Sub CreeClasseurs()
Application.DisplayAlerts = False
f = ActiveSheet.Name
[A1:D10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[h1],
Unique:=True
For Each c In Range("H2", Range("H65000").End(xlUp))
Range("H2") = c
Sheets.Add
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1],
Unique:úlse
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=c
ActiveWorkbook.Close
ActiveSheet.Delete
Sheets(f).Select
Next c
End Sub

http://cjoint.com/?cytdfUrWBG

JB

On 24 fév, 18:17, "Orsu" wrote:



Bonsoir à tous,

J'ai un problème qui reste partiellement irrésolu
Comme robocor (cf question du 20/02), je reçois des bases de données
sous
excel de format variable en lignes et colonnes.
Je dois envoyer à chaque « Région » (données en colonne A), quelquefois
chaque « Agence » (données en colonne B ou C) les données qui les
concernent.
A noter que les données dans les différentes colonnes peuvent
indifféremment
être du texte ou des nombres (en clair une région peut être désignée
littéralement ou par une codification numérique)

J'aimerai pouvoir disposer d'une macro qui crée un classeur par «
Région »
(cad les données contenues dans la colonne A) à partir de la base
originale.
(en fait c'est un peu plus compliqué car je peux avoir besoin de scinder
à
nouveau les classeurs créés en fonction d'autres critères : par Agence,
par
Année,.. ; l'idéal serait dès le départ une boite de dialogue permettant
de
sélectionner la colonne qui constitue la « source » ; mais bon, je m'y
attellerai plus tard .si déjà j'arrive au premier objectif !)

Si le classeur original est Activité_janvier, le classeur cible serait :
idf_vente_janvier, PACA_vente_janvier etc....
Le must serait de pouvoir de pouvoir nommer automatiquement la feuille
de
destination à l'identique du classeur dans lequel elle est créée.

Ci dessous un exemple de la base réduite Activité_janvier.

Région AGENCE ANNEE donnée1 donnée2
780 1 2007 41495405 0
DOM 9 2005 42508645 0
730 19 2005 44110295 44110295
CORSE 25 2005 45052407 45052407
CORSE 8 2006 47822725 47822725
930 19 2005 48267278 48267278
930 10 2005 55232628 55232628
PACA 25 2006 68811131 68811131
PARIS 22 2007 78836106 78836106
PARIS 10 2006 99430025 91117401
PARIS 23 2005 91151753 91151753
940 10 2005 107425377 107425377
940 3 2007 113033953 113033953
910 2 2006 476553273 476553273

L e résultat serait 9 classeurs :
730 1 enregistrement
780 1 enregistrement
910 1 enregistrement
930 2 enregistrements
940 2 enregistrements
CORSE 2 enregistrements
DOM 1 enregistrement
PACA 1 enregistrement
PARIS 3 enregistrements

J'ai essayé d'adapter la macro écrite par JB pourrobocor sur un pbme
similaire...mais le résultat n'est carrément pas à la hauteur : erreur
1004
ou quand je neutralise certaines lignes du code, création des classeurs
mais
sans les enregistrements........

Je mets sur Cjoint un exemple de la base et l'ébauche de macro en
courshttp://cjoint.com/?cysnPoC1ci

Merci d'avance !

Bien cordialement- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
JB
Excel 2002:

http://cjoint.com/?cyuXZNBQgr

JB

On 24 fév, 20:13, "Orsu" wrote:
Merci pour ces solutions JB .....mais les 2 macros me renvoient une erreur
d'exécution 1004 ("nom de champ introuvable ou incorrect dans la plage
d'extraction") sur le fragment suivant :
 Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
       CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1], Un ique:úlse

pas comprendre....
??? une idée

Bien cordialement

Orsu

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

Version avec choix du critère:

http://cjoint.com/?cytk1P2mgP

JBhttp://boisgontierjacques.free.fr/

On 24 fév, 19:03, JB wrote:



Bonsoir,

Sub CreeClasseurs()
Application.DisplayAlerts = False
f = ActiveSheet.Name
[A1:D10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[h1],
Unique:=True
For Each c In Range("H2", Range("H65000").End(xlUp))
Range("H2") = c
Sheets.Add
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1],
Unique:úlse
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=c
ActiveWorkbook.Close
ActiveSheet.Delete
Sheets(f).Select
Next c
End Sub

http://cjoint.com/?cytdfUrWBG

JB

On 24 fév, 18:17, "Orsu" wrote:

Bonsoir à tous,

J'ai un problème qui reste partiellement irrésolu
Comme robocor (cf question du 20/02), je reçois des bases de donné es
sous
excel de format variable en lignes et colonnes.
Je dois envoyer à chaque « Région » (données en colonne A), quelquefois
chaque « Agence » (données en colonne B ou C) les données qui les
concernent.
A noter que les données dans les différentes colonnes peuvent
indifféremment
être du texte ou des nombres (en clair une région peut être dé signée
littéralement ou par une codification numérique)

J'aimerai pouvoir disposer d'une macro qui crée un classeur par «
Région »
(cad les données contenues dans la colonne A) à partir de la base
originale.
(en fait c'est un peu plus compliqué car je peux avoir besoin de sci nder
à
nouveau les classeurs créés en fonction d'autres critères : par Agence,
par
Année,.. ; l'idéal serait dès le départ une boite de dialogue permettant
de
sélectionner la colonne qui constitue la « source » ; mais bon, je m'y
attellerai plus tard .si déjà j'arrive au premier objectif !)

Si le classeur original est Activité_janvier, le classeur cible sera it :
idf_vente_janvier, PACA_vente_janvier etc....
Le must serait de pouvoir de pouvoir nommer automatiquement la feuille
de
destination à l'identique du classeur dans lequel elle est créée .

Ci dessous un exemple de la base réduite Activité_janvier.

Région AGENCE ANNEE donnée1 donnée2
780 1 2007 41495405 0
DOM 9 2005 42508645 0
730 19 2005 44110295 44110295
CORSE 25 2005 45052407 45052407
CORSE 8 2006 47822725 47822725
930 19 2005 48267278 48267278
930 10 2005 55232628 55232628
PACA 25 2006 68811131 68811131
PARIS 22 2007 78836106 78836106
PARIS 10 2006 99430025 91117401
PARIS 23 2005 91151753 91151753
940 10 2005 107425377 107425377
940 3 2007 113033953 113033953
910 2 2006 476553273 476553273

L e résultat serait 9 classeurs :
730 1 enregistrement
780 1 enregistrement
910 1 enregistrement
930 2 enregistrements
940 2 enregistrements
CORSE 2 enregistrements
DOM 1 enregistrement
PACA 1 enregistrement
PARIS 3 enregistrements

J'ai essayé d'adapter la macro écrite par JB pourrobocor sur un pb me
similaire...mais le résultat n'est carrément pas à la hauteur : erreur
1004
ou quand je neutralise certaines lignes du code, création des classe urs
mais
sans les enregistrements........

Je mets sur Cjoint un exemple de la base et l'ébauche de macro en
courshttp://cjoint.com/?cysnPoC1ci

Merci d'avance !

Bien cordialement- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Avatar
Orsu
Merci c'est impeccable (même si je n'ai pas compris la différence avec les 2
premiers)

J'ai rajouté une input box pour choisir la colonne source car mes colonnes
pouvaient excéder la colonne H
http://cjoint.com/?cyvUDVB5ZZ

Bonne soirée


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

Excel 2002:

http://cjoint.com/?cyuXZNBQgr

JB

On 24 fév, 20:13, "Orsu" wrote:
Merci pour ces solutions JB .....mais les 2 macros me renvoient une erreur
d'exécution 1004 ("nom de champ introuvable ou incorrect dans la plage
d'extraction") sur le fragment suivant :
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1], Unique:úlse

pas comprendre....
??? une idée

Bien cordialement

Orsu

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

Version avec choix du critère:

http://cjoint.com/?cytk1P2mgP

JBhttp://boisgontierjacques.free.fr/

On 24 fév, 19:03, JB wrote:



Bonsoir,

Sub CreeClasseurs()
Application.DisplayAlerts = False
f = ActiveSheet.Name
[A1:D10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[h1],
Unique:=True
For Each c In Range("H2", Range("H65000").End(xlUp))
Range("H2") = c
Sheets.Add
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1],
Unique:úlse
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=c
ActiveWorkbook.Close
ActiveSheet.Delete
Sheets(f).Select
Next c
End Sub

http://cjoint.com/?cytdfUrWBG

JB

On 24 fév, 18:17, "Orsu" wrote:

Bonsoir à tous,

J'ai un problème qui reste partiellement irrésolu
Comme robocor (cf question du 20/02), je reçois des bases de données
sous
excel de format variable en lignes et colonnes.
Je dois envoyer à chaque « Région » (données en colonne A),
quelquefois
chaque « Agence » (données en colonne B ou C) les données qui les
concernent.
A noter que les données dans les différentes colonnes peuvent
indifféremment
être du texte ou des nombres (en clair une région peut être désignée
littéralement ou par une codification numérique)

J'aimerai pouvoir disposer d'une macro qui crée un classeur par «
Région »
(cad les données contenues dans la colonne A) à partir de la base
originale.
(en fait c'est un peu plus compliqué car je peux avoir besoin de
scinder
à
nouveau les classeurs créés en fonction d'autres critères : par
Agence,
par
Année,.. ; l'idéal serait dès le départ une boite de dialogue
permettant
de
sélectionner la colonne qui constitue la « source » ; mais bon, je m'y
attellerai plus tard .si déjà j'arrive au premier objectif !)

Si le classeur original est Activité_janvier, le classeur cible serait
:
idf_vente_janvier, PACA_vente_janvier etc....
Le must serait de pouvoir de pouvoir nommer automatiquement la feuille
de
destination à l'identique du classeur dans lequel elle est créée.

Ci dessous un exemple de la base réduite Activité_janvier.

Région AGENCE ANNEE donnée1 donnée2
780 1 2007 41495405 0
DOM 9 2005 42508645 0
730 19 2005 44110295 44110295
CORSE 25 2005 45052407 45052407
CORSE 8 2006 47822725 47822725
930 19 2005 48267278 48267278
930 10 2005 55232628 55232628
PACA 25 2006 68811131 68811131
PARIS 22 2007 78836106 78836106
PARIS 10 2006 99430025 91117401
PARIS 23 2005 91151753 91151753
940 10 2005 107425377 107425377
940 3 2007 113033953 113033953
910 2 2006 476553273 476553273

L e résultat serait 9 classeurs :
730 1 enregistrement
780 1 enregistrement
910 1 enregistrement
930 2 enregistrements
940 2 enregistrements
CORSE 2 enregistrements
DOM 1 enregistrement
PACA 1 enregistrement
PARIS 3 enregistrements

J'ai essayé d'adapter la macro écrite par JB pourrobocor sur un pbme
similaire...mais le résultat n'est carrément pas à la hauteur : erreur
1004
ou quand je neutralise certaines lignes du code, création des
classeurs
mais
sans les enregistrements........

Je mets sur Cjoint un exemple de la base et l'ébauche de macro en
courshttp://cjoint.com/?cysnPoC1ci

Merci d'avance !

Bien cordialement- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des
messages précédents -


- Afficher le texte des messages précédents -




Avatar
JB
Il y avait une colonne de trop dans la définition de la
BD(fonctionnait quand même sur 2002).

JB
On 24 fév, 21:46, "Orsu" wrote:
Merci c'est impeccable (même si je n'ai pas compris la différence avec les 2
premiers)

J'ai rajouté une input box pour choisir la colonne source car mes colonn es
pouvaient excéder la colonne Hhttp://cjoint.com/?cyvUDVB5ZZ

Bonne soirée

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

Excel 2002:

http://cjoint.com/?cyuXZNBQgr

JB

On 24 fév, 20:13, "Orsu" wrote:



Merci pour ces solutions JB .....mais les 2 macros me renvoient une erre ur
d'exécution 1004 ("nom de champ introuvable ou incorrect dans la plage
d'extraction") sur le fragment suivant :
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1], Unique:úlse

pas comprendre....
??? une idée

Bien cordialement

Orsu

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

Version avec choix du critère:

http://cjoint.com/?cytk1P2mgP

JBhttp://boisgontierjacques.free.fr/

On 24 fév, 19:03, JB wrote:

Bonsoir,

Sub CreeClasseurs()
Application.DisplayAlerts = False
f = ActiveSheet.Name
[A1:D10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[h1] ,
Unique:=True
For Each c In Range("H2", Range("H65000").End(xlUp))
Range("H2") = c
Sheets.Add
Sheets(f).[A1:F10000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets(f).[H1:H2], CopyToRange:=[A1],
Unique:úlse
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=c
ActiveWorkbook.Close
ActiveSheet.Delete
Sheets(f).Select
Next c
End Sub

http://cjoint.com/?cytdfUrWBG

JB

On 24 fév, 18:17, "Orsu" wrote:

Bonsoir à tous,

J'ai un problème qui reste partiellement irrésolu
Comme robocor (cf question du 20/02), je reçois des bases de donn ées
sous
excel de format variable en lignes et colonnes.
Je dois envoyer à chaque « Région » (données en colonne A) ,
quelquefois
chaque « Agence » (données en colonne B ou C) les données qu i les
concernent.
A noter que les données dans les différentes colonnes peuvent
indifféremment
être du texte ou des nombres (en clair une région peut être d ésignée
littéralement ou par une codification numérique)

J'aimerai pouvoir disposer d'une macro qui crée un classeur par «
Région »
(cad les données contenues dans la colonne A) à partir de la bas e
originale.
(en fait c'est un peu plus compliqué car je peux avoir besoin de
scinder
à
nouveau les classeurs créés en fonction d'autres critères : pa r
Agence,
par
Année,.. ; l'idéal serait dès le départ une boite de dialogu e
permettant
de
sélectionner la colonne qui constitue la « source » ; mais bon , je m'y
attellerai plus tard .si déjà j'arrive au premier objectif !)

Si le classeur original est Activité_janvier, le classeur cible se rait
:
idf_vente_janvier, PACA_vente_janvier etc....
Le must serait de pouvoir de pouvoir nommer automatiquement la feuil le
de
destination à l'identique du classeur dans lequel elle est cré ée.

Ci dessous un exemple de la base réduite Activité_janvier.

Région AGENCE ANNEE donnée1 donnée2
780 1 2007 41495405 0
DOM 9 2005 42508645 0
730 19 2005 44110295 44110295
CORSE 25 2005 45052407 45052407
CORSE 8 2006 47822725 47822725
930 19 2005 48267278 48267278
930 10 2005 55232628 55232628
PACA 25 2006 68811131 68811131
PARIS 22 2007 78836106 78836106
PARIS 10 2006 99430025 91117401
PARIS 23 2005 91151753 91151753
940 10 2005 107425377 107425377
940 3 2007 113033953 113033953
910 2 2006 476553273 476553273

L e résultat serait 9 classeurs :
730 1 enregistrement
780 1 enregistrement
910 1 enregistrement
930 2 enregistrements
940 2 enregistrements
CORSE 2 enregistrements
DOM 1 enregistrement
PACA 1 enregistrement
PARIS 3 enregistrements

J'ai essayé d'adapter la macro écrite par JB pourrobocor sur un pbme
similaire...mais le résultat n'est carrément pas à la hauteur : erreur
1004
ou quand je neutralise certaines lignes du code, création des
classeurs
mais
sans les enregistrements........

Je mets sur Cjoint un exemple de la base et l'ébauche de macro en
courshttp://cjoint.com/?cysnPoC1ci

Merci d'avance !

Bien cordialement- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte de s
messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -