Alléger un code VBA + Exporter feuille

butagaz38

XLDnaute Nouveau
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

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
 

Pièces jointes

  • Planning.xlsm
    197.8 KB · Affichages: 105
  • Base_Facturation.xlsm
    200.9 KB · Affichages: 59
  • Planning.xlsm
    197.8 KB · Affichages: 122
  • Planning.xlsm
    197.8 KB · Affichages: 112

Bebere

XLDnaute Barbatruc
Re : Alléger un code VBA + Exporter feuille

bonjour Butagaz
le principe
tu fais ton planning ensuite tu veux répartir ce planning dans différentes feuilles (nom=jour(x))
le code qui est fait met à jour les différentes feuilles au fur et à mesure
complément d'information dans fichier
pour tes essais tu vides les feuilles
si projet adopté vider les feuilles se fera par code
à bientôt
 

Pièces jointes

  • PlanningButagaz.zip
    82.6 KB · Affichages: 55

Discussions similaires

Réponses
2
Affichages
108

Statistiques des forums

Discussions
312 087
Messages
2 085 198
Membres
102 815
dernier inscrit
Henridic