Regroupement des feuilles Excel

Bonjour,J'aurais de votre aide précieuse

Voilà une question qui me tracasse la tête

J'ai des données sur Excel 2007, plusieurs feuilles et je voudrais regrouper certaines cellules ou lignes de chaque feuilles en un seule feuille. Est il possible via le VBA ou autre méthode.

Vous trouveriez un exemple joint.

regroupement souhaitable par exemple est

Feuille 1 A10 A30!

Feuille 2 A10 A29!

Feuille 3 A10 A28!

Feuille x A10 Ax!

le tout en une seule feuille (les données du premier jour) et pour devenir A1 D1, E1 H1, I1 L1, et ainsi de suite.

idem pour les données de 2 deuxième jour et 3émé. si ça ne marche pas, au moins quelques astuces pour faciliter la tâche

Je sais que c'est trop mais j'ai confiance en vos compétences.

Bonjour anzid et bienvenue sur le forum,

Peux-tu illustrer ton exemple ? C'est-à-dire créer manuellement une nouvelle feuille puis mettre le regroupement souhaité ? Les données doivent être le plus précis possible.

Ce sera plus clair.

bonjour

Merci infiniment pour votre intérêt, et ravis d'être parmi vous.

je joindrait le classeur avec la Feuille 4 contenant le regroupement souhaitable.

re,

Tu peux lancer la macro "consol" dans le fichier suivant :

bonjour,

j'avais penser à la fonction consolider mais je n'arrive pas à avoir les résultats souhaités (il y eu Somme des données et dont je ne veut pas)

si vous pouvez me faire part d'une application exemple sur le petit fichier "test de regroupement"

merci encor vba-new

??!

Non, tu lances la macro "consol"

Dans l'onglet Développeur, clique sur "Macros" tout à gauche, puis sélectionne la macro "consol".

Si tu n'as pas l'onglet développeur, fais ceci :

Aide Microsoft a écrit :

Cliquez sur le bouton Microsoft Office , puis sur Options Excel.

Dans la catégorie Standard, sous Meilleures options pour travailler avec Excel, activez la case à cocher Afficher l’onglet Développeur dans le ruban, puis cliquez sur OK.

OK, excuse moi car je ne suis pas professionnel en excel

effectivement j'ai ajouté la fonction développeur selon vos suggestions

mais, ou vous avez mentionné les critères de regroupement dans la fenêtre "Macro"

cordialement

karim

-- 21 Jan 2010, 14:02 --

bonjour

je viens de voir oü vous avez mis le language

j'essaierai de le comprendre pour le généraliser sur mon classeur de 350 feuilles

merci beaucoup

anzid a écrit :

mais, ou vous avez mentionné les critères de regroupement dans la fenêtre "Macro"

En fait le seul critère que j'ai mis c'est 1

anzid a écrit :

je viens de voir oü vous avez mis le language

j'essaierai de le comprendre pour le généraliser sur mon classeur de 350 feuilles

Si tu ne connais pas le VBA ça va pas être simple ! Je peux peut-être te généraliser ça mais je ne connais pas la structure exacte de ton fichier. Comment s'appelle les feuilles ? Lors du regroupement, tu ne prends pas les données de toutes les feuilles quand même ?! Est-ce que toutes les feuilles ont la même structure que les feuilles du fichier joint ? C'est-à-dire : en-têtes sur la ligne 9...

Simpa le 1 comme critère

les feuilles sont nommées : Feuil1, Feuil2, Feuil3 ....Feuil347

Oui, toutes les feuilles ont la ligne 9 commune, mais à partir de cette ligne le nombre de ligne à consolider dans la feuille maître différent selon ce que la personne à manger pendant le premier jour.

je voudrais consolider en premier lieu les données de jour 1 (A10), et après dans une autre feuille maitre les données de 2 ème jours...

Essayons d'abord le 1 jours et merci pour votre compréhension cher Maître vba-new

-- 21 Jan 2010, 14:27 --

les couleurs que j'ai ajouté c'était juste pour les trois feuilles test.

le fichier original n'as aucune indication de couleur

pour la généralisation, je peut fractionner le fichier original sur trois fichiers originaux pour consolider les 100 feuilles par 100.

Qu'est ce que vous me suggérer ?

anzid a écrit :

pour la généralisation, je peut fractionner le fichier original sur trois fichiers originaux pour consolider les 100 feuilles par 100.

Qu'est ce que vous me suggérer ?

En fait, bien que ce sera peut-être plus lisible, ça va un peu trop compliquer les choses.

Donc tu confirmes que l'on prend les données des 300 feuilles ?

Pourquoi, dans la feuille maître, ne pas mettre les données en-dessous des autres plutôt qu'à droite les unes des autres ?

bonsoir vba-new

Si on complète le VBA que vous avez créer, par exemple :

Sub consol()

Dim sh As String, derlig%, i%, j%, k%, cpt As Byte

Application.ScreenUpdating = False

Sheets.Add after:=Sheets(Sheets.Count) 'on crée une nouvelle feuille

sh = ActiveSheet.Name

For i = 1 To 20

et ainsi de suite , on arrivera à consolider les 20 feuilles , pour moi le vba c'est un language chifré.

-- 21 Jan 2010, 15:27 --

vba-new a écrit :
anzid a écrit :

