Classement onglet excel par ordre croissant

Résolu/Fermé
celim56 Messages postés 4 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 8 avril 2010 - 3 févr. 2010 à 19:36
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 6 févr. 2010 à 13:53
Bonjour,

Voila, je suis bloqué sur un problème VBA Excel depuis pas mal de temps et je viens sur ce forum pour trouver de l'aide! Merci à ceux qui répondront...

A partir d'une textbox (et de la valeur numerique renseignée dans celle-ci), Excel me créer des feuilles "order" (bon de commande) (par un copier/coller d'une Order1 fixe ) correspondantes à la valeur textbox. Ces feuilles se différencient par un nombre (Order1, Order2, Order3,etc.).
Mon problème est qu'il les classes dans l'ordre décroissant (Ex: j'écris la valeur '4' dans la textbox, Excel me créer 3 feuilles Order selon l'Order1 dans l'ordre suivant: Order1, Order4, Order3, Order2).
Voici une partie de mon code ci-dessous: (enregistrée dans un Userform)

Private Sub TextBox1_AfterUpdate()

Dim numsheets As Integer
Dim i As Integer
Dim Value As Integer

Const MinValue = 1
Const DefValue = 1
Const MaxValue = 20

numsheets = Val(TextBox1.Value)

Select Case Val(TextBox1.Value)

Case MinValue To MaxValue

For i = 2 To numsheets
Sheet9.Copy after:=Sheets(2) 'Worksheets.Name("Order" & i)
ActiveSheet.Name = "Order" & i
ActiveSheet.Range("P2").Value = "Order " & i '-> personnalize the orders!
ActiveSheet.Range("B41").Value = "SUMMARY Order " & i
ActiveSheet.Range("P41").Value = "TOTAL - Order " & i

Next i


J'espère avoir été assez claire dans mes explications, sinon n'hésitez pas à me demander!!!

Merci à vous...
A voir également:

4 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
3 févr. 2010 à 20:31
Bonjour,

J'aurai quelques questions en effet:

Pourquoi un Select Case Val(TextBox1.Value) ? Surtout avec un Case de 1 à 20 ???

Que représente Sheet9.Copy ???

Dim Value As Integer Value est un mot réservé !!! ca va poser un problème quelque part.

Il est normal que la feuille créée se positionne juste après la feuille 2, c'est à cause de ça : Sheet9.Copy after:=Sheets(2)

;o)
0
netman44 Messages postés 59 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 29 janvier 2020 1
6 févr. 2010 à 00:19
Bonsoir,

Essaie de remplacer .Copy after:=Sheets(2) par .Copy after:=Sheets(Sheets.Count).

Netman
0
celim56 Messages postés 4 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 8 avril 2010
6 févr. 2010 à 13:26
Bonjour Polux, et merci de t'être penché sur mon problème!!

Bon, comme tu as pu le remarquer, je suis loin d'être un foudre de guerre en VB!!! lol mais j'apprends au fur et à mesure. D'ailleurs, le forum de comment ça marche m'est d'une grande utilité!! ;-)

Pour répondre à ta première question, j'ai utilisé un 'Case' parce que ça me semblait le plus adapté à la situation. Le code n'apparaît pas entièrement, le Case se poursuit sur différents cas, comme :

-Case Is < MinValue
-Case Is > MaxValue

Pour la seconde question, la Sheet9 correspond à mon Order1 (qui est recopiée selon la valeur de la TextBox).

Pour la propiété 'Valeur', je voulais préciser au programme que ma valeur soit forcément numérique!

Enfin, J'aimerai justement trouver une alternative au 'Copy after' pour qu'elles se mettent dans l'ordre chronologique!! ;-)

J'espère t'avoir éclairé un peu plus!!!! @+
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 févr. 2010 à 13:53
Bonjour,

Pour le Select Case, c'est ton choix, pourquoi pas.

Pour Sheet9, je pense que c'est l'onglet 9 de ton classeur. Dans ce cas c'est Sheets(9) qu'il faut utiliser.

Pour l'ordre tu peux faire comme ça: For i = numsheets to 2 Step - 1

;o)
0