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.
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 SubA 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
-- 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