Aide sur Excel 2000

Résolu
Flopac -  
 Flopac -
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)

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Flopac
       
      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
    2. Flopac
       
      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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Flopac
       
      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
  3. m@rina Messages postés 27530 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    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
    1. Flopac
       
      Merci de ton aide.
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Flopac
       
      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