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