Archivage automatique en fin de mois

Payou

XLDnaute Occasionnel
Bonjour a tous,

Après avoir fait des recherches sut internet et le forum, je n'arrive pas a trouver ce que je cherche, peut être bien parce que ça n'existe pas :)

Alors voila, je voudrais savoir s'il existe une fonction macro, qui me permettrait de demander a Excel, chaque fin de mois, de me faire un cut/paste dans un nouveau fichier Excel d'une feuille de mon classeur. pour simplifier on va dire Classeur 1 feuille 1, dans un classeur 2.

Bon après pour ce qui est de donner un nom au classeur en fonction de la date d'extraction, je dois pouvoir trouver ça après en fouinant sur le forum. Bon si jamais vous savez aussi le faire j'avoue que je suis preneur, mais je pourrais me débrouiller dans le cas contraire. La première partie m'intéresse bien plus... :D

Au plaisir de vous lire,

Payou
 

Payou

XLDnaute Occasionnel
Re : Archivage automatique en fin de mois

Vous avez déjà vu un mec gonfle ? C'est ça :D

Je viens de voir qu'on pouvait mettre une fonction jour ouvres !! Je vous raconte pas le pied quand je viens de tomber la dessus. Ce serait la fonction: NETWORKDAYS. Mais comment faire pour le dernier jour ouvre. Parce qu'en fait si le dernier jour du mois tombe un dimanche par exemple, le fichier ne sera pas ouvert, et donc je pourrais pas faire la sauvegarde... Je vais essayer d'approfondir et de bidouiller un peu votre macro pour essayer de l'intégrer. Si jamais je trouve la réponse je posterai :)

Payou

Edit j'ai un bon debut :
Code:
Function DernierJourTravaillé(DteDate As Date) As Date
'
' Renvoie la date du dernier jour ouvré (Lun-Ven) d'un mois.
'
    Dim D2 As Date
    If VarType(DteDate) <> 7 Then
        DernierJourTravaillé = Null
    Else
        D2 = DateSerial(Year(DteDate), Month(DteDate) + 1, 0)
        Do While Weekday(D2) = 1 Or Weekday(D2) = 7
            D2 = D2 - 1
        Loop
        DernierJourTravaillé = D2
    End If
End Function

Reste a l'adapter :)
 
Dernière édition:

Payou

XLDnaute Occasionnel
Re : Archivage automatique en fin de mois

Bon ben je sèche, je sais pas ou mettre cette fonction pour pouvoir l'appeler. Je la met dans la feuille ou je veux l'appeler, en public function, je crois avoir tout essayer, et pas moyen de l'appeler cette fichue fonction. QQ' un aurait-il une idée?

Ah, et une deuxième chose, j'ai deux macro qui s'appelle "Private Sub Worksheet_Change(ByVal Target As Range)", et quand une est censée se lancer il marque:

"Ambiguous name detected:Worksheet_Change"

Alors moi gentillement je met un "1" après le woksheet pour pas qu'il y est 2 fois le même nom, et résultat elle fonctionne plus. QQ'un y comprends qq'chose?

Thx,

Payou
 

Hulk

XLDnaute Barbatruc
Re : Archivage automatique en fin de mois

Hello Forum, Payou,

Payou, déjà ce que je peux te dire c'est que tu peux mettre qu'un seul événement Worksheet_Change, SélectionChange, Click, Open ou autres et c'est pareil pour tout !

Donc ton Worksheet_Change tu peux le déclarer qu'une fois, mais tu peux mettre plusieurs procédures dedans.

Exemple : Tu peux faire comme ceci...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Range("A1") = 10 Then MsgBox "Coucou"
    If Range("A1") = 20 Then MsgBox "Hello"

End Sub
Mais pas comme cela
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Range("A1") = 10 Then MsgBox "Coucou"

End Sub
et
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Range("A1") = 20 Then MsgBox "Hello"

End Sub
Et même si tu rajoutes un 1 pour les nommer différemment, ça ne joue pas, Excel ne les reconnaîtrait pas.

Ensuite pour ton fichier, si vraiment tu veux une aide efficace, déposes un fichier exemple sur lequel tu y auras mis quelques explications concernant tes souhaits.

Dans l'attente, Bonne journée.

Hulk.
 

Hulk

XLDnaute Barbatruc
Re : Archivage automatique en fin de mois

Re,

En ce qui concerne la fonction que tu as trouvée sur le net, fais comme ceci.

D'abord modifies-la comme ça et tu la places dans un module standar !
Code:
Function DernierJourOuvrés(DteDate As Date) As Date
'
' Renvoie la date du dernier jour ouvré (Lun-Ven) d'un mois.
'
    Dim MaDate As Date
    If VarType(DteDate) <> 7 Then
        DernierJourOuvrés = Null
    Else
        MaDate = DateSerial(Year(DteDate), Month(DteDate) + 1, 0)
        Do While Weekday(MaDate) = 1 Or Weekday(MaDate) = 7
            MaDate = MaDate - 1
        Loop
        DernierJourOuvrés = MaDate
    End If
    
End Function
C'est peut-être plus parlant pour toi.

Ensuite pour la faire fonctionner... Exemple avec le classeur que j'ai fourni :

1) A2 -> =AUJOURDHUI()
2) B2 -> =DernierJourOuvrés(A2)

Tu peux tester en mettant en A2 =Aujourdhui()-30 il te donnera le mois de mai, et si tu contrôles le mois de mai, il va jusqu'au dimanche 31, mais en B2 il affichera le vendredi 29 mai !

Voili :D

Cdt, Hulk.
 

Payou

XLDnaute Occasionnel
Re : Archivage automatique en fin de mois

Euh Hulk, je n'aurais qu'une chose a dire a ton encontre:

M.E.R.C.IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

Merci merci, vraiment la tu assure grave !!!

Passe une tres belle journee,

Payou
 

Hulk

XLDnaute Barbatruc
Re : Archivage automatique en fin de mois

Re,

Il y a un petit blème avec la fonction que tu as lorsque tu archiveras...

Te laisse t'en rendre compte et essayer d'y remédier :D

Si tu y arrives pas, reviens ok.

Bbye, Hulk.
 

Statistiques des forums

Discussions
312 896
Messages
2 093 387
Membres
105 716
dernier inscrit
jrmdprt