Recuperer nom onglet dans une cellule d'une autre feuille

bonjour mon probleme est simple (difficile pour moi)

je veux afficher le nom de la feuille dans une cellule , cette cellule est creé par insertion d'une nouvelle ligne(code deja trouvé)

cependant je veux aussi que chaque fois je modifie le nom de lafeuille ca se modifie automatiquement aussi .

voici le fichier ( la feuille a copier 2017 ; feuille pour l'affichage : statistique parametre )

merci

Bonjour,

pas bien compris ton fichier, mais voici quand même la réponse

au lieu de mettre

Range("C1") = ActiveSheets.Name

tu insères la formule suivante :

Range("C1").FormulaR1C1 = _
        "=RIGHT(CELL(""nomfichier"",RC),LEN(CELL(""nomfichier"",RC))-FIND(""]"",CELL(""nomfichier"",RC)))"

merci bcp ...

Autre version sans macro :

Bonjour

j'ai voulu appliqué le code que vous m'avez envoyer cependant il ne fonctionne plus avec d'Autre ligne de code

je pense le problème que je veux copier les feuilles et non pas ajouter une nouvelle feuille :

en fait le but consiste a chaque fois je clique sur le bouton "ajouter année" le nom de la nouvelle s'affiche dans "statistique parametre"

ok je regarde au plus tard demain 5h

parfait merci

D'abord, le nom des onglets se trouve en colonne 3, donc change Cells(Rows.Count, 1) en Cells(Rows.Count, 3) et la formule devient :

Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).FormulaR1C1 = _
        "=RIGHT(CELL(""nomfichier""," & NouvelOnglet & "!R1C1),LEN(CELL(""nomfichier""," & NouvelOnglet & "!R1C1))-FIND(""]"",CELL(""nomfichier""," & NouvelOnglet & "!R1C1)))"

Ensuite, je n'ai pas trouvé où se trouve ce bouton "ajouter une année", donc pour le reste, je te laisse faire ... d'autant qu'il faudrait compléter le code car tu mets l'année sur 2 cellules fusionnées (beurk !)

bouton "ajouter année" se trouve dans la feuille "2017"

et pour le code c<Est dans un module et pas sur les workbook

Est-ce que la modif ci-dessus te convient ? est-ce qu'elle est suffisante ?

j'ai testé mais ca pas fonctionné

Bonjour,

explique moi ligne à ligne ce que tu veux faire

j'ai fait cette correction, mais ta macro ne semble pas avoir de logique pour moi

                NouvelOnglet = ActiveSheet.Name
                .Select
                Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).FormulaR1C1 = _
                    "=RIGHT(CELL(""nomfichier""," & NouvelOnglet & "!R1C1),LEN(CELL(""nomfichier""," & NouvelOnglet & "!R1C1))-FIND(""]"",CELL(""nomfichier""," & NouvelOnglet & "!R1C1)))"

mais ta macro ne semble pas avoir de logique pour moi :

- tu commences par faire une copie de la feuille où se trouve le bouton

   ActiveSheet.Copy after:=Sheets(ThisWorkbook.Sheets.Count)

- ensuite tu effectues une boucle sur une valeur de ligne i de la feuille statistiques parametre et un test, et dans cette boucle tu crées une nouvelle feuille vierge

En tous cas j'ai bien ajouté le nom de la nouvelle feuille en dessous des valeurs comme demandé

le but consiste a chaque fois je clique sur le bouton "ajouter année" le nom de la nouvelle s'affiche dans "statistique parametre"

Sub ajouterannée()
Dim sw As Worksheet
Set sw = ActiveSheet
   ActiveSheet.Copy after:=Sheets(ThisWorkbook.Sheets.Count)

Dim i As Long
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    With Worksheets("statistiques  parametre") 'Nom de feuille à adapter
       For i = .Range("D" & Rows.Count).End(xlUp).Row To 5 Step -1
            If .Range("D" & i).Offset(1).Value Like "Concentration maximale(mg/L) " Then
                .Range("D" & i).Offset(1).EntireRow.Resize(2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Sheets.Add after:=Sheets(Sheets.Count)
                NouvelOnglet = ActiveSheet.Name
                .Select
                Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).FormulaR1C1 = _
                    "=RIGHT(CELL(""nomfichier""," & NouvelOnglet & "!R1C1),LEN(CELL(""nomfichier""," & NouvelOnglet & "!R1C1))-FIND(""]"",CELL(""nomfichier""," & NouvelOnglet & "!R1C1)))"
            End If
        Next i
    End With
    Application.Calculation = xlAutomatic
    Application.ScreenUpdating = True

End Sub

en fait je ne veux pas ajouter une feuille mais plutot ajouter copier une feuille

voici le code : tout fonctionne mon seul souci c'est lorsque je modifie le nom de l'ongler ca change pas automatiquement dans la feuil

Sub ajouterannée()

Dim sw As Worksheet

Set sw = ActiveSheet

Dim i As Long

Application.ScreenUpdating = False

Application.Calculation = xlManual

With Worksheets("statistiques parametre") 'Nom de feuille à adapter

For i = .Range("D" & Rows.Count).End(xlUp).Row To 5 Step -1

If .Range("D" & i).Offset(1).Value Like "Concentration maximale(mg/L) " Then

ActiveSheet.Copy after:=Sheets(ThisWorkbook.Sheets.Count)

.Range("D" & i).Offset(1).EntireRow.Resize(2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

.Range("C" & i + 1) = ActiveSheet.Name

.Range("D10:D11").Copy

With Worksheets("statistiques parametre")

Sheets("statistiques parametre").Range("D" & i + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _

SkipBlanks:=False, Transpose:=False

'Sheets.Add after:=Sheets(Sheets.Count)

End With

'ActiveSheet.Name = Sheet.Name.Range("D10:D11").Copy = .Range("D" & i)

End If

Next i

End With

Application.Calculation = xlAutomatic

'With Worksheets("statistiques parametre")

Application.ScreenUpdating = True

tout fonctionne mon seul souci c'est lorsque je modifie le nom de l'ongler ca change pas automatiquement dans la feuil

et moi cela bogue ! et il ne tient pas compte de ce que j'ai proposé

ton code ci-dessus est incomplet ! peux-tu mettre la fin

indente ton code pour y voir clair

évite les répétitions de Worksheets("statistiques parametre")

ne te lance pas dans un code sans le maîtriser ...

et utilise les balises </>

mais je ne reviendrai pas sur ce sujet sans y voir a minima ce qui a été proposé

voila

Bonjour,

quand tu mets ceci en début

    Application.ScreenUpdating = False
    Application.Calculation = xlManual

mets ceci en fin de macro

    Application.Calculation = xlAutomatic
    Application.ScreenUpdating = True

et pour le nom de l'onglet, remplace

                .Range("C" & i + 1) = ActiveSheet.Name

par la formule que j'avais proposée

                .Range("C" & i + 1).FormulaR1C1 = "=RIGHT(CELL(""nomfichier"",'" & ActiveSheet.Name & "'!RC),LEN(CELL(""nomfichier"",'" & ActiveSheet.Name & "'!RC))-FIND(""]"",CELL(""nomfichier"",'" & ActiveSheet.Name & "'!RC)))"
Rechercher des sujets similaires à "recuperer nom onglet feuille"