Besoin d'aide VBA

Fermé
90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010 - 13 janv. 2010 à 16:02
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 14 janv. 2010 à 22:33
Bonsoir, dans le cadre de mon stage en entreprise je dois automatiser divers opérations pour traiter une base de données. Le fichier d'origine est un classeur excel.

Je demande votre aide car je bloque sur une macro: j'ai une feuille excel appelée "CPC" ou j'enregistre le total des ventes et charges et qu'elle calcule automatiquement le résultat d'une journée précise (ce travail je dois l'effectuer quotidiennement) . J'ai besoin d'une macro qui copie chacune de ses feuilles dans un seul et même classeur "archivage". donc a la fin le nouveau classeur "archivage" doit contenir 31 feuille déja calculée dans la feuille "CPC".

Pouvez vous me donnez un code pour une macro qui réaliserai ceci?
merci d'avance

7 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
13 janv. 2010 à 22:55
bonjour
ça ferait qqchose comme ça :
Sub Sauvegardefeuille()
Application.ScreenUpdating = False
Workbooks.Open Filename:="D:\sauvegarde.xls"
ThisWorkbook.ActiveSheet.Copy Before:=Workbooks("sauvegarde.xls").Sheets(1)
Workbooks("valeurs.xlsx").Save
Workbooks("valeurs.xlsx").Close
Application.ScreenUpdating = True
MsgBox "sauvegarde éffectuée"
End Sub

1
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
13 janv. 2010 à 16:20
bonjour,
"j'ai une feuille excel appelée "CPC" [...] J'ai besoin d'une macro qui copie chacune de ses feuilles dans un seul et même classeur "archivage" => j'ai pas compris, y'a un feiulle ou plusieurs ?
"donc a la fin le nouveau classeur "archivage" doit contenir 31 feuille déja calculée dans la feuille "CPC"" => euh....encore moins clair, t'as 31 feuilles dans 1 feuille ????
peux-tu ré-expliquer stp ?
0
90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010
13 janv. 2010 à 22:38
voila je vais plus éclaircir, je veux copier le contenu d'une feuille de base appelé "CPC" dans un autre classeur"archivage"
bon disons j'ai deux classeurs le premier la ou je fais le calcul, et je veux copier ce calcul dans le 2ème classeur ou je mets l'archivage de mes calculs.
A chaque fois je réalise mon calcul je veux le copier et le sauvegarder dans un autre classeur.
Donc dans le classeur "archivage" faut qu'il apparait 31 feuilles à la fin du moi, chaque feuille représente un jours d'un mois précis.
et merci encore une fois
0
90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010
13 janv. 2010 à 23:13
merci infiniment ça marche très bien, mais quand j'exécute la macro il me fait une erreur d'exécution "9"
L'indice n'appartient pas à la sélection. est ce que tu sais de quoi s'agit il ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
13 janv. 2010 à 23:17
oups, dsl j'ai oublié d'adapter le nom de fichier ds tout le code, "valeurs.xlsx" est le fichier que j'ai utilisé pour tester, remplace avec le nom de ton fichier de sauvegarde...
0
90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010
14 janv. 2010 à 10:54
désolé mais j'ai pas bien compris
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
14 janv. 2010 à 11:09
ok :
Sub Sauvegardefeuille()
Application.ScreenUpdating = False
Workbooks.Open Filename:="D:\sauvegarde.xls"
ThisWorkbook.ActiveSheet.Copy Before:=Workbooks("sauvegarde.xls").Sheets(1)
Workbooks("sauvegarde.xls").Save
Workbooks("sauvegarde.xls").Close
Application.ScreenUpdating = True
MsgBox "sauvegarde éffectuée"
End Sub

passages en gras à adapter avec le nom/emplacement de ton fichier sauvegarde.....
0
90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010
14 janv. 2010 à 19:55
dis moi tu sais pas est ce que c'est possible de mettre la date du jour dans le nom d'une feuille ????
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435 > 90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010
14 janv. 2010 à 20:34
Re,
tu voudrais que la feuille sauvegardée soit nommée avec la date du jour, c'est ça ?
dans ce cas :
Sub Sauvegardefeuille()

Application.ScreenUpdating = False
d = Format(Date, "dd-mm-yyyy")
Workbooks.Open Filename:="D:\valeurs.xlsx"

For Each ws In Workbooks("valeurs.xlsx").Sheets
    If ws.Name = d Then
        MsgBox "Une feuille " & d & " existe déjà dans le classeur " & Workbooks("valeurs.xlsx").Name & vbCrLf & "Abandon de la sauvegarde"
        Workbooks("valeurs.xlsx").Saved = True
        Workbooks("valeurs.xlsx").Close
        Exit Sub
    End If
Next ws

ThisWorkbook.ActiveSheet.Copy Before:=Workbooks("valeurs.xlsx").Sheets(1)
Workbooks("valeurs.xlsx").Sheets(1).Name = Format(Date, "dd-mm-yyyy")
Workbooks("valeurs.xlsx").Save
Workbooks("valeurs.xlsx").Close

Application.ScreenUpdating = True
MsgBox "sauvegarde éffectuée"

End Sub
0
90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010 > tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013
14 janv. 2010 à 22:15
dans le dernier code t'as présenté que le classeur "valeurs.xls" sans mettre le classeur de sauvegarde !!
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435 > 90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010
14 janv. 2010 à 22:33
oui, autant pour moi, jsuis un peu fatigué (en meme temps ça veut dire que je test le code avant de te le donner ;) ), mais maintenant tu connais le truc, tu remplaces avec ton classeur :
Sub Sauvegardefeuille()

Application.ScreenUpdating = False
d = Format(Date, "dd-mm-yyyy")
Workbooks.Open Filename:="D:\sauvegarde.xls"

For Each ws In Workbooks("sauvegarde.xls").Sheets
    If ws.Name = d Then
        MsgBox "Une feuille " & d & " existe déjà dans le classeur " & Workbooks("sauvegarde.xls").Name & vbCrLf & "Abandon de la sauvegarde"
        Workbooks("sauvegarde.xls").Saved = True
        Workbooks("sauvegarde.xls").Close
        Exit Sub
    End If
Next ws

ThisWorkbook.ActiveSheet.Copy Before:=Workbooks("sauvegarde.xls").Sheets(1)
Workbooks("sauvegarde.xls").Sheets(1).Name = Format(Date, "dd-mm-yyyy")
Workbooks("sauvegarde.xls").Save
Workbooks("sauvegarde.xls").Close

Application.ScreenUpdating = True
MsgBox "sauvegarde éffectuée"

End Sub
0
90-moss Messages postés 8 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 17 janvier 2010
14 janv. 2010 à 19:43
je sais pas comment te remercier !! ça marche vraiment très bien merci
0