Probleme macro pour renumeroter une liste automatiquemant
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007
-
15 nov. 2007 à 20:39
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007
-
22 nov. 2007 à 19:51
bonjour
esque quelqu un peux me dire si mon probleme et realisable par macro et si oui quel code dois je employer.
j'ai des fiches cartonées avec des noms de clients leurs ventes et leurs achats.
chaques fiches portent un numero
exemple de fiche
fiche N° 20
client CHAISE André
vente 1
achat 1
vente 2
achat 2
j'ai donc creer une liste pour pouvoir trier les fiches par ordre alphabetique
ma liste se forme comme ça
A B C
noms achat/vente N° de fiche
CHAISE André Achat 1 80
CHAISE André Achat 2 80
CHAISE André vente 1 80
CHAISE André vente 2 80
ARBRE Marcel vente 2 1
TABLE Jean Achat 2 6
quand je tris la liste j' ai le resultat suivant
A B C
noms achat/vente N° de fiche
ARBRE Marcel vente 2 1
CHAISE André Achat 1 80
CHAISE André Achat 2 80
CHAISE André vente 1 80
CHAISE André vente 2 80
TABLE Jean Achat 2 6
mon probleme est le suivant je voudrais une macro qui me permete de renumeroter les fiches apres avoir trier ma liste par ordre alphabetique pour obtenir le resultat suivant en colone D
A B C D
noms achat/vente N° de fiche nouveau numero
ARBRE Marcel vente 2 1 1 ligne 1
CHAISE André Achat 1 80 2 ligne 2
CHAISE André Achat 2 80 2 ligne 3
CHAISE André vente 1 80 2 ligne 4
CHAISE André vente 2 80 2 ligne 5
TABLE Jean Achat 2 6 3 ligne 6
TABLE Pierre vente 2 45 4 ligne 7
VASE Bernard Achat 1 28 5 ligne 8
VASE Bernard Achat 2 28 5 ligne 9
ZOO Pierre vente 2 37 6 ligne 10
la fiche du client CHAISSE André devient la seconde Fiche donc toutes les lignes corespondentes porte le chiffre 2 et plus 80 et ainsi desuite pour le reste de la liste
la macro dois attribuer le chiffre 2 (suite de la série 1,2,3,4,5.....) dans la colone D temps quelle trouve le numero 80 dans la la colone C et continuer la serie quand le chiffre change
esque cela vous parait réalisable ?
je vous remerci pour vos réponses futur
A voir également:
Probleme macro pour renumeroter une liste automatiquemant
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 16 nov. 2007 à 13:00
bonjour MPI tu vas bien ?
La raison de prendre les chiffres plutot que les noms est simple
il peut y avoir plusieurs fiches différentes avec le noms CHAISE André
donc si la macro prends en compte les noms la numerotation ne sera pas bonne
la premiere ligne de la liste sera numerotée 1 et la macro dois continuer la serie 1,2,3,4,5.......
dans le cas de CHAISE André c la fiche 80 qui se trouve en deuxieme position dans la liste donc tout les numeros 80 doivent correspondre au chiffre 2 puis la serie continue a numeroter les lignes 3,4,5.....
mon idée c que la macro numerote les fiches par rapport a la position des lignes dans la liste quand elle trouve un numero identique elle arrete la serie elle numerote les lignes 80 avec le chiffre 2 et reprends la serie quand elle trouve un numero diferrents de 80
c comme ça que je vois la chose
par contre si sur la fiche 80 CHAISE André il y a un deuxieme nom exemple
TABOURET Franck 80
elle devra aussi etre numerotée avec le chiffre 2 meme si elle se trouve en bas de la liste
sa complique un peut les choses
j'avais donc pensé utilisé un code pour compter les lignes mais je ne suis pas sur que cela fonctionne et de plus je ne sais meme pas par ou commencer
si tu a une idée sur la question fait moi signe
merci beaucoup
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 16 nov. 2007 à 23:41
Pas vraiment certain d'avoir tout bien compris, mais bon... voici comment je procèderais.
En tenant compte que "Chaise André" est en colonne A (une seule cellule)
et que 80 est colonne C
Sub Test()
Dim i As Long, nbLignes As Long
Dim NumeroCourant As Long
'définir le nombre de lignes
nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
'Commencer par trier la plage
Range("A2:D" & nbLignes).Sort _
Key1:=Range("A2"), Order1:=xlAscending, _
Key2:=Range("C2"), Order2:=xlAscending, Header:=xlYes
'inscrire le premier numéro
NumeroCourant = 1
'Boucler et déterminer les nouveaux numéros de fiches
For i = 2 To nbLignes If Range("A" & i) Range("A" & i + 1) And Range("C" & i) Range("C" & i + 1) Then
'c'est la même fiche et on change rien
Range("D" & i) = NumeroCourant
Else
Range("D" & i) = NumeroCourant
NumeroCourant = NumeroCourant + 1 'prêt pour le prochain
End If
Next
End Sub
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 20 nov. 2007 à 14:35
bonjour et merci pour ton aide
j'ais testé ton code qui fonctionne tres bien et en plus il tri la liste en meme temps
ça donne ça
A B C D
noms achat/vente N° de fiche
ARBRE Marcel vente 2 1 1
CHAISE André Achat 1 80 2
CHAISE André Achat 2 80 2
CHAISE André vente 1 80 2
CHAISE André vente 2 80 2
TABLE Jean Achat 2 6 3
VASE Bernard Achat 1 28 4
VASE Bernard Achat 2 28 4
ZOO Pierre vente 2 80 5
pour la dernierre ligne j'ai un petit soucci car ZOO Pierre se trouve sur la meme fiche que CHAISE André fiche numero 80
elle dois donc etre renuméroté 2 et pas 5 comme sur l'exemple
peux tu me dire si tu a compris ma demmande comment modifier le code pour avoir le resultat suivant
A B C D
noms achat/vente N° de fiche
ARBRE Marcel vente 2 1 1
CHAISE André Achat 1 80 2
CHAISE André Achat 2 80 2
CHAISE André vente 1 80 2
CHAISE André vente 2 80 2
TABLE Jean Achat 2 6 3
VASE Bernard Achat 1 28 4
VASE Bernard Achat 2 28 4
ZOO Pierre vente 2 80 2
merci beaucoup pour ton aide
et encore bravo pour ton travail !
bobbob83
Vous n’avez pas trouvé la réponse que vous recherchez ?
nom ventes fiche numero
arbre Jean vente 2 1 1
tasse bernard vente 1 14 2 ' les fiches sont pas bien classées
tasse Jean vente 14 3
vase paul achat 26 4
vase pierre achat 26 5
zozo vente 47 6
chaise andré vente 1 80 7
chaise andré achat 80 7
chaise andré vente 1 80 7
wagon marc vente 80 8
zoo vente 80 9
ça me donne pas le resultat voulu les fiches et les noms sont mal classés , pas dans le bon ordre
j'ai donc testé en supprimant la ligne en Bleu dans ce code
'Boucler et déterminer les nouveaux numéros de fiches
For i = 2 To nbLignes If Range("A" & i) Range("A" & i + 1) And Range("C" & i) Range("C" & i + 1) Then
voila le resultat
nom ventes fiche numero
arbre Jean vente 2 1 1
tasse bernard vente 1 14 2
tasse Jean vente 14 2
vase paul achat 26 3
vase pierre achat 26 3
zozo vente 47 4
chaise andré vente 1 80 5
chaise andré achat 80 5
chaise andré vente 1 80 5
wagon marc vente 80 5
zoo vente 80 5
ici les fiches qui on le meme numero exemple chaisse ,wagon, zoo N° 80
on la meme numerotation mais pas la bonne , 5 aulieu de 2
nom ventes fiche numero
arbre Jean vente 2 1 1
chaise andré vente 1 80 2
chaise andré achat 80 2
chaise andré vente 80 2
tasse bernard vente 1 14 3
tasse Jean vente 14 3
vase paul achat 26 4
vase pierre achat 26 4
wagon marc vente 80 2
zoo vente 80 2
zozo vente 47 5
REgarde bien les noms sont par ordre alphabetique et les fiches identiques porte le bon numero de classement