Autres Regroupement de feuilles

chilo27

XLDnaute Occasionnel
Bonjour le forum
Je souhaite regrouper les feuilles 135 136 137 etc dans une autre feuille
appelée regroupement

Sans la prise en compte des autres feuilles
Je précise que j'ai effectué des recherches, on en trouve mais malheureusement pas on le souhaite

En Vba si possible

En vous remerciant par avance
 

Pièces jointes

  • Classeur1.zip
    8.2 KB · Affichages: 23

chilo27

XLDnaute Occasionnel
Désolé j'ai du sortir ma personnalisation c'est de rajouter des feuilles en fonction de l'avancement
j'avais commencé ainsi
Dim Ws As Worksheet
If Ws.Name <> "Regroupement" Then ' ne pas prendre en compte la feuille

Et là le moteur cale

la démarche est de dire

si les feuilles création information résumé sont différentes de la feuille regroupement on regroupe les autres feuilles, de qui m'évitera de rentrer le nom des feuilles dans la macro
a chaque fois; sachant que je pourrai avoir une vingtaine de feuilles
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
j'ai ajouté un test pour l'existence de la feuille que tu veux traiter

VB:
Sub Regroupement_Données()
    Dim Address_Feuilles As String, Compteur As Integer
    For Compteur = 135 To 137
        If Feuille_Existe(CStr(Compteur)) Then
            With Sheets(CStr(Compteur))
                If Sheets("REGROUPEMENT").Range("A6").Value = "" Then
                    If Not .Range("A2").Value = "" Then
                        Address_Feuilles = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Address
                        Sheets("REGROUPEMENT").Range("A5").Range(Address_Feuilles).Value = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Value
                    End If
                Else
                    If Not .Range("A2").Value = "" Then
                        Address_Feuilles = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Address
                        Sheets("REGROUPEMENT").Range("A65536").End(xlUp).Range(Address_Feuilles).Value = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Value
                    End If
                End If
            End With
        Else
            MsgBox "La feuille " & Compteur & " n'existe pas.", vbInformation + vbOKOnly
        End If
    Next Compteur
End Sub
Function Feuille_Existe(ByVal NomFeuille$) As Boolean
    Dim Test_Objet As Worksheet
    On Error GoTo Gere_Erreurs
    Set Test_Objet = ActiveWorkbook.Worksheets(NomFeuille)
    Feuille_Existe = True
    Set Test_Objet = Nothing
Gere_Erreurs:
End Function
 

job75

XLDnaute Barbatruc
Bonjour chilo27, Yeahou,

C'est un sujet très souvent traité sur XLD, voyez le fichier joint et le code de la feuille REGROUPEMENT :
VB:
Private Sub Worksheet_Activate()
Dim lig&, w As Worksheet
lig = 6 '1ère ligne de destination
Application.ScreenUpdating = False
Rows(lig & ":" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
    If IsNumeric(w.Name) Then 'si valeur numérique
        With w.[A1].CurrentRegion.EntireRow
            If .Rows.Count > 1 Then
                .Rows(2).Resize(.Rows.Count - 1).Copy Rows(lig) 'copier-coller
                lig = lig + .Rows.Count - 1
            End If
        End With
    End If
Next
End Sub
La macro se déclenche quand on active la feuille.

A+
 

Pièces jointes

  • Classeur(1).xlsm
    22.4 KB · Affichages: 2

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
voila le code traitant toutes les feuilles du classeur avec une constante pour définir les feuilles à exclure du traitement
VB:
Public Const Feuilles_Exclues = "REGROUPEMENTCréationInformationrésumé "
Sub Regroupement_Données()
    Dim Address_Feuilles As String, Feuille_en_Cours As Worksheet
    For Each Feuille_en_Cours In ThisWorkbook.Worksheets
       If Not UCase(Feuilles_Exclues) Like "*" & UCase(Trim(Feuille_en_Cours.Name)) & "*" Then
            With Feuille_en_Cours
                If Sheets("REGROUPEMENT").Range("A6").Value = "" Then
                    If Not .Range("A2").Value = "" Then
                        Address_Feuilles = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Address
                        Sheets("REGROUPEMENT").Range("A5").Range(Address_Feuilles).Value = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Value
                    End If
                Else
                    If Not .Range("A2").Value = "" Then
                        Address_Feuilles = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Address
                        Sheets("REGROUPEMENT").Range("A65536").End(xlUp).Range(Address_Feuilles).Value = .Range("A2:J" & .Range("A65536").End(xlUp).Row).Value
                    End If
                End If
            End With
         End If
    Next Feuille_en_Cours
End Sub
 

Discussions similaires

Réponses
9
Affichages
291
  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
91

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83