pour la généralisation, je peut fractionner le fichier original sur trois fichiers originaux pour consolider les 100 feuilles par 100.

Qu'est ce que vous me suggérer ?

En fait, bien que ce sera peut-être plus lisible, ça va un peu trop compliquer les choses.

Donc tu confirmes que l'on prend les données des 300 feuilles ?

Pourquoi, dans la feuille maître, ne pas mettre les données en-dessous des autres plutôt qu'à droite les unes des autres ?

Je peut réduire le nombre de feuilles à consolider jusqu'a 20, pour que les choses soit plus lisible

les donnes une fois consolidées, je vais les transmettre sur logiciel SPSS pour traitements statistiques. et pour cela chaque 4 colonnes me feront un seul sujet (après transposition)

j'ai fait un tout petit essai, mais j'ai eu que la consolidation des couleurs, veuillez voir le document word joint

merci pour vos efforts cher Maître.

-- 21 Jan 2010, 16:18 --

bonsoir Maître vba-new

Effectivement et grâce à vos recommandations, j'ai pu re-modifier le script "consol" ( please see the attached file) et j'ai eu la consolidation souhaitée. reste que je revérifie et supprimer les colorations.

Merci milles et une fois.

23vba-sub-consol.docx (21.89 Ko)
22vba-sub-consol.docx (23.01 Ko)

Re karim,

Voici une nouvelle version du fichier qui regroupe les données quelque soit le nombre de feuille. J'ai également amélioré 2-3 trucs et j'ai complètement changé le méthode d'approche pour résoudre ton problème.

Voir fichier :

Je vois que tu comprends vite ! Pour que le code te soit encore plus clair j'ai mis quelques commentaires dans le code :

Sub consol2()
Dim sh As Integer, derlig%, jour%, dercol As Long    'les % à côté des variables équivaut à Integer (Entier compris en -32 768 et 32 767)

    On Error GoTo consol2_Error

    Application.ScreenUpdating = False    'désactive la mise à jour de l'écran
    Application.DisplayAlerts = False    'Ici, pour éviter message d'alerte lors de la suppression d'une feuille

    Sheets.Add before:=Sheets(1)    'on crée une nouvelle feuille que l'on place en première position
    jour = InputBox("Quel jour voulez-vous extraire ?", "Jour", "Entrer le numéro du jour à extraire")    'on entre le critère du jour à extraire
    On Error Resume Next
    Sheets("jour" & jour).Delete    'on supprime la feuille jour si elle existe déjà
    ActiveSheet.Name = "jour" & jour    'on nomme la feuille

    For sh = 1 To Sheets.Count    'sheets.count c'est le nombre de feuille dans le classeur

        With Sheets(sh)
            'on teste ci-dessous le nom de la feuille pour voir si on la prend ou pas
            'si les 5 premiers caractères du nom de la feuille est égal à "Feuil", on extrait
            'le critère [A1].Value = "VALORACION DIETETICA" c'est pour être sûr que la feuille contient des données valides

            If Left(.Name, 5) = "Feuil" And .[A1].Value = "VALORACION DIETETICA" Then
                .Activate
                On Error Resume Next
                Sheets(sh).ShowAllData    's'il y a un filtre on affiche toutes les données
                derlig = .Range("A10").End(xlDown).Row    'on calcule la dernière ligne de données de la feuille active
                .Range("$A$9:$D$" & derlig).AutoFilter Field:=1, Criteria1:=jour    'on filtre les données sur la base du critère "jour"
                dercol = Sheets(1).Range("IV1").End(xlToLeft).Column + 1    'on calcule la dernière colonne de la feuille finale
                .[_FilterDataBase].SpecialCells(xlCellTypeVisible).Copy _
                        Destination:=Sheets(1).Cells(1, dercol)    'ici, après le filtre, on copie les données visible puis on
                                                                   'les colle dans la feuille finale à droite de la dernière colonne
                On Error Resume Next
                .ShowAllData
            End If

        End With

    Next sh

    Sheets("jour" & jour).Activate
    Sheets("jour" & jour).Columns(1).EntireColumn.Delete

    On Error GoTo 0
    Exit Sub

consol2_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") dans la procedure consol2 du Module Module1"

End Sub

A toi de l'adapter pour le nombre de feuille que tu veux extraire. Fais attention, une feuille est rajoutée en début de code. Donc adapte le nombre de feuille.

PS : Inutile de m'appeler maître, ça fait bizarre et tu seras quand même aidé

-- 21 Jan 2010 17:22 --

Pour les couleurs, tu as juste à les enlever des feuilles de données !

ok,

je vais essayer d'adapter le nouveau script à mon classeur, et je vous tiendrais au courant

merci vba-new pour votre aide si précieuse (Maître vba-new!!) .

-- 21 Jan 2010, 23:15 --

bonsoir vba-new

j'ai repris le travail sur excel et je suis entrain de fractionner le fichier original et consolider partie par partie selon votre vba magique

Merci encore

karim

bonsoir à toute l'équipe Excel-Pratique

Grâce à la précieuse aide de votre forum via VBA-NEW, j'ai pu m'avancer dans mon étude; ainsi je tiens a vous en remercie tous et vous souhaitez bonne continuation et spécialement notre membre dévoué vba-new.

karim

Rechercher des sujets similaires à "regroupement feuilles"