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 :

erreur VBA 1004 sur enregistrer sous + choix du fichier type .xls


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut erreur VBA 1004 sur enregistrer sous + choix du fichier type .xls
    Bonjour,
    ca fait un jour et demi que je me suis mis au vba. et je bloque sur un code qui me fait une erreur 1004. Quand je lance le code un 1ere fois (Raccourcis clavier ou bouton) il passe sans problème et qd je je relance, relance … il me fait l'erreur 1004
    Pouvez vous me dire pourquoi et comment rectifier? + j'aimerai que la fenêtre de l'enregistre sous se mette automatiquement sur ".xsl" (le choix du chemin se faira pas l'utilisateur dans la fenêtre enregistrer sous)
    J'ai beau eu faire des recherches je n'ai pas trouvé en modifiant x fois mon code, les tests n'étaient pas concluants

    Nom : Capture.png
Affichages : 957
Taille : 13,4 Ko
    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 SAVE()
    '
    ' SAVE Macro
    '
    ' Touche de raccourci du clavier*: Option+Cmd+Maj+S
    '
        
        Sheets("Feuil2").Copy
        Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("K1").Value)
        Worksheets(1).Name = ThisWorkbook.ActiveSheet.Range("L1")   //voici la ligne qui est indiqué pour le bug
       Columns("K:L").Delete
        ActiveWorkbook.SAVE
        
    
    End Sub
    PS : quand le vba est lancée depuis la la fenêtre du module, le code à l'air de marcher tout le temps. pourquoi???

    Merci d'avance
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Une erreur à éviter est de nommer une macro de la même façon qu'un objet, une fonction ou une instruction.
    Je ne suis pas sûr que ce soit ça ton problème mais cette impression est quand même renforcée par le SAVE en majuscule à la suite de ton ActiveWorkbook.

    Essaye de renommer ta macro SAUVE, juste pour voir.

    Quand tu cliques sur Débogage après ton erreur, quelle ligne de code se met en surbrillance ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour Menhir,
    merci déjà pour votre réponse
    je ne connaissait pas cette règle sur la façon de nommer une macro.
    j'ai testé, et je n'ai plus du tout l'erreur,
    je vais aussi essayer avec la configuration de mon ordi chez moi pour confirmer.
    je pense que c'est quasi régler sur ce point, je verrai ça se soir.

    Concernant l'autre point :
    j'aimerai que la fenêtre de l'enregistrer sous se mette automatiquement sur ".xsl" (le choix du chemin se faira pas l'utilisateur dans la fenêtre enregistrer sous)
    de quel manière je pourrais modifier mon code afin d'avoir le résultat escompté?
    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 SAUVE()
    '
    ' SAVE Macro
    '
    ' Touche de raccourci du clavier*: Option+Cmd+Maj+S
    '
     
        Sheets("Feuil2").Copy
        Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("K1").Value)
        Worksheets(1).Name = ThisWorkbook.ActiveSheet.Range("L1")
       Columns("K:L").Delete
        ActiveWorkbook.SAVE
     
     
    End Sub
    PS : pour bien comprendre le code que j'ai écris le : "ActiveWorkbook.SAVE" se fait sur le classeur ou j'ai lancé ma macro ou sur le nouveau classeur de l'enregistrer sous? Pensez vous le code est bien optimisé (je suis novice)?

    Cordialement
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    PS : pour bien comprendre le code que j'ai écris le : "ActiveWorkbook.SAVE" se fait sur le classeur ou j'ai lancé ma macro ou sur le nouveau classeur de l'enregistrer sous?
    ActiveWorkbook est le classeur qui est sélectionné au moment où tu lances la macro.
    ThisWorkbook est le classeur qui contient la macro que tu lances.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Merci c'est plus clair
    je fais une MAJ de mon code pour le dernier point
    j'aimerai que la fenêtre de l'enregistrer sous se mette automatiquement sur ".xsl" (le choix du chemin se faira pas l'utilisateur dans la fenêtre enregistrer sous)
    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 SAUVE()
    ' Touche de raccourci du clavier*: Option+Cmd+Maj+S
     
        var_Nom = Range("P2")
     
        Sheets("Feuil2").Copy
        Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("O2").Value)
        Worksheets(1).Name = ThisWorkbook.ActiveSheet.Range("P2")
       Columns("K:P").Delete
       Sheets(var_Nom).Range("I2").Activate
       ActiveWindow.FreezePanes = True
       ActiveWorkbook.SAVE
     
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Avec un simple Save, tu n'auras pas d'ouverture de fenêtre pour te donner le choix de l'enregistrement. Ton fichier sera simplement sauvegardé sous son nom actuel.
    Si tu veux une boite de dialogue SaveAs, il faut d'abord faire un Application.GetSaveAsFilename pour récupérer un nom de fichier de l'utilisateur et le faire suivre d'un Workbook.SaveAs pour faire effectivement la sauvegarde.

    Regarde des deux objets dans l'aide VBA d'Excel pour avoir les détails de leur syntaxe et de leur utilisation.

    Personnellement, je trouve plus simple de terminer ma macro avec une MsgBox prévenant l'utilisateur que le résultat n'est pas sauvegardé et lui laisser le soin de le faire.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    j'aimerai que la fenêtre de l'enregistrer sous se mette automatiquement sur ".xsl" (le choix du chemin se faira pas l'utilisateur dans la fenêtre enregistrer sous)
    Tu peux utiliser les FileDialogFilters

    voici un exemple tiré de l'aide en ligne

    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
    Sub Main()
     
        'Declare a variable as a FileDialogFilters collection.
        Dim fdfs As FileDialogFilters
     
        'Declare a variable as a FileDialogFilter object.
        Dim fdf As FileDialogFilter
     
        'Set the FileDialogFilters collection variable to
        'the FileDialogFilters collection of the SaveAs dialog box.
        Set fdfs = Application.FileDialog(msoFileDialogSaveAs).Filters
     
        'Iterate through the description and extensions of each
        'default filter in the SaveAs dialog box.
        For Each fdf In fdfs
     
            'Display the description of filters that include
            'Microsoft Excel files.
            If InStr(1, fdf.Extensions, "xls", vbTextCompare) > 0 Then
                MsgBox "Description of filter: " & fdf.Description
            End If
        Next fdf
    End Sub
    tu dis si cela te conviens et n'hésites pas a si la réponse te satisfait

    a bientôt
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  8. #8
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Menhir, concernant la boîte de dialogue avec SaveAs je l'ai avec le nom qui se met automatiquement avec Range("O2") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("O2").Value)
    ce qui me manque c'est de forcé cette boîte de dialogue a se mettre sur le format ".xls"
    Nom : Capture.png
Affichages : 993
Taille : 70,3 Ko
    Igloobel, je vais prendre le temps de regarder le code car pour l'instant c'est du chinois pour moi (décrypter, tester, …)
    Dès que j'ai qq. chose je vous tient au courant.
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    concernant la boîte de dialogue avec SaveAs je l'ai avec le nom qui se met automatiquement avec Range("O2") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("O2").Value)
    C'est toi qui voit.

    D'un côté, tu as la méthode Dialog qui propose une trentaine de paramètres différents qui ne sont pas renseignés dans l'aide VBA Excel. Pour savoir ce que tu peux faire, il va sans doute falloir que tu tapes dedans au hasard.

    D'un autre côté, tu as la méthode GetSaveAsFilename avec 4 paramètres, tous les quatre renseignés clairement dans l'aide VBA, dont un paramètre de filtre et, derrière, la méthode SaveAs qui permet de garantir le format d'enregistrement du fichier.

    Personnellement, entre les deux, je n'hésiterai pas longtemps. Mais si tu préfères Dialog, utilise la.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Étant novice je ne voyais pas les subtilité du code de l'un ou de l'autre, je pensais qu'avec la partie que j'avais écris il y avait un moyen de forcer en ".xls"

    Je comprends mieux je vais m'y pencher

    dès que j ai réussi qq. chose je repost

    merci
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  11. #11
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,
    je reviens sur l'erreur 1004, j'ai pu vérifié chez moi et je l'avais tjs,
    Étant donné que j'avais pas fait toutes les mises à jour d'excel, j'ai fait la MAJ, et là je n'ai plus cette erreur, donc pbm réglé
    pour le reste je n'ai pas vraiment eu le temps de m'y pencher, je regarde tout cela et re-post
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  12. #12
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Je reviens vers vous.
    J'ai essayé de comprendre comment marché FileDialogFilters mais sans résultat.
    j'avoue avoir besoin d'un petit coup de pouce.
    help me please (bien sur je ne demande pas qu'on me donne toutes les solutions )
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  13. #13
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Que veux-tu savoir ?

    Qu'est-ce que tu as compris et pas compris ?
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  14. #14
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Le code ci-dessous si j'ai bien compris sert à modifier la boite de dialogue du SaveAs en l'occurence pour ce qui m'intéresse, donc
    - controle du nom
    - controle du type de fichier (pour moi xls)
    - controle du chemin
    - et autres option …(si j'ai bien compris)

    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
    Sub Main()
     
     'Declare a variable as a FileDialogFilters collection.
     Dim fdfs As FileDialogFilters
     
     'Declare a variable as a FileDialogFilter object.
     Dim fdf As FileDialogFilter
     
     'Set the FileDialogFilters collection variable to
     'the FileDialogFilters collection of the SaveAs dialog box.
     Set fdfs = Application.FileDialog(msoFileDialogSaveAs).Filters
     
     'Iterate through the description and extensions of each
     'default filter in the SaveAs dialog box.
     For Each fdf In fdfs
     
     'Display the description of filters that include
     'Microsoft Excel files.
     If InStr(1, fdf.Extensions, "xls", vbTextCompare) > 0 Then
     MsgBox "Description of filter: " & fdf.Description
     End If
     Next fdf
    End Sub
    je dois apparemment déclarer mes variables
    sauf que je ne vois pas très bien a quoi correspond et de quel manière l'utiliser :
    Dim fdfs As FileDialogFilters
    Dim fdf As FileDialogFilter
    fdf.Extensions
    vbTextCompare

    Je pense que je devrais avoir en plus dans le code :
    fdfs = xxxxxxxxxx
    fdf = xxxxxxxxxxx
    mais dans ce cas les xxxxxxxxx devraient correspondre à quel type de code??

    si je me réfère à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set fdfs = Application.FileDialog(msoFileDialogSaveAs).Filters
    alors fdfs devrait correspondre à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fdfs = Application.FileDialog(msoFileDialogSaveAs).Filters
    Non!!??
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  15. #15
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Voilà quelques explications

    Dim fdfs As FileDialogFilters : déclare fdfs en tant que collection des filtres disponible par défaut dans la boite FileDialog
    Dim fdf As FileDialogFilter : déclare un filtre de la boite FileDialog

    fdf.Extensions est l'extension du filtre

    vbTextCompare : comparaison en mode texte

    For Each fdf In fdfs : (boucle) pour chaque filtre dans la collection des filtres

    If InStr(1, fdf.Extensions, "xls", vbTextCompare) > 0 Then
    si on trouve dans la partie Extensions du Filtre "xls" alors

    __________________________________________________________________________________________________________


    Je pense que je devrais avoir en plus dans le code, mais dans ce cas les xxxxxxxxx devraient correspondre à quel type de code??
    fdfs = xxxxxxxxxx
    non surtout pas il faut garder la collection FileDialogFilters par defaut

    fdf = xxxxxxxxxxx
    Ben qd on a trouver le filtre il suffit de sauvegarder

    j'avoue j'ai très peu utiliser les FileDialog (msoFileDialogSaveAs)

    je regarderai en détail un peu plus ce soir

    J'espere que mes explications t'éclaire sur l'utilisation des FileDialogs

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  16. #16
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    OK je vous en remercie

    à force de chercher on trouve
    je suis tombé sur qq. chose qui est tout bête :http://www.mrexcel.com/forum/excel-q...file-type.html
    j'ai testé et ça marche.
    Mon nouveau 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
    16
    17
    18
    19
    20
    Sub SAUVETEST()
    '
    ' SAVE Macro
    '
    ' Touche de raccourci du clavier*: Option+Cmd+Maj+S
    '
        var_Nom = Range("P2")
     
        Sheets("Feuil2").Copy
     
        Worksheets(1).Name = ThisWorkbook.ActiveSheet.Range("P2")
        Columns("K:P").Delete
        Sheets(var_Nom).Range("I2").Activate
        ActiveWindow.FreezePanes = True
     
        Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("O2").Value), xlExcel8
     
        ActiveWorkbook.SAVE
     
    End Sub
    à la place de "xlExcel8", on peut mettre les numéro correspondant au format de fichier (ex : 51, 52, etc …)
    Ce lien peut en intéressé plus d'un je pense : https://msdn.microsoft.com/en-us/lib...code-snippet-1

    J'aimerai avoir vos avis avisés sur ce type de code et si ca tient la route sur Mac et PC et les différentes versions d'Excel.

    Par contre je suis tjs intéressé pour comprendre les 2 autres méthodes : "FileDialogFilters" et "Application.GetSaveAsFilename" et je besoin d'aide pour mieux les comprendre (ça fait que 2 jours et demi que je me suis mis au vba et a intermittence)

    je vous remercie d'avance
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  17. #17
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, pour le Mac voir ici

  18. #18
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Par contre je suis tjs intéressé pour comprendre les 2 autres méthodes : "FileDialogFilters" et "Application.GetSaveAsFilename" et je besoin d'aide pour mieux les comprendre
    Tu as pensé à regarder dans l'aide VBA d'Excel, tout simplement.
    GetSaveAsFilename y est expliqué en tant que membre de l'objet Application.

    Comme je l'ai déjà dit, cette méthode permet seulement à l'utilisateur d'indiquer comment il veut sauvegarder le fichier. Elle ne fait pas la sauvegarde elle-même. Pour que la sauvegarde soit réalisée, il faut le faire suivre d'un SaveAs sur l'objet Workbook.

    Petite remarque : je ne comprends pas pourquoi tu mets un Save après ta ligne Dialog.
    Cela dit, étant donné que ce "SAVE" est en majuscules, je suppose que le code que tu as écrit ne vient pas de l'éditeur VBA.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  19. #19
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je vais comme kiki citer la même personne : Ron de Bruin

    http://www.rondebruin.nl/mac/mac020.htm

    qui donne le code avec le format de sauvegarde pour PC et MAC

    A bientôt
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  20. #20
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Je vous remercie pour les liens

    Par contre vous ne m'avez pas donné votre avis concernant cette partie de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("O2").Value), xlExcel8
    L'écriture en tant que tel, est-elle correcte, y a-t-il des avantages ou inconvénients,…???

    C'est en cherchant des infos sur "FileDialogFilters" et "Application.GetSaveAsFilename" que je suis tombé sur un lien ou le code marqué m'a fait supposé que je pouvais faire cette écriture (en aucun cas je m'entête à écrire de cette façon si c'est pas une bonne solution )

    PS : pour info je viens de tester sur un PC avec une version récente d'Excel et ça marche; il ne me reste plus qu'à appréhender les 2 autres méthodes puisque je suis là pour apprendre. Par contre, "Application.GetSaveAsFilename" à l'air plus simple à comprendre que "FileDialogFilters".

    Igloobel as tu un peu plus de détails?
    je regarderai en détail un peu plus ce soir
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

Discussions similaires

  1. [XL-2007] erreur objet - 1004 sur un petit bout de code
    Par kl1ft dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/08/2011, 14h41
  2. Enregistre sous (choix d'un fichier)
    Par MarsOran dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 10/08/2009, 15h24
  3. [XL-2002] erreur execution 1004 sur methode paste
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/04/2009, 20h37
  4. Erreur de permission sur enregistrement de VI
    Par Stepho dans le forum LabVIEW
    Réponses: 2
    Dernier message: 02/03/2009, 13h18
  5. [VBA - Outlook] Fonction "Enregistrer sous"
    Par wanou44 dans le forum VBA Outlook
    Réponses: 21
    Dernier message: 12/02/2007, 16h41

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