Aide sur Excel 2000

Résolu/Fermé
Flopac - 4 janv. 2012 à 10:04
 Flopac - 5 janv. 2012 à 10:23
Bonjour,

Je me permet de laiiser un message sur ce forum car j'ai un petit probléme sur Excel 2000.
En effet j'ai créer un classeur de plusieurs onglets numéroté de 1 à 10, et je souhaite insérer une nouvelle feuille entre ma feuille n°1 et n°2. Par conséquent ma feuille n°2 deviendra ma feuille n°3, ma n°3 deviendra ma n°4, etc...
Je voudrai savoir si il n'y avait pas un moyen de faire se décalage de numérotation automatiquement (macro, programmation...)
Merci de vos prochaines réponses à mon probléme.
Cordialement

(PS : je ne connai vraiment pas grand chose en macro)

A voir également:

4 réponses

ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 4/01/2012 à 10:51
bonjour

une macro qui insere et renomme les feuilles

Public Sub InsereFeuille()  
Dim nbF As Long, nuF As Long, nuFIns As String  
nbF = Sheets.Count  
nuFIns = InputBox("inserer avant feuille n° ")  
Sheets(nuFIns).Select  
Sheets.Add  
For nuF = nbF + 1 To 1 Step -1  
  Sheets(nuF).Name = LTrim(Str(nuF))  
Next nuF  
End Sub

pour mettre ça en route
1. Alt-F11 pour acceder à l'editeur de macro
2. Insertion/Module
3. copier/coller ce code
4. revenir sur une feuille
5. Outils/Macro/ selectionner la macro/ option et affecter un raccourci clacvier (Ctrl+i par exemple)
6. depuis une feuill/ ctrl+i pour lancer la macro

bonne suite
1
Merci beaucoup pour ton aide !
Par contre connais tu une macro, afin de faire la meme chose mais cette fois le numéro de page se trouve dans une cellule A1 pour la page n°1, n°2...
0
Par contre je viens de test ta macro, elle fonctionne. Mais par exemple, ma feille ne s'appel pas "1" mais "IS N°1", donc quand j'execute ta macro mes feuilles sont renommé automatiquement 1,2,3... au lieu de IS N°1,IS N°2... Comment faire?
De plus, comment faire pour que les feuilles se renomme automatiquement après la suppression de l'une d'entre elles? ( je supprime la feuille "IS N°2", donc la 3 devient la n°2, la 4 la n°3....)
Merci pour ton aide
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 4/01/2012 à 17:03
re
RQ1. je n'ai pas bien compris
Par contre connais tu une macro, afin de faire la meme chose mais cette fois le numéro de page se trouve dans une cellule A1 pour la page n°1, n°2...

ces numéros se trouvent dans quelle feuille?

RQ2. pour supprimer/renommer, il vaut mieux là aussi proceder par macro
j'ai mis le prefixe "IS N°" dans une constante, mais tu peux le récupérer depuis une cellule
- dans la liste des variables ajouter
Dim prefixe as string
- en début de macro ajouter
prefixe = sheets(nom de la feuille où tu veux recuperer ce n°).Range("A1").value

RQ3. avec l'instruction Displayalerts= false, la feuille sera supprimée "sans sommation" si ça te gêne, tu mets un ' (apostrophe) devant, la macro te demandera alors une confirmation avant la suppression

Option Explicit 

Const prefixe = "IS N°" 

Public Sub InsereFeuille() 
Dim nbF As Long, nuF As Long, nuFIns As String 
nbF = Sheets.Count 
nuFIns = InputBox("inserer avant feuille n° ", , prefixe) 
Sheets(nuFIns).Select 
Sheets.Add 
For nuF = nbF + 1 To 1 Step -1 
  Sheets(nuF).Name = prefixe & LTrim(Str(nuF)) 
Next nuF 
End Sub 

Public Sub SupprimeFeuille() 
Dim nbF As Long, nuF As Long, nuFIns As String 
Application.DisplayAlerts = False 
nbF = Sheets.Count 
nuFIns = InputBox("supprimer feuille n° ", , prefixe) 
Sheets(nuFIns).Delete 
For nuF = 1 To nbF - 1 
  Sheets(nuF).Name = prefixe & LTrim(Str(nuF)) 
Next nuF 
Application.DisplayAlerts = True 
End Sub

bonne suite
1
Encore merci de ton aide précieuse !
Concernant ma deuxième question que j'avais mal poser. En faite sur chaque feuille, il y a son nom correspondant au nom situé sur son onglet, il est inscrit sur chaque feuille dans la cellule A1.
Je voudrai donc savoir :
_ lorsque une certaine feuille est supprimer, avec ta macro ci-dessus le nom des onglets se réorganise dans un ordre croissant (c'est ce que je souhaitai) mais je voudrai que le nom situé en cellule A1 se rétablisse aussi comme le nom de l'onglet. Es ce que cala est possible?

Merci d'avance.
Cordialement
0
m@rina Messages postés 21080 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 15 novembre 2024 11 352
4 janv. 2012 à 10:29
Bonjour,

Par exemple ceci :

Sub inser()
For x = 1 To ThisWorkbook.Sheets.Count
ThisWorkbook.Sheets(x).Name = "feuille" & x
Next
End Sub

m@rina
0
Merci de ton aide.
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 5/01/2012 à 10:28
re

RQ1. c'est possible et avec mes explications tu aurais pu faire la modif. il ne faut pas hésiter à tenter ....
RQ2. j'ai ajouté une gestion d'erreur au cas où le nom de la feuille à inserer/supprimer est incorrect

Option Explicit

Const prefixe = "IS N°"
Const CellNomF = "A1"

Public Sub InsereFeuille()
Dim nbF As Long, nuF As Long, nuFIns As String
On Error GoTo fin
nbF = Sheets.Count
nuFIns = InputBox("inserer avant feuille n° ", , prefixe)
Sheets(nuFIns).Select
Sheets.Add
For nuF = nbF + 1 To 1 Step -1
  Sheets(nuF).Name = prefixe & LTrim(Str(nuF))
  Sheets(nuF).Range(CellNomF).Value = Sheets(nuF).Name
Next nuF
fin:
End Sub

Public Sub SupprimeFeuille()
Dim nbF As Long, nuF As Long, nuFIns As String
On Error GoTo fin
Application.DisplayAlerts = False
nbF = Sheets.Count
nuFIns = InputBox("supprimer feuille n° ", , prefixe)
Sheets(nuFIns).Delete
For nuF = 1 To nbF - 1
  Sheets(nuF).Name = prefixe & LTrim(Str(nuF))
  Sheets(nuF).Range(CellNomF).Value = Sheets(nuF).Name
Next nuF
Application.DisplayAlerts = True
fin:
End Sub


bonne suite
0
Merci énormément pour ton aide, je t'en remercie.
Et j'ai essayer mais je n'arrivai a pas grand chose.
Encore merci.
Cordialement
0