Macro de macro ???

Bonjour ,

Est-il possible de faire une macro de macro ?

Je m'explique,

Sub recap_9_sept()

Sheets.Add.Name = "9 sept"

With Sheets("9 sept")

For Each sh In Sheets

If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then

derlig = .[A65000].End(xlUp).Row + 1

.Cells(derlig, 1).Value = sh.Range("B15").Value

.Cells(derlig, 2).Value = sh.Range("B16").Value

.Cells(derlig, 3).Value = sh.Range("B18").Value

sh.Range("C21:E21").Copy .Cells(derlig, 4)

End If

Next sh

For Each sh In Sheets

If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then

derlig = .[A65000].End(xlUp).Row + 1

.Cells(derlig, 1).Value = sh.Range("H15").Value

.Cells(derlig, 2).Value = sh.Range("H16").Value

.Cells(derlig, 3).Value = sh.Range("H18").Value

sh.Range("I21:K21").Copy .Cells(derlig, 4)

End If

Next sh

For Each sh In Sheets

If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then

derlig = .[A65000].End(xlUp).Row + 1

.Cells(derlig, 1).Value = sh.Range("N15").Value

.Cells(derlig, 2).Value = sh.Range("N16").Value

.Cells(derlig, 3).Value = sh.Range("N18").Value

sh.Range("O21:Q21").Copy .Cells(derlig, 4)

End If

Next sh

End With

End Sub

Les valeur en gras sont celles que je modifie,

Je fais une macro comme celle là pour chaque jour mais j'ai 60 jours. est-il possible d'automatiser le truc ? je mets mon fichier , vous comprendrez.

MERCI

https://www.excel-pratique.com/~files/doc2/GNoxsCopie_de_base_de_donnA_e.xls

https://www.excel-pratique.com/~files/doc2/Copie_de_base_de_donnA_e.xls

Re-,

je sens qu'on va rentrer dans un fil sans fin...

En regardant ton premier fichier (du matin), et ton deuxième, il manque pas mal de données...

La solution que je pourrais te proposer fonctionnera certes, mais ne sera pas complète....

Tout d'abord, pourquoi, parfois les dates se suivent, dans la colonne B, et parfois, c'est par semaine?

Faut-il ne traiter que les dates au format "09-sept", ou les dates au format "lundi 26 octobre 2009"?

Explique déjà cette différence de format et de décalage dans les dates entrées en colonne B (ou H ou N)....

A te relire

Bonsoir

Come le dit Félix, cela manque de précision, mais tu peux dans un premier temps

tester le code suivant. (un sous-programme appelé par des programmes courts)

Cordialement

Sub recap_23_sept()

'Passage de paramêtres au sous-programme

Call Recap("23/09/2009", 23)

End Sub

Sub recap_30_sept()

Call Recap("30/09/2009", 24)

End Sub

Sub Recap(DateV As Date, Ligne As Integer)

Dim Mois0 As Byte

Dim Mois1 As String

Dim Cellules As String

Mois0 = Month(DateV)

Mois1 = Array("janv", "fév", "mars", "avril", "mai", "juin", "juil", "août", "sept", "oct", "nov", "déc")(Mois0)

Sheets.Add.Name = Day(DateV) & " " & Mois1

With Sheets(Day(DateV) & " " & Mois1)

For Each sh In Sheets

If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then

derlig = .[A65000].End(xlUp).Row + 1

.Cells(derlig, 1).Value = sh.Range("B15").Value

.Cells(derlig, 2).Value = sh.Range("B16").Value

.Cells(derlig, 3).Value = sh.Range("B18").Value

Cellules = "C" & Ligne & ":E" & Ligne

sh.Range(Cellules).Copy .Cells(derlig, 4)

End If

Next sh

For Each sh In Sheets

If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then

derlig = .[A65000].End(xlUp).Row + 1

.Cells(derlig, 1).Value = sh.Range("H15").Value

.Cells(derlig, 2).Value = sh.Range("H16").Value

.Cells(derlig, 3).Value = sh.Range("H18").Value

Cellules = "I" & Ligne & ":K" & Ligne

sh.Range(Cellules).Copy .Cells(derlig, 4)

End If

Next sh

For Each sh In Sheets

If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then

derlig = .[A65000].End(xlUp).Row + 1

.Cells(derlig, 1).Value = sh.Range("N15").Value

.Cells(derlig, 2).Value = sh.Range("N16").Value

.Cells(derlig, 3).Value = sh.Range("N18").Value

Cellules = "O" & Ligne & ":Q" & Ligne

sh.Range(Cellules).Copy .Cells(derlig, 4)

End If

Next sh

End With

End Sub

Salut le forum

La balise code est la pour joindre du code de macro

Sub recap_9_sept() 
Sheets.Add.Name = "9 sept" 
With Sheets("9 sept") 
For Each sh In Sheets 
If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then 
derlig = .[A65000].End(xlUp).Row + 1 
.Cells(derlig, 1).Value = sh.Range("B15").Value 
.Cells(derlig, 2).Value = sh.Range("B16").Value 
.Cells(derlig, 3).Value = sh.Range("B18").Value 
sh.Range("C21:E21").Copy .Cells(derlig, 4) 
End If 
Next sh 
For Each sh In Sheets 
If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then 
derlig = .[A65000].End(xlUp).Row + 1 
.Cells(derlig, 1).Value = sh.Range("H15").Value 
.Cells(derlig, 2).Value = sh.Range("H16").Value 
.Cells(derlig, 3).Value = sh.Range("H18").Value 
sh.Range("I21:K21").Copy .Cells(derlig, 4) 
End If 
Next sh 
For Each sh In Sheets 
If sh.Name <> "Sommaire" And sh.Name <> "Feuil2" Then 
derlig = .[A65000].End(xlUp).Row + 1 
.Cells(derlig, 1).Value = sh.Range("N15").Value 
.Cells(derlig, 2).Value = sh.Range("N16").Value 
.Cells(derlig, 3).Value = sh.Range("N18").Value 
sh.Range("O21:Q21").Copy .Cells(derlig, 4) 
End If 
Next sh 
End With 
End Sub 

