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 :

[VBA-E] Macro pour tous fichiers Excel ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Points : 61
    Points
    61
    Par défaut [VBA-E] Macro pour tous fichiers Excel ?
    Bonjour,

    Je suis en train de réaliser une macro de mise en forme d'un classeur Excel, qui a partir d'une feuille Excel, recupère les données et les copie dans un nouveau classeur à l'image d'un model.xls.
    Je voudrai savoir comment faire pour détacher le code réalisant la mise en forme afin que je puisse executer la macro sur n'importe quel nouveau classeur sans avoir a faire un copier/coller de mon code.
    PS : ma macro contient également un formulaire

  2. #2
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    je sais pas si ma réponse est totalement exacte mais tu met ton code dans le fichier Normal.dot qui est le modèle par défaut d'un nouveau fichier

    Le modèle est dans le dossier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\repié\Application Data\Microsoft\Templates
    Pti Pié

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    J'écrirai la macro dans le fichier Perso :
    C:\Documents and Settings\NomUtilisateur\Application Data\Microsoft\Excel\XLSTART\PERSO.xls

    Ensuite je créerai un bouton (manuellement) dans Excel et je lui affecterai la macro en question.
    A chaque ouverture d4excel ce bouton sera visible et la macro sera dispo.

  4. #4
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    et ton problème est-t-il résolu avec PERSO.xls?
    Pti Pié

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    La solution proposé par jveudvacances focntionne dans la mesure où cette methode modifie le modèle d'un nouveau classeur excel. Mais ma macro reste accessible pour un classeur enregistré.
    Pour ma part je ne cherche pas à changer le modele d'un nouveau classeur excel mais juste à rajouté une macro au programme excel.
    Quand à ta solution repié je suis actuellement sur mon poste de travail et je n'ai pas les droits pour pouvoir essayer, je test ce soir.
    Merci.

  6. #6
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    une macro est intégrée à un classeur et non à l'application.

    Donc si tu veux qu'elle soit valable pour touts tes classeur, tu doit passer par normal.dot ou Perso.xls (je ne sais pas ce qui vaut le mieux pour toi)
    Tu retombe donc un peu sur tes pattes là
    Pti Pié

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Ok donc tu cherche à copier le code de ta macro de mise en forme dans un classeur quelconque ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Copier le code d'un classeru vers un autre
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
     
    Dim sFileName As String
    Dim sCode As String
    Dim xlwks1 As Excel.Worksheet
    Dim xlwkbSrc As Excel.Workbook
    Dim xlwkbDest As Excel.Workbooks
     
     
     
    Dim sModName As String
    Dim sPath As String
    Dim sExt As String
    Dim i, j, k As Integer
     
    Dim iCompt As Integer
     
     
    Application.EnableEvents = False
    Set xlwkbDest = Workbooks("ClasseurDeDestination.xls")
    Set xlwkbSrc = Workbooks("ClasseurSource_macro.xls")
     
     
    sPath = xlwkbDest.Path
     
    'pour tt les composants du classeur Src
    'on va les exporter puis les impmorter dans Dest sauf si se sont des feuilles
    'dans ce cas on copiera uniquement le code
     
    For Each objComp In xlwkbSrc.VBProject.VBComponents
        sModName = objComp.Name
        Select Case objComp.Type
          Case vbext_ct_StdModule: sExt = ".Bas"
          Case vbext_ct_ClassModule: sExt = ".Cls"
          Case vbext_ct_MSForm: sExt = ".Frm"
        End Select
     
        sFileName = sPath & "\" & sModName & sExt
        If Len(Dir$(sFileName)) > 0 Then
          Kill sFileName
        End If
     
        'avec le fichier dest
        With xlwkbDest.VBProject
            If LCase(objComp.Name) = "thisworkbook" Then
     
                'copier le code contenu dans this worbook
                i = objComp.CodeModule.CountOfLines
                's'il y a du code alors on le copie
                If i > 0 Then
                    sCode = objComp.CodeModule.Lines(1, i)
                    .VBComponents(1).CodeModule.AddFromString (sCode)
                End If
     
            ElseIf objComp.Type = 100 Then
     
                'copier le code contenu dans les feuilles
     
                i = objComp.CodeModule.CountOfLines
                If i > 0 Then
                    sCode = objComp.CodeModule.Lines(1, i)
                    .VBComponents(objComp.Name).CodeModule.AddFromString (sCode)
                End If
     
     
            Else
     
                'exporter le module de src
                'importer le module
                'puis le détruire
                objComp.Export Filename:=sFileName
                xlwkbDest.VBProject.VBComponents.Import (sFileName)
                Kill sFileName
            End If
        End With
    Next

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Oki très bien merci pour ses précisions. Je pense que je vais modifier le fichier normal.dot.

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

Discussions similaires

  1. Macro pour tout fichier Excel
    Par ch7787 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/06/2010, 17h20
  2. [XL-2003] Créer une macro pour plusieurs fichiers excel
    Par bocki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 22h53
  3. Réponses: 8
    Dernier message: 10/02/2007, 02h44
  4. [VBA-E] Macro pour convertir un fichier texte en excel
    Par Nicolas67 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/05/2006, 14h47
  5. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/2006, 16h20

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