recuperer nom onglet dans une cellule d'une autre feuille Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'029
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 9 août 2018, 18:29

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

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
m
mrregaieg
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 25 juillet 2018
Version d'Excel : office365

Message par mrregaieg » 9 août 2018, 22:34

j'ai testé mais ca pas fonctionné
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'029
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 10 août 2018, 05:15

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é
mrregaieg a écrit :
8 août 2018, 17:29
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



O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
m
mrregaieg
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 25 juillet 2018
Version d'Excel : office365

Message par mrregaieg » 10 août 2018, 19:42

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
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'029
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 11 août 2018, 05:50

mrregaieg a écrit :
10 août 2018, 19:42
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é

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
m
mrregaieg
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 25 juillet 2018
Version d'Excel : office365

Message par mrregaieg » 12 août 2018, 01:35

voila
New Archive WinRAR ZIP.zip
(1014.03 Kio) Téléchargé 3 fois
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'029
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 12 août 2018, 05:52

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

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'029
Appréciations reçues : 830
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 12 août 2018, 06:03

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)))"

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message