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 un onglet excel sous un fichier du lecteur Z Avec un TITRE tiré des infomations de cet onglet


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Points : 35
    Points
    35
    Par défaut Enregistrer un onglet excel sous un fichier du lecteur Z Avec un TITRE tiré des infomations de cet onglet
    Bonjour!

    Avant tout un bref descriptif. J'essaye de faire une macro qui enregistre (en valeur) une vingtaine d'onglets sous un fichier du lecteur Z. Et j'ai réussi () voici mon code pour que l'onglet 1 s'enregistre (en valeur.. mais bon ça c'est pas important) dans un fichier du lecteur Z

    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
    Sub copiecollevaleur()
     
     copiecollevaleur Macro
     
        Sheets("confirm 1").Select
        Sheets("confirm 1").Copy
        Cells.Select
        Range("A4").Activate
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,     SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveWorkbook.SaveAs Filename:= _
            "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Avril 2012\20120416\Classeur8.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
    End Sub

    Le probleme (hey oui il y en a un ) c'est que j'aimerais bien que les 20 fichiers excels crée reprennent des informations contenus dans leurs onglets respectifs pour que les titres soient indicatifs.

    Ainsi j'ai 4 cellules avec des informations (breves dans chaqu'une des 4) dont j'aimerais me servir pour le titre et dans l'idéal j'aurais comme titre : info1_info2_info3_info4


    Et la je bug!!

    Quelqu'un sait t-il ou insérer ces informations dans mon code précedent pour que mon onglet 1 s'enregistre dans mon fichier avec un titre de type info1_info2_info3_info4?


    Merci

    Have a good day

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 240
    Points : 178
    Points
    178
    Par défaut
    bonjour,

    je n'ai pas vérifié ta macro donc j'espère que la base est bonne ^^

    tu peux faire ça

    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
    Sub copiecollevaleur()
     
     copiecollevaleur Macro
     
        Sheets("confirm 1").Select
        Sheets("confirm 1").Copy
        Cells.Select
        Range("A4").Activate
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,     SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
    NomFichier = Range("cell1") & "_" & Range("cell2") & "_" & Range("cell3") & "_" & Range("cell4") 'Biensur tu remplaces les cell 1, 2, 3 et 4 par les vrais emplacements ^^
        ActiveWorkbook.SaveAs Filename:= _
            "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Avril 2012\20120416\" & NomFichier & ".xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
    End Sub

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    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
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Lancement()
    Dim Ws As Worksheet
    Dim Chemin As String
     
    Application.ScreenUpdating = False
    Chemin = "C:\Documents and Settings\Administrateur\Bureau" ' à adapter
    'on enregistre tous les onglets du classeur
    For Each Ws In ThisWorkbook.Worksheets
        SauvegardeOnglet Chemin, Ws
    Next Ws
    End Sub
     
    Private Sub SauvegardeOnglet(ByVal Chemin As String, ByVal Sh As Worksheet)
    Dim Fichier As String
     
    If Dir(Chemin, vbDirectory) <> "" Then
        With Sh
            'nom du fichier composé du contenu des cellules A1,B1,C1 et D1
            Fichier = .Range("A1") & "_" & .Range("B1") & "_" & .Range("C1") & "_" & .Range("D1") & ".xls"
            .Copy
            With ActiveWorkbook
                With .Worksheets(1).UsedRange
                    .Value = .Value
                End With
                .SaveAs Chemin & "\" & Fichier, FileFormat:=xlNormal
                .Close
            End With
        End With
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Points : 35
    Points
    35
    Par défaut
    Merci de votre réponse a tout les deux j'approche de la solution je pense

    mais quand je recopie le code de Mercatog, adapté a mon ordi of course

    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
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Lancement()
    Dim Ws As Worksheet
    Dim Chemin As String
     
    Application.ScreenUpdating = False
    Chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Avril 2012\20120416"
    'on enregistre tous les onglets du classeur
    For Each Ws In ThisWorkbook.Worksheets
        SauvegardeOnglet Chemin, Ws
    Next Ws
    End Sub
     
    Private Sub SauvegardeOnglet(ByVal Chemin As String, ByVal Sh As Worksheet)
    Dim Fichier As String
     
    If Dir(Chemin, vbDirectory) <> "" Then
        With Sh
            'nom du fichier composé du contenu des cellules A1,B1,C1 et D1
            Fichier = .Range("H35") & "_" & .Range("H36") & "_" & .Range("H37") & "_" & .Range("38") & ".xls"
            .Copy
            With ActiveWorkbook
                With .Worksheets(1).UsedRange
                    .Value = .Value
                End With
                .SaveAs Chemin & "\" & Fichier, FileFormat:=xlNormal
                .Close
            End With
        End With
    End If
    End Sub

    Avec le woorksheet et le workbooks nécessaire actif, il me surligne qu'il y a une erreur ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = .Range("H35") & "_" & .Range("H36") & "_" & .Range("H37") & "_" & .Range("38") & ".xls"

    La méthode range de l'objet _Worksheet a échoué selon Microsoft Visual Basic!!!

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Points : 35
    Points
    35
    Par défaut
    A autant pour moi si ça fonctionne. Merci bcp a tous les deux!

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Points : 35
    Points
    35
    Par défaut
    Pas tout a fait résolu

    Il semblerait que dans ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = .Range("H35") & "_" & .Range("H36") & "_" & .Range("H37") & "_" & .Range("H38") & ".xls"

    Les Cellules (H35 ect ect) ne peuvent pas être des date??? (j'ai excel 2003)

    Bonne fin de journée

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Le fichier est sous tes yeux! regarde qu'as tu dans les cellules H35 à H38 de chaque feuille. Pourtant c'est toi qui voulait renommer ton fichier en concaténant les valeurs de ces 4 cellules.

    Aussi, attention aux caractères non permis pour renommer un fichier tels que : ? / [
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Points : 35
    Points
    35
    Par défaut
    Merci nickel. Tout fonctionne à la perfection Une derniere question cependant. Voici mon code qui enregistre l'onglet 1 de mon workbook dans un fichier excel.


    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
    Sub copiecollevaleur()
     
     
     
        Sheets("confirm 1").Select
        Sheets("confirm 1").Copy
        Cells.Select
        Range("A4").Activate
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
    NomFichier = Range("O7") & "_" & Range("O8") & "_" & Range("O12") & "_" & Range("O9") 'Biensur tu remplaces les cell 1, 2, 3 et 4 par les vrais emplacements ^^
        ActiveWorkbook.SaveAs Filename:= _
            "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Avril 2012\20120416\" & NomFichier & ".xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
    End Sub

    Si on regarde le chemin l'onglet s'enregistre finalement sous le fichier 20120416. J'ai crée un bouton sur chaque onglet où la macro à potentiellement des raisons d’être. En fait le nom de ce fichier (20120416) correspond a la date de la veille. Sauf le Lundi ou ça correspond au Vendredi!

    Tous les jours je crée un nouveau fichier (20120416 20120417 ect ect) et donc pour l'instant je suis obligé de changer le chemin dans ma macro tous les jours. J'aimerais savoir s'il existe un moyen de faire ça plus efficacement?

    J'espere avoir été compréhensible

    Merci encore j'ai dejà bien avancé!

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

Discussions similaires

  1. Ecraser un onglet Excel sous SAS
    Par Rdasson dans le forum ODS et reporting
    Réponses: 0
    Dernier message: 05/11/2012, 15h59
  2. [XL-2003] Enregistrer un onglet excel sous un fichier titré seulement avec la date du jour.
    Par Naoned005 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2012, 16h55
  3. Enregistrer un onglet excel sous un nouveau fichier tous les jours
    Par Naoned005 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/04/2012, 12h41
  4. recopie des donnees d'un onglet excel dans une feuille d'un autre fichier
    Par anaylane dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 06/05/2010, 16h12
  5. un macro qui enregistre un tableau excel sur un fichier word
    Par maherom dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/08/2009, 01h33

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