Valeur Nom d'onglet dans cellule

Résolu

Bonjour à toutes et à tous,

je me suis créer une macro pour recopier un bulletin autant de fois qu'il y a d'élèves.

Les cases de points de ce bulletin font référence dans la cellule i1 au numéro de l'élève : e1 e2 e3....

La macro crée un onglet pour chacun qui est incrémenté : onglet e1, e2,e3,...

J'ai mis dans la cellule i1  la formule : "'=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20)"

Sauf que évidemment les référence à i1 attendent la valeur et non la formule : comment faire ??

Je mets ci-dessous le niveau où j'en suis...

Merci d'avance

Sub CreerUnOngletParBull()

    Dim I As Long
    Dim Nombre As Integer
    Dim NomOnglet As String
    Dim xActiveSheet As Worksheet
    On Error Resume Next
    Application.ScreenUpdating = False
    Set xActiveSheet = ActiveSheet
    Nombre = InputBox("Entrez le nombre d'élèves")
    For I = 1 To Nombre
        NomOnglet = ActiveSheet.Name
        xActiveSheet.Copy After:=ActiveWorkbook.Sheets(NomOnglet)
        ActiveSheet.Name = "e" & I
        
    Next
    xActiveSheet.Activate
    Application.ScreenUpdating = True
End Sub


Windows / Chrome 107.0.0.0

5 réponses

  1. Ah ok merci, c'est fait...

    0
    1. De rien

      Si c'est fini, merci de mettre le sujet à résolu, en haut dans ton premier post (les 3 petits points)

      Cdlmnt

      0
      1. Pas tout compris, mais un essai pour fabriquer les onglets élèves et mettre le nom en I1

        Public Const FBV = "Bulletin Virgi"
        Public Const celnom = "I1"
        
        Sub CreerUnOngletParBull()
            Dim I As Long
            Dim Nombre As Integer
            Dim SheetBV As Worksheet
            Application.ScreenUpdating = False
            Set SheetBV = Sheets(FBV)
            Nombre = InputBox("Entrez le nombre d'élèves")
            SheetBV.Copy After:=ActiveWorkbook.Sheets(FBV)
            ActiveSheet.Name = "e1"
            If Nombre = 1 Then Sheets(FBV).Activate: Exit Sub
            For I = 2 To Nombre
                SheetBV.Copy After:=ActiveWorkbook.Sheets("e" & I - 1)
                ActiveSheet.Name = "e" & I
                ActiveSheet.Range(celnom).Value = "e" & I
            Next
            Sheets(FBV).Activate
        End Sub

        Cdlmnt

        0
        1. Je vous dois un grand merci, c'est exactement ce que j'attendais !

          Je vais maintenant aller voir les commandes que vous avez passées pour comprendre et donc m'instruire (il n'est jamais trop tard pour apprendre (75)) 

          Encore merci et passez une belle soirée

          0
      2. https://www.cjoint.com/c/LKuuq4M7tiJ

        je suppose que c'est bon le lien ?

        la macro en cours de construction est CreerUnOngletParBull

        Cette macro demande combien d'onglets créer (1 par élève) et les nomme e1,e2, e3,... 

        Pour que les points soient reliés dans le bulletin à l'élève concerné mes formules font une recherche sur le contenu de la cellule "i1" dans laquelle devrait se trouver le numéro de l'élève (e1, e2,...). J'ai nommé mes onglets exprès du num de l'élève et je pensais recopier ce nom dans la cellule "i1"
        Il faudrait donc je pense y copier la valeur du nom de l'onglet et non pas une formule... 

        Merci d'avance

        0
        1. Bonjour

          Pas très clair. Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
          1) Tu vas dans http://cjoint.com/
          2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
          3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
          4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
             en bleu souligné ; tu le sélectionnes et tu fais "Copier"
          5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

          Cdlmnt

          0