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 :

Message automatique enregistrer lors de la fermeture


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut Message automatique enregistrer lors de la fermeture
    Bonjour voilà j'ai crée une macro qui me permet de copier le contenu d'une feuille dans mon classeur et de le copier dans une feuille d'un classeur créé grâce à cette macro également! Voici le code:

    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
    Sub Bouton1034_QuandClic()
     
        Dim x, fichier, dir As String
     
        Range("C2").Select
        x = ActiveCell.Text
        Sheets("MENSUELLE").Select
        Sheets("MENSUELLE").Copy
        dir = "C:\Documents and Settings\bdu\Bureau\DTO\"
        fichier = dir & "Mensuelle de " & x & ".xls"
        ActiveWorkbook.SaveCopyAs fichier
        ActiveWorkbook.Close
        Sheets("Index").Select
     
    End Sub
    Le soucis c'est que lors du traitement il me fait tout correctement sauf que lorsqu'il ferme le classeur temporaire nommé classeur1 il me demande si je veux enregistrer le fichier ou non et donc elle ne se ferme pas toute seule comme je le souhaiterai!
    Quelqu'un pourrait il m'aider s'il vous plait!?
    Merci d'avance pour vos réponses!

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    bonjour je n'ai pas regardé ta macro mais si tu dis qu'elle fonctionne
    alors

    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
    Sub Bouton1034_QuandClic()
     application.displayalerts=false
        Dim x, fichier, dir As String
     
        Range("C2").Select
        x = ActiveCell.Text
        Sheets("MENSUELLE").Select
        Sheets("MENSUELLE").Copy
        dir = "C:\Documents and Settings\bdu\Bureau\DTO\"
        fichier = dir & "Mensuelle de " & x & ".xls"
        ActiveWorkbook.SaveCopyAs fichier
        ActiveWorkbook.Close
        Sheets("Index").Select
     
    End Sub

    au plaisir

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Merci beaucoup c'est tout juste ce qu'il me fallait :p
    Bonne journée

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut sauvegarde
    As tu essayé avec la commande SaveAs ?

    J'avais eu le même problème où j'avais du sauver sous un autre nom, puis utiliser la commande kill et resauver sous le nom d'origine.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Bien avec la première réponse cela fonctionne nikel encore merci !

    Par contre j'ai encore un petit souci c'est que j'utilise 2 macros identiques en ayant juste modifier les noms de variables et le nom de feuille mais la deuxième ne fonctionne pas je ne comprend pas pourquoi!!!!

    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
    Sub Bouton1034_QuandClic()
        Application.DisplayAlerts = False
        Dim x, fichier, dir As String
     
        Range("C2").Select
        x = ActiveCell.Text
        Sheets("MENSUELLE").Select
        Sheets("MENSUELLE").Copy
        dir = "C:\Documents and Settings\bdu\Bureau\DTO\"
        fichier = dir & "Mensuelle de " & x & ".xls"
        ActiveWorkbook.SaveCopyAs fichier
        ActiveWorkbook.Close
        Sheets("Index").Select
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Bouton1035_QuandClic()
        Application.DisplayAlerts = False
        Dim y, fic_mat, dir_mat As String
        
        Range("C2").Select
        y = ActiveCell.Text
        Sheets("MAT1017").Select    Sheets("MAT1017").Copy
        dir_mat = "C:\Documents and Settings\bdu\Bureau\DTO\"
        fic_mat = dir_mat & "MAT1017 de " & y & ".xls"
        ActiveWorkbook.SaveCopyAs fic_mat
        ActiveWorkbook.Close
        Sheets("Index").Select
        
    End Sub
    Pouvez vous m'aider? L'erreur semble t il se trouverait là ou je l'ai mis en gras!
    Merci

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    difficile de répondre à ta question sans corriger tes autres problèmes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim x, fichier, dir As String
    avec cette ligne , seule la variable "dir" est déclaré en String les autres sont déclarées en variant ! il faut répéter le mot clef String pour chacune des variables!
    http://bbil.developpez.com/tutoriel/...iables#LXIII-B

    en parlant de mot clef , Dir en est un, et il ne faut pas l'utiliser comme nom de variable, à remplacer par stDir par exemple ! (bon elle n'est pas utilisée dans ton code cette variable ..)

    Les instructions(propriétés, méthodes ..) : "Select", "Selection", "ActiveWorkbook",ActiveCell ... sont à proscrire car source d'erreurs ou de comportement aléatoire...


    pourrai-tu nous dire le but de ton code et l'organisation de tes classeurs ? ( combien de classeur :
    - le classeur qui contient ton code,
    - le classeur qui contient la feuille "Mensuelle"
    - le classeur 1
    - le classeur qui contient la feuille Index ...

    [Edit]j'ai trainé dans la rédaction et j'ai raté quelques messages .....

    mais tu as mal copié ton code il manque un retour de ligne ... entre ton select et ton copy ... cependant je ne vois pas l'utilité de ces deux lignes et tu peu carrément les supprimer dans tes deux codes ..

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut instructions
    Salut BBIL !

    Lorsque tu dis que l'instruction SELECT à un résultat aléatoire, est-ce que SELECT CASE en fait aussi partie ?


  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Merci beaucoup pour toutes ces infos je débute j'apprend sur le tas donc je fais pas mal d'erreurs!

    Donc en fait on premier classeur est constitué de 6 feuilles.
    La 1ère est l'index ou je choisis une date dans une liste déroulante dans la cellule C2 et en dessous il y a 3 boutons de macro!
    La deuxième est ma base de donnée ou tous mes matériaux sont référencés
    La troisième est ma DTO Disponibilité Technique Opérationnelle avec des organigrammes etc
    Ma quatrième est une lettre type préremplie
    MA cinquième est une page qui se met à jour grâce à ma première macro de la feuille index! En fait c'est une feuille mensuelle. Dans ma base de donnée il y a un champ date et lorsque je sélectionne ma date dans Index!C2 et que je clique sur mon premier bouton de macro la feuille MENSUELLE se crée toute seule!
    Et dans ma sixième se trouve mes différentes listes!

    En fait lorsque j'exécute ma deuxième macro sur l'index cela me crée un nouveau classeur avec pour nom "Mensuelle de " et la date sélectionné dans Index!C2 et elle me copie la feuille MENSUELLE de mon premier classeur!
    Cela fonctionne
    Mais lorsque je clique sur l'autre macro (la 3ème) qui est identique juste j'ai changé les variable et le nom de la feuille à copier et là cela ne fonctionne pas!!
    Merci beaucoup de votre aide

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Salut BBIL !

    Lorsque tu dis que l'instruction SELECT à un résultat aléatoire, est-ce que SELECT CASE en fait aussi partie ?

    non je parle des instructions qui permettent de manipuler le curseur ou la vue vue affichée à l'écran .. , le select d'une cellule, une plage ou une feuille, on est à la merci par exemple d'un utilisateur qui clique "ailleurs" avec la souris durant le déroulement de la macro ...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par bbil Voir le message
    ... cependant je ne vois pas l'utilité de ces deux lignes et tu peu carrément les supprimer dans tes deux codes ..
    Bien en fait ces deux lignes me servent à sélectionner la feuille en question que je souhaite copier! Si je ne les met pas il me copie l'intégralité de mon classeur or je ne souhaite avoir que le feuille MENSUELLE et pour la deuxième macro MAT1017!

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    rebonjour

    essai pluto ca

    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
    Sub Bouton1035_QuandClic()
        Application.DisplayAlerts = False
        Dim y As String, fic_mat As String, chemin As String
        chemin = "C:\Documents and Settings\bdu\Bureau\DTO\"
        y = Range("C2").Value    ' ici moi a ta place je préciserais le nom du sheets
        Sheets("MAT1017").Copy    ' on copie le sheets
        fic_mat = chemin & "MAT1017 de " & y & ".xls"    'on construit le nom
     
        'on le sauve au format "xls"
        ActiveWorkbook.SaveAs Filename:=fic_mat, _
                              FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
                              ReadOnlyRecommended:=False, CreateBackup:=False
        ActiveWorkbook.Close    'on ferme le classeur obtenue
        Sheets("index").Select    'on selectionne le sheets ("select")
    End Sub

    au plaisir

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Merci patrick. J'ai essayé ton code malheureusement cela ne fonctionne pas! J'ai supprimé mes deux macro en essayant de la refaire au propre avec ton exemple mais cela ne marche pas!
    Voici le code:

    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
    Sub Bouton1034_QuandClic()
        Application.DisplayAlerts = False
        Dim x As String, fichier As String, chemin As String
        
        chemin = "C:\Documents and Settings\bdu\Bureau\DTO\"
        x = Sheets("Index").Range("C2").Value
        Sheets("MENSUELLE").Copy  'on copie le sheets
        fichier = chemin & "MENSUELLE de " & x & ".xls"      'on construit le nom
        
        'on le sauve au format "xls"
        ActiveWorkbook.SaveAs Filename:=fichier, _
                              FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
                              ReadOnlyRecommended:=False, CreateBackup:=False    ActiveWorkbook.Close      'On ferme le classeur obtenue
        Sheets("Index").Select    'On sélectionne le sheets ("select")
    End Sub
    L'erreur se trouve là ou c'est en gras appriori ligne 13!
    Merci de votre aide.

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    !! Encore un mauvais copier/coller !! il te manque un retour chariot .. !

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    puré de zut

    il faudrait un plugins copier coller pour les débutant


    au plaisir

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par biddal Voir le message
    'on le sauve au format "xls"
    ActiveWorkbook.SaveAs Filename:=fichier, _
    FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False

    ActiveWorkbook.Close 'On ferme le classeur obtenue
    Sheets("Index").Select 'On sélectionne le sheets ("select")
    End Sub[/code]

    L'erreur se trouve là ou c'est en gras appriori ligne 13!
    Merci de votre aide.
    Comment ça un retour chariot? C'est juste lorsque j'ai collé en fait que les deux lignes se sont retrouvées sur la même sur ce que j'ai mis en citation!

    Merci pour le temps que vous m'accordez!

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    pour ne plus avoir de doute

    supprime les grand tiret et met tout sur la meme ligne


    au plaisir

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Voilà j'ai fait ce que tu as dis!! J'ai tout mis sur la même ligne!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'on le sauve au format "xls"
        ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
        ActiveWorkbook.Close      'On ferme le classeur obtenue
    Mais cela ne fonctionne toujours pas! Il faudrait un plugin Vérifier son code pour expert :p

    Excusez moi encore d'être à l'Ouest lol

  18. #18
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    on sait toujours pas ce qui ne fonctionne pas ..!


    tiens .. j'avais écris cela, mais j'ai pas eu le temps de poster :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Bouton1034_QuandClic()
        Dim wb As Workbook
        Dim x As String, fichier As String, stdir As String
        x = ThisWorkbook.Sheets("Index").Range("C2").Text
        ThisWorkbook.Sheets("MENSUELLE").Copy
        Set wb = ActiveWorkbook ' L'un des seuls cas ou je m'autorise l'utilisation d'ActiveWorkbook
        stdir = "C:\Documents and Settings\bdu\Bureau\DTO\"
        fichier = stdir & "Mensuelle de " & x & ".xls"
        wb.SaveAs fichier
        wb.Close
    End Sub

  19. #19
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    rebonjour bill

    non on ne sais toujours pas

    a ce plugins manque vraiment

    par contre je n'utilise pas ta dernière version car moi je travaille avec 2007

    et quand j'ouvre le fichier obtenue avec ta solution j'ai un message qui me dis que le format n'est pas adéquat avec ou ou non ou annuler

    si je dis oui il l'ouvre

    après tout dépend sur quel version excel on travaille

    je n'est jamais eu de retour avec ma version sur excel 2003

    puisque je suppose que ça n'est pas la peine de préciser le format excel8 avec 2003 puisque c'est sa limite enfin je suppose


    au plaisir

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Bien le bonjour tous les deux!

    Bbil j'ai essayé ton code! Il fonctionne nikel comme celui que j'avais avant mais il est beaucoup plus simple que le miens je te remercie! Cependant ma deuxième macro ne fonctionne toujours pas!
    Je m'explique:
    J'ai mes deux boutons l'un en dessous de l'autre sur la page index!
    Un pour exporter ma feuille MENSUELLE (celle-ci fonctionne) et l'autre pour exporter ma feuille nommée dat1231 (je l'ai renommée) et celle-ci ne fonctionne pas or elles font la même chose ! Le code que j'ai mis aux deux est identique seuls les variables changent et le nom de la feuille à copier!

    Le code de ses deux macro se trouve dans le même module! Je ne pense pas que cela pose problème? Mais je préfére vous le demander!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Bouton1035_QuandClic()
        
        Dim wb1 As Workbook
        Dim x1 As String, fichier1 As String, stdir1 As String
        x1 = ThisWorkbook.Sheets("Index").Range("C2").Text
        ThisWorkbook.Sheets("MAT1017").Copy    
    Set wb1 = ActiveWorkbook ' L'un des seuls cas ou je m'autorise l'utilisation d'ActiveWorkbook
        stdir1 = "C:\Documents and Settings\bdu\Bureau\DTO\"
        fichier1 = stdir1 & "Mensuelle de " & x1 & ".xls"
        wb.SaveAs fichier
        wb.Close
    End Sub
    Voilà je vous ai mis le code de la deuxième macro peut être vous trouverez ce qui cloche dans l'éditeur il me met la ligne en jaune avec la fléche à côté! Ne serais ce pas un problème à cause du nom de la feuille qui comporte de lettres et des chiffres? Je ne pense pas mais bon je ne comprend pas ce qui cloche là!
    Merci beaucoup de votre aide.
    Bonne journée!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2003] La même valeur pour tous les enregistrements lors de la fermeture d'un formulaire
    Par toutoune95800 dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/04/2012, 14h21
  2. Message d'erreur lors de la fermeture
    Par vg-matrix dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/11/2008, 18h50
  3. message d'erreur lors d'un enregistrement
    Par Skizo dans le forum Access
    Réponses: 2
    Dernier message: 30/05/2006, 09h09
  4. Réponses: 14
    Dernier message: 04/05/2006, 07h40
  5. Compactage automatique en lors de la fermeture?
    Par Ditch dans le forum Access
    Réponses: 2
    Dernier message: 05/12/2005, 10h00

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