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

Macros et VBA Excel Discussion :

copie classeur Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut
    Bonjour à tous et à toutes,

    J'ai un classeur Excel contenant le numéro de semaine en Sommaire'!D10.

    Je voudrais qu'à chaque changement de semaine (qu'on rentrera à la main), le fichier se copie en gardant la semaine précédente. Je m'explique, il faudrait que le fichier se copie afin de garder les données de la semaine précédente. Ce classeur sera donc le classeur principal qui sera modifié chaque semaine.
    De plus il faudrait que le nom de la copie soit : Suivi production-semaine "numéro de la semaine).

    Merci d'avance pour votre précieuse aide

    Je viens de faire ce code afin de copier le fichier en mettant le nom + la semaine indiquée en D10.
    Cependant il ne se lance que lorsqu'on click sur un bouton et je voudrai que la sauvegarde se face dès que l'on modifie la date.

    Je vous copie le code que je viens de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Option Explicit
     
    Public Sub Copie() 'copie sauvegarde classeur
     
    Dim nom As String
        nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5) & " - Semaine " & Range("d10") & ".xlsx"
        ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution est d'utiliser la procédure événementielle Worksheet_Change de la feuille où se trouve la cellule D10
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
     Dim nom As String
     If Target.Address = "$D$10" Then
      nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5) & " - Semaine " & Target & ".xlsx"
      ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
     End If
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut
    Bonjour Corona,

    Tout d'abord merci de ta réponse.

    Cependant je ne comprends pas ce code. En effet, lorsque mon numéro de semaine change je ne vois aucune copie se faire dans le fichier. Quel est le but de la procédure Worksheet_Change?

    Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai simplement recopier ton code qui manifestement fait un Sauver Sous du classeur actif en lui donnant un autre nom.
    La procédure événementielle Private Sub Worksheet_Change(ByVal Target As Range) qui doit être placée dans l'objet feuille exécute le code si la valeur de la cellule D10 a été modifiée.
    Tu as demandé
    Cependant il ne se lance que lorsqu'on click sur un bouton et je voudrai que la sauvegarde se face dès que l'on modifie la date.
    Je vois maintenant que c'est quand tu changes la date qu'il faut réagir.
    Je suppose que le n° de semaine placé en d10 est le résultat d'une formule. Il y a lieu donc lieu de modifier $D$10 dans le code If Target.Address = "$D$10" Then en le remplacant par l'adresse de la cellule où se trouve la date que tu modifies.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut
    D'accord ça marche, je me suis arrangé pour que l'utilisateur mette la semaine et que la date se mette automatiquement

    Cependant, la copie ne se fait que lorsqu'on sauvegarde. Admettons que l'utilisateur sauvegarde plusieurs fois son travail, il n'aura qu'une copie qui ne contiendra pas le travail "final". Je ne sais pas si c'est compréhensible ce que je demande ?

    En tout cas un grand merci pour ton aide!

Discussions similaires

  1. Copie de données dans TCD vers un autre classeur Excel
    Par jerokat dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/02/2015, 11h21
  2. [ VB6 ]Copie de donnée entre deux classeurs Excel
    Par leriderfoudu77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 21/12/2012, 09h52
  3. Recherche valeurs sur classeur excel et copie sur un autre classeur
    Par lila09 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/10/2011, 20h06
  4. copie d'1 feuille d'1 classeur vers nouveau classeur excel 2003
    Par samson_02 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/02/2009, 16h14
  5. Réponses: 1
    Dernier message: 29/05/2008, 17h10

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