Copier nom feuille excel dans une cellule
juliette
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai des onglets avec des tableaux avec des nombres de lignes variables.
Je voudrais récupérer toute les lignes de chaque tableau sur une même feuille(Ca c'est bon ca marche) avec devant chaque ligne indiquer le nom de l'onglet lui correspondant (ca je n'y arrive pas)
voici mon code:
J'ai des onglets avec des tableaux avec des nombres de lignes variables.
Je voudrais récupérer toute les lignes de chaque tableau sur une même feuille(Ca c'est bon ca marche) avec devant chaque ligne indiquer le nom de l'onglet lui correspondant (ca je n'y arrive pas)
voici mon code:
Sub ConcatenationFeuilles() Dim i As Long, T() As Variant Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = "TOTAL" ' Copie En-Tête For i = 1 To Worksheets.Count If Worksheets(i).Name <> "TOTAL" Then With Worksheets(i) T = .Range("a1:ah1").Value Sheets("TOTAL").Range("b1").Resize(UBound(T, 1), UBound(T, 2)) = T End With Exit For End If Next i ' Copie des données For i = 1 To Worksheets.Count If Worksheets(i).Name <> Sheets("TOTAL").Name Then With Worksheets(i) Sheets("TOTAL").Range("a:a").Value = Worksheets(i).Name (LA EST LE PROBLEME) T = .Range("a2:AH" & .Range("a" & Rows.Count).End(xlUp).Row).Value Sheets("TOTAL").Range("b" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(T, 1), UBound(T, 2)) = T Sheets("TOTAL").Range("a:a").Value = Worksheets(i).Name End With End If Next i Erase T Application.ScreenUpdating = True End Sub
A voir également:
- Copier nom feuille excel dans une cellule
- Verrouiller cellule excel sans verrouiller la feuille - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
4 réponses
Bonjour,
ci joint proposition de code (non testé entièrement car je n'avais pas le classeur en pièce jointe)
prtites remarques au passag:
il est inutile de remette screenupdating à "true" et d'écrire erase T
ci joint proposition de code (non testé entièrement car je n'avais pas le classeur en pièce jointe)
Option Explicit
'--------------------
Sub onglets()
Dim tampon
Dim Nbre As Byte, Cptr As Byte, Onglet As String
Dim Derlig As Integer, T_report, Ligvid As Integer
Application.ScreenUpdating = False
'creation feuille "total" avec ent^te
tampon = Sheets(1).Range("A1:AH1")
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Total"
Range("B1:AI1") = tampon
'collecte des noms d'onglets et mémorisation dans variables-tableau
Nbre = ThisWorkbook.Sheets.Count - 1
ReDim T_onglets(1 To Nbre)
For Cptr = 1 To Nbre
With Sheets(Cptr)
Onglet = .Name
Derlig = .Columns("A").SpecialCells(xlCellTypeLastCell).Row
T_report = .Range("A2:AH" & Derlig)
End With
'restitution dans total
With Sheets("total")
Ligvid = .Columns("B").Find("", .Range("B1")).Row
.Cells(Derlig, "A") = Onglet
.Cells(Ligvid, "B").Resize(UBound(T_report), 34) = T_report
End With
Next
End Sub
prtites remarques au passag:
il est inutile de remette screenupdating à "true" et d'écrire erase T
Bonjour,
merci bien pour votre retour,
Derlig = .Columns("A").SpecialCells(xlCellTypeLastCell).Row le code bloque a ce niveau là.
et les noms d'onglets ne s'inscrivent pas.
comment je joints un fichiers?
Merci
merci bien pour votre retour,
Derlig = .Columns("A").SpecialCells(xlCellTypeLastCell).Row le code bloque a ce niveau là.
et les noms d'onglets ne s'inscrivent pas.
comment je joints un fichiers?
Merci
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse
Dans l'attente
et coller le raccourci proposé (clic droit) dans le message de réponse
Dans l'attente