Numérotation feuilles excel

Numérotation feuilles excel - VB/VBA/VBS - Programmation

Marsh Posté le 18-10-2006 à 11:40:50    

Bonjour,
J'ai un classeur contenant N feuilles, ces feuilles ayant été insérées, suprimées... leurs numéros ne se suivent pas.
Est-il possible sous Excel via une macro VBA de renoméroter ces feuilles dans l'ordre ou elle sont a l'ouverture du fichier.
Merci de vos conseils.

Reply

Marsh Posté le 18-10-2006 à 11:40:50   

Reply

Marsh Posté le 18-10-2006 à 17:58:00    

Bonsoir,
 
i = 0
For Each sh In ThisWorkbook.Sheets
i = i + 1
sh.Name = "toto" & Trim(Str(i))
Next sh
 
Cordialement

Reply

Marsh Posté le 19-10-2006 à 07:37:02    

Je te remercie de ta réponse, mais ce que je voudrais c'est renuméroter le numéro des feuilles et non pas le nom des feuilles.
si qqun a une solution, je vous en remercie par avance.


Message édité par syl06150 le 19-10-2006 à 07:38:01
Reply

Marsh Posté le 19-10-2006 à 07:43:01    

Bonjour,
donnes un exemple stp
Merci

Reply

Marsh Posté le 19-10-2006 à 10:21:48    

Alors voila:
Mon classeur contient X feuilles (ou onglet) portant le nom de la semaine S18, S19, S20, S21..... classées dans l'ordre croissant. Par contre au niveau des références des feuilles (celle que l'on voit dans VBA PROJECT)  
la "S18" correxpond à la "feuille10",  
la "S19" correspond à la "feuille11",  
la "S19" correspond à la "feuille3",  
la "S21" correspond à la "feuille1"...
Ce que je voudrais c'est que  
la "S18" corresponde à la "feuille1",
la "S19" corresponde à la "feuille2",
la "S20" corresponde à la "feuille3",
la "S21" corresponde à la "feuille4",...

Reply

Marsh Posté le 19-10-2006 à 11:20:23    

Je pense que tu ne peux pas modifier le numéro des feuilles...
Par contre tu peux changer ce qu'il y a dedans.
A savoir par copier coller tu mets dans ta "feuille1" le contenue de ta feuille qui s'appelle S18.
C'est pas le top mais ca dois marcher.

Reply

Marsh Posté le 19-10-2006 à 11:27:24    

bonjour,
ça doit pouvoir se faire comme ça (non vérifié)
 
Sub test()
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName" ) = "Sh" & i+1
i= i+1
Next ws
End Sub
 
A+

Reply

Marsh Posté le 19-10-2006 à 11:38:44    

Bonjour,
tu veux modifier le "CodeName" de la feuille :
Mais
CodeName, propriété
Voir aussi S'applique à Exemple Spécificités  
Cette propriété renvoie le nom de code de l'objet. Type de données String en lecture seule.
Remarque   La valeur qui apparaît dans la cellule affichée à droite de (Nom) dans la fenêtre Propriétés correspond au nom de code de l'objet sélectionné. Au moment de la création, vous pouvez changer le nom de code d'un objet en modifiant cette valeur. Il est toutefois impossible de modifier cette propriété par programmation au moment de l'exécution.
 
Notes
Le nom de code d'un objet peut être utilisé à la place d'une expression qui renvoie l'objet. Par exemple, si le nom de code de la feuille de calcul 1 est « Sheet1 », les expressions suivantes sont identiques :
 
Worksheets(1).Range("a1" )
Sheet1.Range("a1" )
Une feuille peut avoir un nom différent du nom de code. Lorsque vous créez une feuille, le nom de feuille et le nom de code sont identiques, mais la modification du nom de feuille n'est pas répercutée sur le nom de code, de même que la modification du nom de code (à l'aide de la fenêtre Propriétés de Visual Basic Editor) n'est pas répercutée sur le nom de feuille.
 
Exemple
Cet exemple montre comment afficher le nom de code de la feuille de calcul 1.
 
MsgBox Worksheets(1).CodeName
 
On ne peut pas changer le code name sauf à la création de la feuille.
 
Une solution lourde serait , si vraiment c'est indispensable, de copier S18 dans feuill1  etc...
mais là je cale
 
Cependant la prise en compte en VBA se fait dans l'ordre des "onglets"
 
 
edit: après validation je viens de voir que galopin01 avait répondu .  
 
tu peux essayer et nous dire si cela fonctionne
 
Cordialement


Message édité par seniorpapou le 19-10-2006 à 11:42:16
Reply

Marsh Posté le 19-10-2006 à 17:26:34    

ça marche, je viens de tester...

Reply

Marsh Posté le 19-10-2006 à 18:25:05    

Bonsoir,
Je dois avoir un pb quelque part cela ne marche pas chez moi: cela tourne grâce au on error... mais les codes names ne sont pas changés. Une piste???
Merci

Reply

Marsh Posté le 19-10-2006 à 18:25:05   

Reply

Marsh Posté le 19-10-2006 à 18:50:23    

Code à mettre dans un module standart (Module1...)

Reply

Marsh Posté le 19-10-2006 à 19:03:58    

Bonsoir,
j'avais essayé dans workbook et module1 sans succès.
mon help me dit que VBproject est ouvert en lecture seule
tant pis (c'était pour ajouter un neurone)
Cordialement

Reply

Marsh Posté le 19-10-2006 à 20:46:47    

bonsoir,
Je ne peux pas t'en dire plus : J'ai testé sur des classeurs standart, non partagés, tout simple...
Y faut voir... Si tu n'es pas propriétaire de l'ordi, de nombreux administrateurs de réseaux craignant sans doute qu'on leur bouffe la laine sur le dos brident souvent VBA plus ou moins partiellement...
Vérifie dans Outils / Propriété de VBA Project qu'il n'y a pas de protection sur l'affichage des propriétés.
Sinon on peut aussi passer par la fenêtre des propriétés pour renommer les modules ( y compris les modules de feuilles) un par un.
 
A+

Reply

Marsh Posté le 19-10-2006 à 22:25:53    

Bonne nuit,
c'était le "faire confiance au projet visual basic" qui n'était pas coché dans excel (outils->macro->sécurité)
merci pour les infos
Cordialement

Reply

Marsh Posté le 20-10-2006 à 06:12:49    

Merci a vous deux de votre aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed