Microsoft 365 Donner a une cellule le nom de la feuille

Faroyo

XLDnaute Junior
Bonjour,
j'ai fait une petite macro pour ajouter des feuilles dans mon dossier en fonction de la valeur d'une cellule (feuille A cellule C9). A présent, je recherche le moyen de donner à cellule C2 de chaque page créée le nom de sa feuille.
Ex: si ma feuille se nomme "page_(1) j'aimerai avoir "page_(1)" en C2 et ainsi de suite, "page_(2) -> C2 = "page_(2)"....

Merci pour votre aide

Faroyo
 

Pièces jointes

  • test (2).xlsm
    75.6 KB · Affichages: 11
Solution
le code ci dessous, créé la plage nommée ET met le nom de la feuille en C2

VB:
Sub CreateSheets()

    Dim facilitiesNum As Long
    Dim i As Byte
    Dim sh As Worksheet
    
    Worksheets("A").Activate
    On Error Resume Next
    
    Application.DisplayAlerts = False
    For Each sh In Worksheets
        If InStr(1, "A,Database,page_(1),", sh.Name) = 0 Then sh.Delete
    Next sh
    Application.DisplayAlerts = True
    
    With Sheets("A")
        facilitiesNum = .Range("C9").Value 'on récupère le nombre de tableaux à créer
    End With
    Sheets("Page_(1)").Names.Delete 'supprime la plage nommée, sinon, elle est recopiée dans tous les onglets (étendue classeur)
    For i = 2 To facilitiesNum
        Sheets("page_(1)").Copy...

vgendron

XLDnaute Barbatruc
le code ci dessous, créé la plage nommée ET met le nom de la feuille en C2

VB:
Sub CreateSheets()

    Dim facilitiesNum As Long
    Dim i As Byte
    Dim sh As Worksheet
    
    Worksheets("A").Activate
    On Error Resume Next
    
    Application.DisplayAlerts = False
    For Each sh In Worksheets
        If InStr(1, "A,Database,page_(1),", sh.Name) = 0 Then sh.Delete
    Next sh
    Application.DisplayAlerts = True
    
    With Sheets("A")
        facilitiesNum = .Range("C9").Value 'on récupère le nombre de tableaux à créer
    End With
    Sheets("Page_(1)").Names.Delete 'supprime la plage nommée, sinon, elle est recopiée dans tous les onglets (étendue classeur)
    For i = 2 To facilitiesNum
        Sheets("page_(1)").Copy After:=Sheets(i)
        ActiveSheet.Names.Add Name:="page_" & i, RefersTo:="='Page_(" & i & ")'!$C$2"
        ActiveSheet.Range("C2") = "page_(" & i & ")"
    Next i
    Sheets("Page_(1)").Names.Add Name:="page_1", RefersTo:="='Page_(1)'!$C$2" 'on recréé la plage nommée
End Sub
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Tu auras des réponses si tu mets ton propre poste et cela ne polluera pas le topic de "Faroyo"

Un début de piste



JHA
 

Pièces jointes

  • transférer des données.xlsx
    15.8 KB · Affichages: 3
  • transférer des données (1).xlsx
    19.4 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour à tous,

Il serait étonnant qu'il n'y ait qu'une seule ligne à transférer dans chaque feuille.

Alors voyez le fichier .xlsm joint et cette macro :
VB:
Sub Xonsolider()
Dim nb, i
nb = 6 'nombre de feuilles à copier
Application.ScreenUpdating = False
With Sheets("Recap")
    .UsedRange.Columns(1).Offset(1).Delete xlUp 'RAZ
    For i = 1 To nb
        Sheets(CStr(i)).[A1].CurrentRegion.Offset(1).Copy .Cells(.Rows.Count, 1).End(xlUp)(2)
    Next
End With
End Sub
A+
 

Pièces jointes

  • transférer des données.xlsm
    28.9 KB · Affichages: 1

Bib.bel

XLDnaute Nouveau
Bonjour à tous,

Il serait étonnant qu'il n'y ait qu'une seule ligne à transférer dans chaque feuille.

Alors voyez le fichier .xlsm joint et cette macro :
VB:
Sub Xonsolider()
Dim nb, i
nb = 6 'nombre de feuilles à copier
Application.ScreenUpdating = False
With Sheets("Recap")
    .UsedRange.Columns(1).Offset(1).Delete xlUp 'RAZ
    For i = 1 To nb
        Sheets(CStr(i)).[A1].CurrentRegion.Offset(1).Copy .Cells(.Rows.Count, 1).End(xlUp)(2)
    Next
End With
End Sub
A+
Merci pour votre travail incroyable.
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh