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 :

Msgbox Pour enregistrer un fichier avec choix repertoire


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 19
    Points
    19
    Par défaut Msgbox Pour enregistrer un fichier avec choix repertoire
    Bonjour, débutant en VBA, je souhaiterai réaliser une Msbox au terme d'une Macro d'importation de données qui informerai l'utilisateur de l'heure et la date du moment et de choisir par oui/non d'enregistrer le fichier. Le choix si oui, serait de l'inviter à selectionner un périphérique externe (clé USB) et de mettre un nom de "base" comme fichier qu'il peut modifier également. Sur non, simplement que l'application Excel se ferme... Je ne sais vraiment pas trop comment m'y prendre, si quelqu'un pouvait me donner un coup de main ce serait vraiment cool...

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour,
    et en attendant ta macro tu veux un café?

    Non plus sérieusement je ne vais pas te la faire mais voici plusieur piste pour que tu puisse la faire tout seul, comme tu débute ca te donnera l'occasion de travailler sur des codes pour les comprendre

    Pour demander le répertoire ou écrire
    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
    Sub ChoixRepertoire()
    Dim chemin As String
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     Set objShell = CreateObject("Shell.Application")
     Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     On Error GoTo Gesterr
     
     Set oFolderItem = objFolder.Items.Item
     chemin = oFolderItem.Path
    nom=inputbox("Nom du fichier :")
    'la su peux faire un test pour savoir si l'utilisateur a mis un .xls ou non
    MsgBox chemin & "\" & nom & ".xls" 'a remplacé par l'enregistrement
     
    Gesterr::
    End Sub
    Pour ton message box avec bouton oui non
    http://fring.developpez.com/vba/excel/msgbox/

    Si tu ne comprend pas la macro ou le tuto n'hésite pas a poser des questions.

    Ensuite commence ta macro, test là en mode pas a pas avec espion et affichage des variables local et tout, si tu ne sais pas faire on t'indiquera les tutos.
    Et ensuite montre nous ta macro et les observations que tu as pus faire concernant ce qui ne fonctionne pas.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Tout d'abord, je n'ai pas eu le temps d'aller
    boire le café !!! --- mais j'aime bien


    Bon voilà mes essais...

    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
    Sub msgbox_enr()
    'Msgbox Oui + Non
    Select Case MsgBox("Enregistrer le fichier maintenant ?", vbYesNo + vbQuestion, "Sauvegarde du fichier")
    Case vbYes
    'procédure si click sur Oui
     
    Dim chemin As String
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     Set objShell = CreateObject("Shell.Application")
     Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire pour l'enregistrement du fichier", &H1&)
     On Error GoTo Gesterr
     
     Set oFolderItem = objFolder.Items.Item
     chemin = oFolderItem.Path
    nom = InputBox("Indiquer le nom du fichier :")
    'la su peux faire un test pour savoir si l'utilisateur a mis un .xls ou non
    MsgBox chemin & nom & ".xls" 'a remplacé par l'enregistrement
     
    Gesterr::
     
    Case vbNo
    'procédure si click sur Non
    CreateObject("Wscript.shell").Popup "Le fichier n'a pas été sauvegardé Excel va se fermer automatiquement dans 2 secondes... Bonne journée", 3, "Fermeture d'Excel", vbExclamation
    End Select
    End Sub
    Il ne me reste plus qu'à comprendre quelques languages de ce code, nottament comment faire pour la gestion des erreurs et surtout comment faire pour que le fichier s'enregistre

    Autrement pour ce qui est du bout de code que tu m'as donné, j'ai du supprimer un "\" dans la ligne:

    MsgBox chemin & "\" & nom & ".xls" 'a remplacé par l'enregistrement

    en effet, après il m'en rajoutait deux ???

    Encore une petite chose...

    Pour ce qui est du fichier, est-il possible de mettre un nom prédéfini
    qu'éventuellement l'utilisateur peut changer ???

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Quand tu donne un code utilise les balise regarde le premier message du forum il y a un lien pour t'expliquer, ensuite édite ton message pour les ajouter.
    Comment faire pour que le fichier s'enregistre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activeworkbook.saveas Nom
    Pour ce qui est du fichier, est-il possible de mettre un nom prédéfini
    qu'éventuellement l'utilisateur peut changer ???
    Oui c'est possible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nom="Bob"
    Select Case MsgBox("Le fichier va s'appeler Bob voulez vous le modifier ?", vbYesNo + vbQuestion, "Sauvegarde du fichier")
    Case vbYes
    nom=inputbox("Nom du fichier :")
    end select
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nom=inputbox("Nom du fichier :")
    if nom="" then 'nom est vide l'utilisateur a donc annulé
    nom="Bob "  & Date
    end if

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta patience, pour commencer... je vais essayer de rédiger un peu mieux mes messages...

    Alors j'ai ajouté ces lignes... toutes mes boites fonctionne sauf qu'au final, l'enregistrement se fait en "écrasant" le dernier fichier et pas où on choisi le répertoire

    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
    Dim chemin As String
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     Set objShell = CreateObject("Shell.Application")
     Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire pour l'enregistrement du fichier", &H1&)
     On Error GoTo Gesterr
     
     Set oFolderItem = objFolder.Items.Item
     chemin = oFolderItem.Path
    Nom = "Bob"
    Select Case MsgBox("Le fichier va s'appeler Bob voulez vous le modifier ?", vbYesNo + vbQuestion, "Sauvegarde du fichier")
    Case vbYes
    Nom = InputBox("Nom du fichier :")
    End Select
    'la su peux faire un test pour savoir si l'utilisateur a mis un .xls ou non
    MsgBox chemin & Nom & ".xls" 'a remplacé par l'enregistrement
     
    ActiveWorkbook.SaveAs Nom
    Y'a-t-il un tuto sur ce sujet (enregistrements de fichiers) pour pas que je ne
    te prenne tout ton temps ???

  6. #6
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Il faut peut être lui dire où tu veux enregistrer et pas te contenter de mettre le nom. Les codes donné sur se forum doivent être adapté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs chemin & Nom & ".xls"

  7. #7
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    MsgBox chemin & "\" & nom & ".xls" 'a remplacé par l'enregistrement

    en effet, après il m'en rajoutait deux ???
    En général pour pallier à ce problème je fais ça, dans l'exemple le chemin du repertoire s'appelle Repertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Right(Repertoire, 1) <> "\" Then
        Repertoire = Repertoire & "\"
    End If
    Un exemple de sauvegarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim nomEnr As String
    nomEnr = Repertoire & "Nomdufichier.xls"
    ThisWorkbook.SaveAs Filename:=nomEnr

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Merci aalex38, le nom du repertoire s'affiche maintenant correctement... toutefois, seul le répertoire que je crée lors de mon choix se fait... mais le
    fichier Excel ne s'enregistre toujours pas dedans

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub msgbox_enr()
    'Msgbox Oui + Non
    Select Case MsgBox("Enregistrer le fichier maintenant ?", vbYesNo + vbQuestion, "Sauvegarde du fichier")
    Case vbYes
    'procédure si click sur Oui
     
    Dim chemin As String
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     Set objShell = CreateObject("Shell.Application")
     Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire pour l'enregistrement du fichier", &H1&)
     On Error GoTo Gesterr
     
     Set oFolderItem = objFolder.Items.Item
     chemin = oFolderItem.Path
    Nom = "Bob"
    Select Case MsgBox("Le fichier va s'appeler Bob voulez vous le modifier ?", vbYesNo + vbQuestion, "Sauvegarde du fichier")
    Case vbYes
    Nom = InputBox("Nom du fichier :")
    End Select
     
    If Right(Repertoire, 1) <> "\" Then
        Repertoire = Repertoire & "\"
    End If
     
    'la su peux faire un test pour savoir si l'utilisateur a mis un .xls ou non
    MsgBox chemin & "\" & Nom & ".xls" 'a remplacé par l'enregistrement
     
    Dim nomEnr As String
    nomEnr = Repertoire & "Nomdufichier.xls"
    ThisWorkbook.SaveAs Filename:=nomEnr
     
    ActiveWorkbook.SaveAs chemin & Nom & ".xls"
     
     
    Gesterr::
     
    Case vbNo
    'procédure si click sur Non
    CreateObject("Wscript.shell").Popup "Le fichier n'a pas été sauvegardé Excel va se fermer automatiquement dans 2 secondes... Bonne journée", 3, "Fermeture d'Excel", vbExclamation
    End Select
    End Sub
    Ah la la... c'est pas faute d'essayer mais...

  9. #9
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Pas faute d'essayer mais faute de penser
    (désolé c'était facile, on a tous débuté)
    Regarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'la su peux faire un test pour savoir si l'utilisateur a mis un .xls ou non
    MsgBox chemin & "\" & Nom & ".xls" 'a remplacé par l'enregistrement
     
    Dim nomEnr As String
    nomEnr = Repertoire & "Nomdufichier.xls"
    ThisWorkbook.SaveAs Filename:=nomEnr
     
    ActiveWorkbook.SaveAs chemin & Nom & ".xls"
    tu utilise deux fois saveas
    et répertoire n'a aucune valeur dans le premier.

    il y a une différence entre activeworkbook (classeur actif) et this workbook classeur contenant la macro.

    Pour corriger tout ca garde juste un des enregistrement
    affiche les variables local menu Affichage/Variable local
    Lance ton code ne mode pas a pas (touche F8) et regarde la valeur de tes différente variable pour essayer de comprendre ce qui se passe.

    Edit : aalex_38 est quelqu'un de très bien et très compétent (sans doute plus que moi) mais il ne l'es pas suffisamment pour écrire exactement le code qu'il te suffit de copier coller. Comme tout code tu doit le lire le tester, le comprendre et l'adapter

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Merci vraiment pour cette aide... j'ai fait comme tu me l'a dit, soit affichage et déroulement du code avec la touche F8... supprimé la seconde ligne,
    dufait que je pense que d'enregistrer le code avec le fichier était mieux...

    Toutefois, toujours autant de déception pour moi, le répertoire se crée
    toujours, par contre, le fichier excel ne se copie pas ???

    A n'y rien comprendre tout cela ???

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub msgbox_enr()
    'Msgbox Oui + Non
    Select Case MsgBox("Enregistrer le fichier maintenant ?", vbYesNo + vbQuestion, "Sauvegarde du fichier")
    Case vbYes
    'procédure si click sur Oui
     
    Dim chemin As String
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     Set objShell = CreateObject("Shell.Application")
     Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire pour l'enregistrement du fichier", &H1&)
     On Error GoTo Gesterr
     
     Set oFolderItem = objFolder.Items.Item
     chemin = oFolderItem.Path
    Nom = "Bob"
    Select Case MsgBox("Le fichier va s'appeler Bob voulez vous le modifier ?", vbYesNo + vbQuestion, "Sauvegarde du fichier")
    Case vbYes
    Nom = InputBox("Nom du fichier :")
    End Select
     
    If Right(Repertoire, 1) <> "\" Then
        Repertoire = Repertoire & "\"
    End If
     
    'la su peux faire un test pour savoir si l'utilisateur a mis un .xls ou non
    MsgBox chemin & "\" & Nom & ".xls" 'a remplacé par l'enregistrement
     
    Dim nomEnr As String
    nomEnr = Repertoire & "Nomdufichier.xls"
    ThisWorkbook.SaveAs Filename:=nomEnr
     
    Gesterr::
     
    Case vbNo
    'procédure si click sur Non
    CreateObject("Wscript.shell").Popup "Le fichier n'a pas été sauvegardé Excel va se fermer automatiquement dans 2 secondes... Bonne journée", 3, "Fermeture d'Excel", vbExclamation
    End Select
    End Sub
    Pourtant, tout devrait bien se passer ???

    D'autre part, je souhaite une fois de plus à vous remercier pour votre aide
    qui m'est fort utile... je ne demande bien sûr pas un code "tout prêt", mais
    j'essaie de comprendre et je l'avoue... ce n'est pas facile...

  11. #11
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Affiche les variable local et regarde la valeur de chemin et de répertoire.
    Tu donne une valeur a chemin avec mon code et tu utilise repertoire dans le code d'aalex.....

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Là, je pense avoir compris (une infime partie)... mais pour ce
    code en tout cas... Enfin, c'est surtout grâce à vous... merci encore
    pour vos coups de mains...

    Une bonne journée

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/09/2011, 14h12
  2. Ou est enregistré le fichier avec SELECT OUTFILE ?
    Par weed dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/08/2006, 11h15
  3. Comment sauvegarder un fichier avec choix du repertoire
    Par vantoff dans le forum C++Builder
    Réponses: 14
    Dernier message: 24/07/2006, 15h51
  4. enregistrer un fichier avec l'icone que je precise
    Par Nadirov dans le forum Débuter
    Réponses: 5
    Dernier message: 23/04/2006, 17h04
  5. Commande pour analyser un fichier avec lex et yacc
    Par gRaNdLeMuRieN dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 13/09/2005, 19h12

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