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 :

enregistrer une plage de cellules dans un autre fichier


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut enregistrer une plage de cellules dans un autre fichier
    Bonjour,
    Je souhaiterais enregistrer une plage définie d’un tableau via un bouton sur un répertoire prédéfini. Ex. Enregistrer par clic la plage (A1 :L34) dans le répertoire : C:\Documents and Settings\Administrateur\Mes documents\Mon classeur. Mais j'aimerais qu'à chaque fois qu'on cliquera sur le bouton alors la plage s'enregistrera dans un nouveau fichier excel avec comme nom: classeur_(suivi de la date en format anglais du jour de l'enregistrement).
    Merci.

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Voici un code qui devrait répondre à ton besoin, tu verras que j'ai modifier l'aspect de la date en AAAA-M-J pour faciliter la lecture dans ton dossier et pour assurer une sauvegarde plus facile.
    J'ai mis des commentaire pour que tu puisse comprende ce que le code fait.
    Mais, ce code tu aurais pu le trouver en utilisant l'enregistreur de macro, ce qui est un bon moyend de progresser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub ColleEtSauve()
    '
    Dim MaPlage As Range
     
    LaDate = Year(Date) & "-" & Month(Date) & "-" & Day(Date) 'Variable qui prend la date du jour format aaaa-m-j
    Set MaPlage = Range("A1:L34") 'Applique la plage voulue à la variable, changer le range pour changer la plage
     
        MaPlage.Copy 'Fait la copie de la zone voulue
        Workbooks.Add 'Ouvre un nouveau Fichier XL
        ActiveSheet.Paste 'Colle la sélection à copier sur la feuille active, donc la nouvelle
        'Fait la sauvegarde, la deuxième ligne en retrait reprend la variable avec la date
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Documents and Settings\Administrateur\Mes documents\" _
            & LaDate & ".xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    End Sub
    Bonne continuation
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci Fvandermeulen! Pas facile ton pseudo!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Bonjour la compagnie

    Voici une autre proposition (adapté du code VBA précédent)

    (ici ne copie que les valeurs seules
    pour une copie "pleine" , changer ceci
    With D_WKB.ActiveSheet
    .Paste
    With .UsedRange
    .Value = .Value
    End With
    End With
    en
    D_WKB.ActiveSheet.Paste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub ColleEtSauveII()
    Dim D_WKB As Workbook, Chemin As String, NFic As String
    Dim S_WKB As Workbook: Set S_WKB = ThisWorkbook
    Dim MaPlage As Range
    Set MaPlage = S_WKB.Worksheets(1).Range("A1:L34")
     
    Chemin = "C:\Documents and Settings\Administrateur\Mes documents\"
    NFic = "classeur_" & Format(Date, "yyyy-mm-dd") & ".xls"
    Application.ScreenUpdating = False
    MaPlage.Copy
    Set D_WKB = Workbooks.Add(xlWBATWorksheet)
    With D_WKB.ActiveSheet
        .Paste
            With .UsedRange
                .Value = .Value
            End With
    End With
    Application.CutCopyMode = False
    D_WKB.SaveAs Chemin & NFic
    D_WKB.Close True
    Application.ScreenUpdating = True
    End Sub
    A+

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

Discussions similaires

  1. Sauvegarde d'une plage de cellules dans un autre onglet
    Par LisaBell dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2015, 18h52
  2. Copier une plage de cellules dans un autre fichier
    Par Naoned005 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/04/2012, 17h02
  3. Copier une plage de cellule dans un autre fichier
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/04/2012, 21h31
  4. [XL-2007] Extraire des lignes en fonction d'une valeur de cellule dans un autre fichier
    Par MisterTambo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/08/2009, 10h42
  5. Comparaison cellules avec une plage de données dans un autre fichier
    Par Jibi64 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/08/2008, 16h22

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