Classement automatique

benbenper Messages postés 6 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 18 juillet 2006 - 18 juil. 2006 à 11:44
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 - 18 juil. 2006 à 15:14
Bonjour

J'ai un tableau qui ressemble à cela :

PAGE PRINCIPALE :
Date / Nom / N° de compte / Valeur
ligne 1
ligne 2
ligne 3
etc.

Je souhaiterais classer les lignes en fonction des N° de comptes dans des onglets reprenant le n° de compte.

Par exemple : Prendre toutes les lignes avec le compte 62000 et les classer automatiquement dans l'onglet "62000". Prendre toutes les lignes avec le compte 625345 et les classer automatiquement dans l'onglet 625345, etc.

Comment faire pour automatiser cette tâche (En effet, j'ai de nombreux tableaux à retraiter) ?

D'avance merci pour votre aide.

Le novice

6 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
18 juil. 2006 à 11:50
Tu fais une boucle sur ta colonne n° compte et chaque fois que le n° correspond à ce que tu veux tu copies la ligne dans l'onglet correspondant. Ou tu peut stocker les données dans un tableau mais la ça se complique!

 Drikce 06
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
18 juil. 2006 à 11:56
Exemple dans un textbox tu met le numéro de compte

i = 2 (1ere ligne de ta colonne "ici B" n° compte)
Do
nomfeuille=textbox1.value
if cstr(Range(("B" & i)).Value)=cstr(textbox1.value)
Row(i).select
Selection.copy
sheets(nomfeuille).select

ici tu fais une nouvelle boucle pour coller à la suite des données
Selection.paste

i = i + 1
Loop Until (Range(("B" & i)).Value) = "" Or IsEmpty(Range(("B" & i)).Value)

 Drikce 06
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
18 juil. 2006 à 11:57
j'ai oublié le then et le end if

 Drikce 06
0
benbenper Messages postés 6 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 18 juillet 2006
18 juil. 2006 à 14:44
Donc si j'ai bien compris :
j'ai mon classeur excel avec une feuille récap pour les infos (lignes) que je veux dispatcher sur d'autre onglet (62, 63, 64, etc.). Les noms des feuilles correspondent aux noms des des informations recherchées

je créé une macro

Sub testclassement ()

Do
recap=textbox1.value
if cstr(Range(("62" & 2)).Value)=cstr(textbox1.value)
Row(2).select
Selection.copy
sheets(62).select

Selection.paste

i = i + 1
Loop Until (Range(("B" & i)).Value) = "" Or IsEmpty(Range(("B" & i)).Value)

Est ce bien cela . Je suis dsl de te déranger avec cela mais je n'y arrive tjs pas.

Merci pour ta dilligence
0

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

Posez votre question
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
18 juil. 2006 à 15:13
'Dans un premier temps voila le bout de code qu'il te faut pour trouver la première
 'ligne qui correspond à ton n° de compte. Pour être clair je détaille tout.


'Tu entre le numéro de compte dans un textbox appeller textbox1

Sub



testclassement()Worksheets(


"FeuillePrincipale"
).Activate()


'en "B1" tu as N°compte le titre de ta colonne






'donc tu commence à faire la boucle à la ligne 2






'd'où

i = 2




'(1ere ligne de ta colonne "ici B" n° compte)






Dim
numcompte

As



String

numcompte = textbox1.Value







'Cette boucle va parcourir toute ta colonne jusqu'à ce qu'il y ait une cellule vide






'La boucle commence à Do et fini à Loop Until






Do

Worksheets(




"FeuillePrincipale"
).Activate()


'Cette condition compare les string de la cellue("B" & i) et de ta textbox1






'donc les deux numéros de compte






If



CStr
(Range((

"B"
& i)).Value) = numcompte

Then






'Si le numéro est le même tu selectionne la ligne

Row(i).Select()







'Tu copies la selection

Selection.Copy()


Worksheets(numcompte).Activate()







'Maintenant tu as peut-être déjà des données dans cette feuille






'il faut refaire une boucle pour copier après la dernière ligne

j = 2







'début 2eme boucle






Do






If



Not
IsEmpty(Range((

"A"
& i)).Value)

Or



Not
(Range((

"A"
& i)).Value) =

""



Then

j = j + 1







End



If






Loop



Until
(Range((

"A"
& j)).Value) =

""



Or
IsEmpty(Range((

"A"
& j)).Value)


'fin 2eme boucle

Row(j).Select()


Selection.Paste()







End



If






Loop



Until
(Range((

"B"
& i)).Value) =

""



Or
IsEmpty(Range((

"B"
& i)).Value)


'fin 1ere boucle






End



Sub
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
18 juil. 2006 à 15:14
En fait j'ai tout mis mais il faut voir si cela fonctionne. Essaiye et dis moi ce que ça donne.

 Drikce 06
0
Rejoignez-nous