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 :

Définition du type de fichier lors de la sauvegarde par macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut Définition du type de fichier lors de la sauvegarde par macro
    Bonjour!

    J'ai un fichier qui a été créé en XL-2003 qui sera sous peu utiliser en XL-2007. J'ai testé mes macros à l'avance sur un poste test (puisque ce fichier est utilisé par plusieurs utilisateurs) et j'ai relevé un problème.
    J'ai un bouton qui contien la macro suivante qui a pour but de copier une feuille dans un nouveau classeur, enregistrer le nouveau classeur puis le fermer pour revenir au classeur d'origine :
    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
    Private Sub CommandButton1_Click()
    Dim NoPost As String, VariableNom As String
    Dim FileD As FileDialog
    Set wrk = Application.Workbooks.Add(1)
     
    ThisWorkbook.Sheets("Rapport PostMortem").Copy Before:=wrk.Sheets(1)
    Application.DisplayAlerts = False
    wrk.Sheets("Feuil1").Delete
    Application.DisplayAlerts = True
     
    NoPost = ThisWorkbook.Sheets("Rapport PostMortem").Range("C3").Value
    VariableNom = "Rapport PostMortem no " & NoPost
     
    Set FileD = Application.FileDialog(msoFileDialogFolderPicker)
    If FileD.Show = True Then
        wrk.SaveAs Filename:=FileD.SelectedItems(1) & "\" & VariableNom
    End If
    wrk.Close
    End Sub
    Mon problème est qu'en XL-2007, il y a plusieurs type de fichier XL dont un format avec macro et un format sans macro. Comme la feuille qui est copiée dans le nouveau classeur contient des boutons (donc des macros), lorsque j'enregistre XL me donne l'erreur placée en pièce jointe.

    Y a-t-il un moyen dans mon code de définir le format de fichier "Excel sans macro" qui serait en fait l'équivalent de cliquer sur le bouton "Oui" à ma fenêtre d'erreur tout en restant transparent pour l'utilisateur?

    Un gros merci à l'avance!
    Geneviève
    Images attachées Images attachées  

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Oui mais...
    Oui, utilise l'enregistreur de macro sous 2007. On obtient ceci auquel il faut ajouter la suppression des alertes (boite de dialogue) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
            "C:\Documents and Settings\Admin\Bureau\essa.xlsx", FileFormat:= _
            xlOpenXMLWorkbook, CreateBackup:=False
    Application.DisplayAlerts = True
    Mais, il reste le problème que les boutons seront visibles et provoqueront une erreur si l'on clique dessus. Il faut les supprimer par macro. N'y a-t-il que des boutons à supprimer ?

    A voir.

    ESVBA

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut une idée
    bonjour

    l'extention xls ----->>>>>excel 2000 a 2003

    l'extention xlsx c'est pour les classeur sans macro de excel 2007

    l'extention xlsm et xltm pour les classeur avec macro de excel 2007

    cependant l'extention xls accepte les macros
    donc je ne comprend pas tres bien ton probleme

    cela di dans ton code que tu a cite tu copy simplement un feuillet et non pas le classeur complet donc le classeur obtenue n'a pas de userform ou macro
    donc la encore je ne comprend pas ton problem
    puisque le classeur n'a pas de macro a quoi ca sert de l'enregistrer au format avec macro

    voila maintenant si le classeur obtenu doit aussi posseder l'userform que tu utilise tu dois soit exporter le projet ou simplement sauver le classeur d'origine sous un autre nom et suprimer le cas echeant ce que tu veux dans le nouveau classeur

    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    patricktoulon,

    Si tu regarde mon message d'origine, tu trouveras l'explication suivantes:
    Comme la feuille qui est copiée dans le nouveau classeur contient des boutons (donc des macros), lorsque j'enregistre XL me donne l'erreur placée en pièce jointe.
    Tu m'indique que
    l'extention xls accepte les macros
    ce que je sais. Je veux totuefois enregistrer mon fichier en format 2007 donc .xlsx

    ESVBA,
    Merci de ton aide, comme je n'ai pas encore 2007 à portée de main, il m'est difficile de faire des test avec l'enregistreur! Je testerai avec 2007 ta solution dès que possible!
    Pour les boutons, oui il y en a seulement 2, mais encore là je fige... comme les boutons sont maintenant dans un nouveau classeur, j'ai de la difficulter à aller les supprimer...


    Merci beaucoup de ton aide!
    Geneviève

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Une idée...
    La question est : où est le code des boutons ?
    • Dans la feuille contenant les boutons
    • Dans un module externe
    • Dans "ThisWorkbook"


    Il n'y a pas à ma conaissance de problème pour supprimer les boutons sur un autre classeur :
    1) j'ouvre le nouveau classeur
    2) je copie la feuille avec les boutons
    3) je supprime les boutons en donnant les références sur le nouveau classeur
    4) je ferme le nouveau classeur avec sa feuille.
    5) Je me retrouve avec mon modèle de feuille.

    http://excel.developpez.com/faq/inde...ouveauClasseur
    http://excel.developpez.com/faq/inde...eObjFormulaire

    ESVBA

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Par défaut
    Salut,
    en ce qui concerne ton problème d'enregistrement (SAVE AS) c'est tout à fait normal sous XL 2007.
    Tu dois absolument préciser le format.
    voici la liste de ceux que je connais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    '            Case "xls": FileFormatValue = 56
    '            Case "xlsx": FileFormatValue = 51
    '            Case "xlsm": FileFormatValue = 52
    '            Case "xlsb": FileFormatValue = 50
    et ca donne donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(sWk).SaveAs Left(File, Len(File) - 3) & "xlsx", 51
    Pour les boutons ca se déclare sur la feuille

    Donc ca donne quelque chose comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(sWk).Sheets(i).CommandButton.Visible=False
    Le souci c'est qu'il n'y a pas de méthode Delete pour les CommandButton
    Il faut donc ruser un peu. Voici comment faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim oOLE As OLEObject
    For Each oOLE In ThisWorkbook.Sheets(i).OLEObjects
        If TypeName(oOLE.Object) = "CommandButton" Then
            oOLE.Delete
        End If
    Next
    J'espère t'avoir aider un peu

Discussions similaires

  1. Inscription automatique du nom du fichier lors de la sauvegarde
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/07/2010, 09h31
  2. Probleme inversion jour et mois lors d'une copie par macro
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/09/2008, 15h29
  3. Formulaire bloqué lors d'une ouverture par macro.
    Par Monsieur Peck dans le forum IHM
    Réponses: 6
    Dernier message: 16/06/2006, 17h41
  4. Réponses: 10
    Dernier message: 18/11/2003, 18h01
  5. Bloquer le téléchargement de certains types de fichiers
    Par Nikos dans le forum Développement
    Réponses: 4
    Dernier message: 23/12/2002, 20h54

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