Comment séparer les données d"une même feuille en plusieurs onglet

Résolu
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011 - 4 juil. 2008 à 22:27
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011 - 5 juil. 2008 à 15:20
Bonjour,

Je ne suis pas bien sur d'être dans la bonne section, désolé par avance. (C'est ou VBA Excel ?)
Je suis sur VBA Excel et je souhaite séparer les données d'un même onglet et plusieurs onglets en fonction des critères de la colonne A
Exemple :
J'ai un onglet avec ça comme base :
A              B                  C
CAC40     01/01/08        4019
CAC40     02/01/08        4023
CAC40     03/01/08        4043
SBF120    01/01/08        235
SBF120    02/01/08        238
SBF120    03/01/08        245
(...)          (...)                (...)

Au finale je veux ça (avec cet exemple)
Onglet 2
A              B                  C

CAC40     01/01/08        4019

CAC40     02/01/08        4023
CAC40     03/01/08        4043

Onglet 3
SBF120    01/01/08        235

SBF120    02/01/08        238

SBF120    03/01/08        245

Onglet n
(...)          (...)                (...)

Et l'onglet 1 vide au final !

Je me suis complétement perdu dans le code avec une variable qui teste la colonne A et si cette dernière est différente de A-1 alors tu crée un nouvel onglet sinon tu copies colles sur le dernier onglet crée.
Voila voila, lost in translation idieordeco...
Si quelqu'en peut me rebrancher sur une piste ?

Merci par avance !

Bière qui roule bière qui mousse

5 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 juil. 2008 à 13:42
>>Le truc c'est que ma variable critere ne s'implémente pas. (Donc je copie/colle toujours le même indice (hum !)

Pas fort en VBA, alors Question:
Est-ce que ActiveSheet.Range("$A:$G").AutoFilter Field:=8, Criteria1:=critere
suffit pour éviter que ça copie et colle toujours le même indice.Car à part ça, l' indice critère ne figure nulle part ailleur.Dans ta boucle tu ne te refères qu' à J.
(Columns(j).Select)

A part ça, difficile pour moi de t' aider sur ce coup là !  
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 juil. 2008 à 23:18
Bonsoir,

Il semble que tu analyses bien ton problème... Maintenant, je pense que l'algo que tu veux faire n'est pas très bon...
En effet, le moindre désordre rendait tout bordelique, avec 2 onglets pour une même rubrique... je ne détaille pas plus, mais personnellement, je suivrais un autre chemin... en prenant un nom d'onglet valant celui de la colonne A.

Schématiquement, voici les étapes :

1er étape :
- Faire une fonction qui repère le nb d'enregistrement dans une feuille (c'est facile, et existe déjà...)

2 étape : l'algo...
- Recherche le nb d'enregistrement => fin
- De la ligne 1 à fin
- Lire l'élément de la colonne A (un enregistrement : CAC40 par exemple)
- Copier la ligne entière (avec les fonctions intégrées d'Excel => selection.copy)
- Rechercher parmi les noms des onglets, si CAC40 existe
- Selon la réponse on va à l'étape 3 ou 5

3 étapes : L'onglet existe !
- Changer la feuille correspondante à l'onglet
- Recherche le nb d'enregistrement => fin
- Se positionner juste une ligne après
- Coller la copie précédente (avec les fonctions d'Excel)

4 étapes : Retour à l'étape 2

5 étapes : L'onglet n'existe pas !
- Créer un onglet (Sheet.add)
- Changer son nom avec la valeur de l'élément de la colonne A précédent.
- Retour à l'étape 3

Amicalement,
Us.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
4 juil. 2008 à 23:50
Salut,
regardes cette discution..si ça peut t' aider.
http://www.vbfrance.com/infomsg_QUESTION-SUBSIDIAIRE-VB6-AJOUTER-FEUILLE-CLASSEUR_1164051.aspx#18

En partant du principe que tu regrouperas tout dans une seule feuille, qui servira selon l' exemple, comme source de données.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011
5 juil. 2008 à 13:26
Bonjour,

Tout d'abord, merci pour vos réponses.
J'ai repensé mon système.
En fait les données que je souhaite mettre en onglet font 170000 lignes pour 600 variables en A. (J'ai excel 2007 donc ça passe sans problème)
Seul souci ça va mettre deux ans à trier.
Dans l'idéal, après le tri des indices, je serai à 200 variables A et 50000 lignes (Là, c'est pour le boulot et Excel 2003 :) )

Maintenant je repense le système et je met les données en colonne.

Avant j'avais ça sur mon onglet indice:
A              B                  C
CAC40     01/01/08        4019
CAC40     02/01/08        4023
CAC40     03/01/08        4043
SBF120    01/01/08        235
SBF120    02/01/08        238
SBF120    03/01/08        245

Je vais faire ça sur un autre onglet VL (et un seul) :
                A             B (...)             J                  K                ETC....
 1                                                   CAC 40       SBF 120
 2              01/01/08                       4019            235
 3              02/01/08                       4023            238
 4              03/01/08                       4043            245

Le principe du début de la moulinette est le suivant :
Le filtre les indices les un après les autres par leur code (Qui une variable nombre) puis je copie/colle la valeur de l'indice sur l'onglet VL et colonne.
ça donne ça :

Sub tri()

Dim j As Long
Dim critere As Long
For critere = 85 To 100000
For j = 12 To 1000


    Sheets("indices").Select
    ActiveSheet.Range("$A:$G").AutoFilter Field:=8, Criteria1:=critere
    Columns("C:C").Select
    Selection.Copy
    Sheets("VL").Select
    Columns(j).Select
    ActiveSheet.Paste
    Next j
    Next critere

Le truc c'est que ma variable critere ne s'implémente pas. (Donc je copie/colle toujours le même indice (hum !)
En pas à pas, la moulinette passe de next j au début (sans passer sur Next critere donc)

Bière qui roule bière qui mousse
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
idieordeco Messages postés 28 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 20 février 2011
5 juil. 2008 à 15:20
Dim critere As Long
For critere = 85 To 100000
    Sheets("indices").Select
    ActiveSheet.Range("$A:$G").AutoFilter Field:=8, Criteria1:=critere
    Columns("C:C").Select
    Selection.Copy
    Sheets("VL").Select
    Columns("J:J").Select
    Selection.Insert Shift:=xlToRight
    Sheets("indices").Select
    ActiveSheet.Range("$A:$H").AutoFilter Field:=8

next critere

En fait comme ça, ça marche.

Mais j'arrête là car je ne suis pas bien sur des données sources que je traite.
Merci pour tout

Bière qui roule bière qui mousse
0
Rejoignez-nous