Mytå ;(

Bonjour,

Mon fichier base de donnée est un fichier qui me permetra d'incrire les enfants au centre de loisirs que je dirige.

Dans la partie supérieur de l'onglet "test", je rentre les infos concernant les familles et dans la partie inférieur je rentre les données des enfants. donc un onglet par famille.

Ensuite dans cette partie inférieur, je rentre les jours où les enfants seronts présents et si il le seront le matin (M) le repas (R) et l'apres midi (AM)

la macro dont vous m'avez fait part est super car elle me permet de faire un récap par jour (exemple 9 septembre) en regardant tous les onglets des familles et du coup je peux savoir instantanément combien d'enfants il y aura sur n'importe quel jours. les date dans la partie inférieur correspondent aux jours d'ouverture de con centre de loisirs.

en fait, mon problème, c'est qu'il y a 60 jours d'ouverture et pour chaque jours, il faut que je modifie la macro manuellement. comme vous pouvez le voir dans le module 3, il y a dedans 6 macro qui se ressemble et j'y ai fait les modif manuellement.

en fait, il y a pas grand chose a modifier mais faire les 60 c'est un peu fastidieux donc je me demandait si il y avait pas moyens d'automatiser la modification pour que mes macros se fasse automatiquement

J'espère que vous comprendrez, je sais pas si je suis clair dans ce que j'ai dit. si vous avez du temps pour voir si c'est possible je vous remercie par avance.

Fab

Bonjour,

autre petite question...

Dans ton fil précédent, tu avais plusieurs onglets avec les noms des enfants.

Est-ce toujours d'actualité, ou ta version définitive est le fichier présent dans ce fil, et qu'il n'y a que trois enfants?

A te relire

la version de ce post est la dernière, c'est a dire que je prévoie qu'une famille peut avoir 3 enfants au max.

Chaque onglet correspond à une famille

Cordialement

Fab

Re-,

une dernière petite question...

Faut-il recopier même si le gamin n'a pas été, ou il faut au minimum 1 croix dans M, R ou AM?

je préfèrerait ne pas recopier les enfants qui n'ont pas de croix mais si c'est trop compliqué, c'est pas grave.

Du coup quand je ferait une macro "recap..." l'onglet qui va être créé me montrera les enfants qui viendront ce jour là uniquement mais il me faut 60 macro "recap..." d'ou ma dificulté. d'autant plus que je me suis apperçu que je m'était trompé dans mon précédent fichier donc je vous le renvoie juste...

j'ai fait aussi un exemple, ça sera certainement plus claire que moi

https://www.excel-pratique.com/~files/doc2/Copie_de_base_de_donnee.zip

Merci beaucoup de votre aide !!!

https://www.excel-pratique.com/~files/doc2/Copie_de_base_de_donnee.zip

Re-,

un premier jet...

J'ai utilisé un userform, tu peux choisir plusieurs dates à mettre à jour.

J'ai ajouté un onglet base, qui comprend les dates et les noms de famille (nécessaires pour le déroulement de la macro)

A l'initialisation, tu supprimes tous les onglets de date, et tu en créés autant qu'il y a de dates dans l'onglet base, sur le modèle de l'onglet "modèle".

Bonne découverte

Nota, il faut initialiser avant de commencer.....

https://www.excel-pratique.com/~files/doc2/base_de_donnee_v1.zip

Quelques explications à l'intérieur du fichier....

c'est assez wawoo !!!

Cependant, j'ai un petit soucis, si je modifie les inscription de la famille ALKZEHDKJQ par exemple, ça ne se reporte pas sur le récap. en fait ça dépend de certaines modif de présence qui ne veux pas prendre en compte.

Et quand je crée une nouvelle famille, j'aimerai que le nom de famille se mette automatiquement dans l'onglet base à la suite des autres.

En tout cas merci pour tout ce travail fournit, ça me permet aussi de voir ce que je peux faire et adapter en fonction de mes besoins.

4conception-v2.xlsx (37.65 Ko)

Re-,

une nouvelle version...

j'ai rajouté une barre de menu personnalisée...

Ainsi, si tu changes une donnée, à partir de la barre de menu, tu demandes une mise à jour, en cliquant sur Recap....

Par contre, si tu créés une nouvelle famille, si c'est en insérant un onglet, on pourrait le faire, si c'est en dupliquant un onglet déjà existant, c'est un peu plus ardu, voire impossible....

Mais, qu'est-ce que de rajouter à la main le nouveau nom?????

https://www.excel-pratique.com/~files/doc2/base_de_donnee_v2.zip

Merci de votre aide, grace à tout ça je pense que je vais pouvoir avancer à grands pas !!!

Merci encore

Rechercher des sujets similaires à "macro"