IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Programmer un enregistrement hebdomadaire en VBA ? [XL-2013]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Par défaut Programmer un enregistrement hebdomadaire en VBA ?
    Bonjour à tous,
    j’aimerai savoir comment programmer un enregistrement hebdomadaire en VBA, par exemple pour que mon fichier Excel s’enregistre dans « C:\Users\DimitriALL\Suppervion CONCASSEUR » tous les vendredis à 18H.
    Et si possible qu’il se nomme
    « Semaine 23 – 06/06/14 – 18H00.xlsm »
    « Semaine 24 – 13/06/14 – 18H00.xlsm »

    Et qu’une fois l’enregistrement effectué que mon fichier Excel se remette à zéros.

    Pour le moment je n’arrive qu’à enregistrer mon fichier Excel en cliquant sur un bouton sans savoir intégrer le numéro de la semaine dans le titre. Ce qui au final ne correspond en rien à mes attentes, puisque rien est automatique et que rien ne se remet à zéros.

    Merci à tous !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub CommandButton1_Click() 'copie sauvegarde classeur
    Dim nom As String
        nom = Rows(r2) & "SEMAINE" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & Hour(Time) & "H" & Minute(Time) & "MIN" & ".xlsm"
        ActiveWorkbook.SaveCopyAs "C:\Users\ALLARD\Suppervion CONCASSEUR" & "\" & nom
        rep = MsgBox("Votre fichier EXCEL est sauvegardé dans vos documents sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Premier problème:

    Pour que ta macro soit utilisable vendredi à 18 h, il faut qu'Excel et le classeur soient ouverts, vendredi à 18 h. Ou même un peu avant par mesure de prudence. Personnellement, je suis allergique au $%?&*())+%$/"|*&?%$"X*()_+&?%$/"! de planificateur de tâches, mais il est sans doute possible de patenter quelque chose avec cela.

    Pour que la macro se déclenche à l'ouverture du classeur, il faut utiliser l'événement Workbook_open dans le module d'événements du classeur.

    As-tu exécuté ton code au pas à pas avec un espion sur le nom pour voir quel nom sortait au bout de la ligne ? D'autre part, rien n'empêcher d'utiliser "nom =" plusieurs fois à la suite, en raboutant une petite partie à la fois, pour trouver plus facilement la source de l'erreur.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Par défaut
    Bonjour clementmarcotte,

    Normalement oui mon fichier excel sera ouvert le vendredi à 18H, sinon connaissez-vous un moyen de l'enregistrer même si il est fermer ?
    Avec "Workbook_open" il enregistrera à chaque démarrage du fichier ? Or j'aimerai l'enregistrer qu'a chaque fin de semaine.
    Je débute tout juste en VBA donc pour "As-tu exécuté ton code au pas à pas avec un espion sur le nom pour voir quel nom sortait au bout de la ligne " je ne sais pas du tout comment faire.
    Pour le nom, je ne vois pas ce que vous voulez dire. Sinon est-il possible d'utiliser une cellule pour nommé mon fichier ? Exemple si en cellule A1 j'ai "=NO.SEMAINE(DATE(2014;6;2);(15))" est t-il possible de mettre quelque chose comme "nom = Rows(a1)" ?

    Bonjour Menhir,

    Normalement le Excel est ouvert à chaque démarrage de l'ordinateur le matin (vers 6h) et s’arrête au soir un peu avant 20H. Ces données sont en effet modifiés par un seul poste (l'automate) qui écrit des données dans un ficher .CSV sur une carte SD, que l'on récupère en wifi, puis dans le fichier Excel par processus automatique. Personne n'ajoute de données, il pourrai presque être protéger en écriture puisque qu'il ne sert uniquement à lire un historique et un graphique. SUPERVISSEUR CONCASSEUR.xlsx

    L'onglet "Accueil" est un site internet qui nous indique l’état de l'automate.
    L'onglet "DonneesAPI" sera caché, c'est dans cette onglet que sont envoyé les données de l'automate.
    L'onglet "Historique" ajoute un ligne à chaque fois qu'un défaut apparaît (un arrêt d'urgence par exemple cellule G1 de la feuille "DonneesAPI"
    L'onglet "Bilan par zone" range tous les arrêt du système par zone afin d'établir une futur MTBF (Moyenne des Temps de Bon Fonctionnement) de chaque zone. Afin de savoir laquelle est la plus pénalisante, et d'établir un plan de maintenance sur celle ci.

    Et c'est parfaitement ça je veux copier un fichier excel sous un autre nom pour en faire une sauvegarde "historique" chaque semaine et "remettre le fichier excel d'origine à zéros". Et au bout des 52 semaines de l'année avoir avoir 52 fichiers dans « C:\Users\DimitriALL\Suppervion CONCASSEUR » nommé
    « Semaine 23 – 06/06/14 – 18H00.xlsm »
    « Semaine 24 – 13/06/14 – 18H00.xlsm »

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par DimitriALL Voir le message
    connaissez-vous un moyen de l'enregistrer même si il est fermer ?
    Bin oui : le copier, tout simplement.
    Et pour ça, comme je le disais, VBScript est plus adapté qu'une macro VBA sous Excel.
    Pour info, pour faire ça, tu peux télécharger Visual Basic Express gratuitement sur le site Microsoft.
    http://msdn.microsoft.com/fr-fr/express/aa718406
    Ce n'est pas un outil que je connais suffisamment pour pouvoir t'aider (il y a une section spécifique sur ce forum) mais connaissant le VBA Excel je pense que ça doit pouvoir se faire en trois ou quatre ligne.

    Normalement le Excel est ouvert à chaque démarrage de l'ordinateur le matin (vers 6h) et s’arrête au soir un peu avant 20H.
    Ce qui signifie donc que ton fichier est enregistré au moins une fois pas jour.
    Je suppose que le plus simple, est donc de le sauvegarder avec un nom incluant le numéro de semaine.

    A moins que tu veuilles le sauvegarder toujours sous le même nom et en créer une copie dont le nom inclut le numéro de semaine.
    Mais, dans ce cas, il faut que tu penses "copie" et non "enregistrement" (voir ci-dessus).

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Par défaut
    Très bien je vais donc essayer avec Visual Basic Express merci !

    Ce qui signifie donc que ton fichier est enregistré au moins une fois pas jour.
    Non car même si le excel est fermé les données sont dans l'automate, le excel ne s'actualise que toute les 1min donc sans enregistrer tout ce qui s'est passé la nuit apparaîtra au matin des la première actualisation

    A moins que tu veuilles le sauvegarder toujours sous le même nom et en créer une copie dont le nom inclut le numéro de semaine.
    Oui c'est ce que j'aimerai faire. Dans ce cas une copie par semaine.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par DimitriALL Voir le message
    Non car même si le excel est fermé les données sont dans l'automate, le excel ne s'actualise que toute les 1min donc sans enregistrer tout ce qui s'est passé la nuit apparaîtra au matin des la première actualisation
    Parce que tu dis que le soir le poste est éteint. Donc soit tu quitte Excel sans sauvegarder, soit tu sauvegarde.
    Si, comme je le crois, on est dans le second cas, ça signifie que le fichier est sauvegardé au moins une fois pas jour.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par DimitriALL Voir le message
    j’aimerai savoir comment programmer un enregistrement hebdomadaire en VBA
    Il faudrait que tu expliques un peu plus le contexte.
    Est-ce que ça signifie que ton Excel est ouvert en permanence jour et nuit et que ses données sont modifiées sur un seul poste soit par un processus automatique, soit par des utilisateurs n'importe quand dans la semaine mais que ces données ne sont sauvegarder qu'une seule fois ?

    Ou bien est-ce que tu veux copier un fichier excel sous un autre nom pour en faire une sauvegarde "historique" ?

    Dans le second cas, il serait bien plus simple de t'orienter vers une combinaison VBScript + planificateur de tâches.

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    a mon avis, tu devrais mettre ta procédure "Sauve" dans un module standard
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Par défaut
    Merci Dom,

    J'essai tout de suite et vous dit quoi.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Par défaut
    Maintenant j'ai un message d'erreur "Erreur de compilation, Sub ou Function non définie"

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Sauve()
       Application.WorksheetFunction.WeekNum (Date)
         If WeekNum(Date) = vbTuesday Then
          ThisWorkbook.SaveCopyAs "C:\Users\Vince\Documents\Sauve_" & Year(Now) & "_" & WeekNum(Now) & ".XLSM"
       End If
       Application.Wait "18:11:01"
       Application.OnTime TimeValue("18:11:00"), "Sauve"
    End Sub

    Puis j'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       Application.WorksheetFunction.WeekNum (Date)
        If Weekday(Now) = vbTuesday Then
          ThisWorkbook.SaveCopyAs "C:\Users\Vince\Documents\Sauve_" & Year(Now) & "_" & WeekNum(Now) & ".XLSM"
       End If
       Application.Wait "18:11:01"
       Application.OnTime TimeValue("18:11:00"), "Sauve"
    End Sub

  11. #11
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est vraiment difficile de se faire comprendre.

    Citation Envoyé par DimitriALL Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Application.WorksheetFunction.WeekNum (Date)
    Ca, ça ne sert à rien.

    Citation Envoyé par DimitriALL Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          ThisWorkbook.SaveCopyAs "C:\Users\Vince\Documents\Sauve_" & Year(Now) & "_" & WeekNum(Now) & ".XLSM"
    Ca doit être remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          ThisWorkbook.SaveCopyAs "C:\Users\Vince\Documents\Sauve_" & Year(Now) & "_" & Month(Now) & "_" & Day(Now) & ".XLSM"

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Par défaut
    Désolé Menhir je n'avais pas vue dans message à 18H02

    Ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.SaveCopyAs "C:\Users\Vince\Documents\Sauve_" & Year(Now) & "_" & Application.WorksheetFunction.WeekNum(Now) & ".XLSM"
    J'avais déjà essayé et ça ne fonctionner pas.

    J'ai fais un deuxième test en "rangeant" un peu les codes tout remis au propres et ça fonctionne

    Maintenant j'ai ça dans ThisWorkbook:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:56:00"), "Sauve"
    End Sub
    Et j'ai ça dans un module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Sauve()
       If Weekday(Date) = vbWednesday Then
          ThisWorkbook.SaveCopyAs "C:\Users\Vince\Documents\Sauve_" & Year(Now) & "_" & Application.WorksheetFunction.WeekNum(Now) & ".XLSM"
       End If
       Application.Wait "09:56:01"
       Application.OnTime TimeValue("09:56:00"), "Sauve"
    End Sub
    Et tout fonctionne.

    Merci à casefayere pour l'idée du module.

    Et un grand MERCI à Menhir pour m'avoir suivi tout au long de cette discussion et pour sa patience

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme pour enregistrer, fermer et ouvrir Delphi
    Par pepito62 dans le forum Langage
    Réponses: 4
    Dernier message: 23/10/2007, 21h27
  2. [VBA-E] probleme enregistrement fichier pour VBA excel
    Par hamster. dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2007, 19h52
  3. Probleme d'enregistrement sur Macro/VBA de Excel
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/11/2005, 17h23
  4. Valider l'enregistrement en cours VBA
    Par avril.stephane dans le forum Access
    Réponses: 3
    Dernier message: 24/08/2005, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo