Bonjour à tous et à toutes,
Merci d'avance de prendre le temps de me lire.
Je suis trésorier d'une association de halte garderie.
J'ai 2 fichiers (ci joint):
- Un planning
- Un pour la facturation
Je copie ces 2 fichiers dans un même dossier à chaque mois.
J'aimerais alléger le code des deux premières macro et en créer une troisième. Je connais un peu le vba mais les bases uniquement (les boucles, les with, et les autres trucs avancés, je gère assez mal ... en fait pas du tout)
Une saisie est opérée sur l'onglet "Planning Parent" de "Planning.xlsm".
La macro suivante me permet de générer le planning journalier (jusqu'à 22 jours par mois). Macro réalisée avec la fonction "enregistrer une macro". Elle est donc fortement répétitive.
Je n'arrive pas à définir la boucle mais j'ai repéré les éléments suivants :
- AutoFilter Field du matin : de 1 à 64 incrémentés de 3 à chaque fois
- AutoFilter Field de l'après midi de 68 à 89 incrémentés de 1 à chaque fois
- les onglets "Jour" de 1 à 22
Une fois le planning généré, je l'exporte vers ma base facturation qui me permet de modifier le planning au réel (le planning reste figé). Donc je copie colle (valeurs) tous les jours vers le fichier "Base_facturation.xlsm", en plus des dates.
La également, une macro enregistrée via "Enregistrer une macro", est utilisée.
J'ai vu qu'on pouvait faire via un "=", mais je n'arrive à définir le nom du fichier à ouvrir "Base_Facturation.xlsm"
La boucle pourrait être définie sur les onglets "Jour" de 1 à 22.
J'aimerais que la macro ouvre le fichier Base facturation quand je lance la macro (le fichier Base_Facturation et Planning se trouvent dans le même dossier).
Enfin (... j'en demande bcp), j'aimerais faire une macro à partir de l'onglet "Publi" dans Base_Facturation" (qui me permet de faire du publipostage) :
- Sélectionner uniquement les familles qui ont une facture (Colonne "Total Facture" différente de 0)
- Copier coller vers un nouveau classeur ces données
- Avoir trois inputbox qui enregistrent la date de facture, la période et la date limite de règlement et la copie sur les colonnes idoines sur autant de ligne que de lignes non vides
- définir le numéro de facture ("AAAA-MM-N°1 à X ou X = nombre de ligne) ou AAAA et MM = année et mois de la date définie ci dessus
- Enregistrer dans le répertoire courant sous le nom "Facture du "AAAA-MM définies en A2
Voili voilou.
Merci d'avance.
Butagaz38
Merci d'avance de prendre le temps de me lire.
Je suis trésorier d'une association de halte garderie.
J'ai 2 fichiers (ci joint):
- Un planning
- Un pour la facturation
Je copie ces 2 fichiers dans un même dossier à chaque mois.
J'aimerais alléger le code des deux premières macro et en créer une troisième. Je connais un peu le vba mais les bases uniquement (les boucles, les with, et les autres trucs avancés, je gère assez mal ... en fait pas du tout)
Une saisie est opérée sur l'onglet "Planning Parent" de "Planning.xlsm".
La macro suivante me permet de générer le planning journalier (jusqu'à 22 jours par mois). Macro réalisée avec la fonction "enregistrer une macro". Elle est donc fortement répétitive.
Je n'arrive pas à définir la boucle mais j'ai repéré les éléments suivants :
- AutoFilter Field du matin : de 1 à 64 incrémentés de 3 à chaque fois
- AutoFilter Field de l'après midi de 68 à 89 incrémentés de 1 à chaque fois
- les onglets "Jour" de 1 à 22
Code:
' Jour 1 - Matin
ActiveSheet.Range("$E$3:$CO$87").AutoFilter Field:=1, Criteria1:="X"
Range("A4:A88").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Jour (1)").Select
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("PLANING_ENFANTS").Select
ActiveSheet.ShowAllData
'Jour 1 - Après Midi
ActiveSheet.Range("$E$3:$CO$87").AutoFilter Field:=68, Criteria1:="=1", _
Operator:=xlOr, Criteria2:="=2"
Range("A4:A88").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Jour (1)").Select
Range("F4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("PLANING_ENFANTS").Select
ActiveSheet.ShowAllData
Une fois le planning généré, je l'exporte vers ma base facturation qui me permet de modifier le planning au réel (le planning reste figé). Donc je copie colle (valeurs) tous les jours vers le fichier "Base_facturation.xlsm", en plus des dates.
La également, une macro enregistrée via "Enregistrer une macro", est utilisée.
Code:
'Copie Date Planning
Sheets("PLANING_ENFANTS").Select
Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Base_Facturation.xlsm").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Planning.xlsm").Activate
Range("E2:BR2").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Base_Facturation.xlsm").Activate
Range("E2:BR2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Jour 1
Windows("Planning.xlsm").Activate
Sheets("Jour (1)").Select
Range("B4:H23").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Base_Facturation.xlsm").Activate
Sheets("Jour (1)").Select
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Windows("Planning.xlsm").Activate
Range("B4").Select
Application.CutCopyMode = False
J'ai vu qu'on pouvait faire via un "=", mais je n'arrive à définir le nom du fichier à ouvrir "Base_Facturation.xlsm"
La boucle pourrait être définie sur les onglets "Jour" de 1 à 22.
J'aimerais que la macro ouvre le fichier Base facturation quand je lance la macro (le fichier Base_Facturation et Planning se trouvent dans le même dossier).
Enfin (... j'en demande bcp), j'aimerais faire une macro à partir de l'onglet "Publi" dans Base_Facturation" (qui me permet de faire du publipostage) :
- Sélectionner uniquement les familles qui ont une facture (Colonne "Total Facture" différente de 0)
- Copier coller vers un nouveau classeur ces données
- Avoir trois inputbox qui enregistrent la date de facture, la période et la date limite de règlement et la copie sur les colonnes idoines sur autant de ligne que de lignes non vides
- définir le numéro de facture ("AAAA-MM-N°1 à X ou X = nombre de ligne) ou AAAA et MM = année et mois de la date définie ci dessus
- Enregistrer dans le répertoire courant sous le nom "Facture du "AAAA-MM définies en A2
Voili voilou.
Merci d'avance.
Butagaz38