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 :

Enregistrement d'une macro dans la bibliothèque personnelle ou en complément excel [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut Enregistrement d'une macro dans la bibliothèque personnelle ou en complément excel
    Bonjour,

    avant toute chose je voudrais préciser que je ne sais pas coder en vba, je fais un peu de sql, donc si vous savez répondre à ma question, merci d'être très explicite

    J'ai un onglet d'un fichier excel que je voudrais enregistrer en .csv. Sur cet onglet, il y a un filtre qui vient cacher certaines lignes. Si je fais directement "enregistrer sous", le csv prend toutes les lignes de l'onglet, y compris celles cachées par le filtre, ce que je ne veux pas. D'où j'ai pensé qu'il me fallait une macro pour mon enregistrement.
    J'ai trouvé sur un autre forum la macro suivante :
    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
    Option Explicit
    Public Sub Export_CSV()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim strInitialFilename As String
    Dim rng As Range
    Dim myFile
     
        Application.ScreenUpdating = False
     
        Set wb = ThisWorkbook
        Set ws = wb.ActiveSheet
        strInitialFilename = ws.Name & Format(Now, "ddmmyy hhmm")
        Set rng = ws.Cells(1, 1).SpecialCells(xlCellTypeVisible)
     
        If rng.Address = "$A$1" Then
            ws.Cells(1, 1).CurrentRegion.Copy
        Else
            rng.Copy
        End If
     
        Workbooks.Add (xlWBATWorksheet)
        Worksheets(1).Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats
        Application.CutCopyMode = 0
     
        myFile = Application.GetSaveAsFilename _
                 (InitialFileName:=strInitialFilename, _
                  filefilter:="Fichiers csv (*.csv),*.csv", _
                  Title:="Enregistrer fichier csv")
     
        If myFile = False Then
            ActiveWorkbook.Close False
            Exit Sub
        End If
     
        ActiveWorkbook.SaveAs myFile
     
        Set rng = Nothing: Set ws = Nothing: Set wb = Nothing
     
    End Sub
    Elle fonctionne très bien, tant qu'elle est enregistrée dans le classeur. Or je voudrais pouvoir y avoir accès à partir de n'importe quel classeur.
    J'ai essayé de l'enregistrer dans personal.xlsb, mais quand je la lance depuis la bibliothèque, le fichier csv obtenu est vide.
    J'ai essayé de l'enregistrer en complément excel export_csv.xlam et là j'ai une erreur de compilation, la 91, sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     strInitialFilename = ws.Name & Format(Now, "ddmmyy hhmm")
    Quelqu'un aurait-il une idée pour résoudre ce problème car je voudrais ensuite pouvoir copier la macro sur d'autres postes de travail ?

    Merci beaucoup !

  2. #2
    Expert éminent 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
    Par défaut
    C'est sans doute dû à cette ligne.
    ThisWorkbook représente le classeur dans lequel est enregistrée la macro.
    Tu pourrais remplacer cet objet par ActiveWorkbook qui représente le classeur actif.
    L'instruction étant placée en début de macro, elle désignera la classeur actif au moment du lancement de la macro.

    https://msdn.microsoft.com/library/0...ice.15%29.aspx
    https://msdn.microsoft.com/library/6...ice.15%29.aspx

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut Merci !
    c'était bien ça !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/08/2015, 16h33
  2. [OL-2003] Enregistrer une Macro dans Outlook 2003 (demande de modèle)
    Par BtjpsspgrW dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 24/02/2014, 11h09
  3. Enregistrer une macro dans une autre librairie que la WORK
    Par the_programmer dans le forum Macro
    Réponses: 1
    Dernier message: 07/03/2013, 14h17
  4. [OpenOffice][Tableur] Enregistrer une macro dans un document
    Par Lamy D dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 17/10/2011, 11h04
  5. Réponses: 9
    Dernier message: 25/01/2006, 15h35

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