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 :

Copie de modules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Par défaut Copie de modules
    Salut, j'ai un soucis pour copier des modules...

    Dans mon programme principal je fais appel à un module afin de copier 11 modules dans un autre fichier excel déjà ouvert...

    En local tout fonctionne, mais en réseau, lorsque mes fichiers sont sur un long chemin... J'ai un message d'erreur...

    Est-ce dû à une trop longue adresse? Est-ce qq chose venant de mon code?

    Ma sub de copie:
    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
    77
    78
    79
    80
    Sub ExportationModule(nomDuModule)
     
    '8 cas = 8 modules à copier pour pouvoir effectuer 2 fonctions
    'FIGER / CALCULER REVENU
    'DernierMois
    'Figer
    'FigerDernierMois
    'FigerMoisAFiger
    'FigerVerif
    'Monthly_Revenue
    'PremierMois
    'verif
     
    'il faut aussi copier les 3 userforms
    'boiteColonne
    'boiteColonneMoisAFiger
    'attente
     
    Select Case (nomDuModule)
        Case "DernierMois":
            Quoi = "DernierMois" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "Figer":
            Quoi = "Figer" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "FigerDernierMois":
            Quoi = "FigerDernierMois" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "FigerMoisAFiger":
            Quoi = "FigerMoisAFiger" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "FigerVerif":
            Quoi = "FigerVerif" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "Monthly_Revenue":
            Quoi = "Monthly_Revenue" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "PremierMois":
            Quoi = "PremierMois" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "verif2":
            Quoi = "verif2" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.bas")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.bas")
            Kill ("temp.bas")
        Case "boiteColonne":
            Quoi = "boiteColonne" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.frm")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.frm")
            Kill ("temp.frm")
            Kill ("temp.frx")
        Case "boiteColonneMoisAFiger":
            Quoi = "boiteColonneMoisAFiger" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.frm")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.frm")
            Kill ("temp.frm")
            Kill ("temp.frx")
        Case "attente":
            Quoi = "attente" ' remplace modExport par le nom du module à exporter
            ThisWorkbook.VBProject.VBComponents(Quoi).Export ("temp.frm")
            ActiveWorkbook.VBProject.VBComponents.Import ("temp.frm")
            Kill ("temp.frm")
            Kill ("temp.frx")
    End Select
     
    End Sub

    Mon programme principal où j'appelle l'algo de copie:
    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
    Sub finRevenuRecognition()
     
        'Fermeture de cette feuille excel :'( ou pas :>
        '-----------------------------------------------
        Application.ScreenUpdating = True
        'Workbooks(ThisWorkbook.Name).Close
     
        '-----------------------------------------------
        'Copie des modules d'ici vers le fichier crée
            'Réalisera les fonctions FIGER/CALCULER
            '8 cas = 8 modules à copier pour pouvoir effectuer 2 fonctions
                'FIGER / CALCULER REVENU
                'DernierMois
                'Figer
                'FigerDernierMois
                'FigerMoisAFiger
                'FigerVerif
                'Monthly_Revenue
                'PremierMois
                'verif
                copieModule.ExportationModule ("DernierMois")
                copieModule.ExportationModule ("Figer")
                copieModule.ExportationModule ("FigerDernierMois")
                copieModule.ExportationModule ("FigerMoisAFiger")
                copieModule.ExportationModule ("FigerVerif")
                copieModule.ExportationModule ("Monthly_Revenue")
                copieModule.ExportationModule ("PremierMois")
                copieModule.ExportationModule ("verif2")
     
            'Il faut aussi copier les 3 userforms
                'boiteColonne
                'boiteColonneMoisAFiger
                'attente
                copieModule.ExportationModule ("boiteColonne")
                copieModule.ExportationModule ("boiteColonneMoisAFiger")
                copieModule.ExportationModule ("attente")
    't2 = Timer
    't = t2 - t1
    'MsgBox ("L'opération a mis " & t & "secondes.")
     
    Unload attenteRR
     
    MsgBox ("Action Successful")
     
     
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Peut être un problème de temps de copie. Sépare tes lignes de copie d'un DoEvents (F1 pour savoir de quoi il retourne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    copieModule.ExportationModule ("DernierMois")
    DoEvents
    copieModule.ExportationModule ("Figer")
    DoEvents
    Une explication ? Le réseau doit ralentir la copie, or la macro n'attend pas et continue à s'exécuter, d'où elle se croise les genoux d'où erreur (!)
    Juste une suggestion... Tu testes

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Par défaut
    Merci pour le DoEvents, je ne connaissais pas

    Je l'ai mis, ca ne changeait rien... mais le problème est résolu

    Sur mon poste, tout fonctionnait bien... mais pas sur certains postes... en fait la sécurité empêcher Excel d'accéder au projet Visual Basic... et cela empechait la copie de macro

    Mon code fonctionne correctement, si certains en ont besoin, n'hésitez pas

Discussions similaires

  1. copie de module par code
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 26/11/2013, 12h04
  2. copie de module par code
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/11/2013, 10h25
  3. un problème avec le module File::Copy
    Par Aymen_bass dans le forum Modules
    Réponses: 6
    Dernier message: 14/09/2009, 14h21
  4. module File Copy
    Par grego.. dans le forum Modules
    Réponses: 8
    Dernier message: 06/07/2009, 17h04
  5. Copie d'une UserForm et d'un module en vba.
    Par Snooky68 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/04/2008, 14h32

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