Copier nom feuille excel dans une cellule

Fermé
juliette - Modifié par pijaku le 23/09/2015 à 10:15
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 23 sept. 2015 à 11:23
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:

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:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
22 sept. 2015 à 16:32
Bonjour,

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
1
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
23 sept. 2015 à 10:06
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
0
merci, voici le fichier:
http://www.cjoint.com/c/EIxitjT6FpG
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
23 sept. 2015 à 11:23
en retour
mais évite de mettre des exemple en PJ: rien de + casse-g.... ta pj semble ne pas correspondre: ent^tes vides que faire de la colonne A ou B alors que tu restitue en Colonne C..
a toi de rectifier à la réalité
http://www.cjoint.com/c/EIxjvdnfQUh
0