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 :

Exporter un Userform VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 43
    Points
    43
    Par défaut Exporter un Userform VBA
    Bonjour à tous, si vous pouviez m'aider (encore une fois) sur un petit probléme, en fait, j'essaye d'exporter et d'importer un userform avec ses codes depuis un classeur pour des mises à jour sur un autre classeur, tout ça par un autre classeur qui n'a rien a voir avec les deux précédents. Seulement, ça ne marche pas, j'ai plusieurs pistes mais aucune fonctionne ! Vous pourriez m'aider ???

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Sans voir comment tu essaie d'exporter/importer cet UserForm... Sans voir le code qu'il exécute (références relatives ou absolues...)... Je ne vois pas comment on pourrait.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Oui, c'est pas faux, sorry

    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
     Dim Fichier As String, Repertoire As String
        Dim Wb As Workbook
        Dim fichierex2
        Dim fichierex1
        Dim objfso
        Dim i As Byte
        Dim VBcomp As VBcomponent
        Application.ScreenUpdating = False
    fichierex2 = "D:\personnel\TEST\BIT PAPIER.xls"
    fichierex1 = "X:\BIT PAPIER\BIT PAPIER.xls"
        '-----------------------------------
        'Export du UserForm1
        Workbooks.fichierex1.VBProject.VBComponents.Export "X:\BIT PAPIER\copieUSF.frm"
        '-----------------------------------
        With Workbooks(fichierex2).VBComponents.Remove.VBComponen ("UserForm1")
        End With

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Tu as un exemple dans le tuto ci-dessous, au chapitre IV-E

    http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    La première chose à faire, que je ne vois pas dans ton code, est d'ouvrir le fichier source et le fichier cible

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Merci mais c'est là dessus que j'avais travaillé et pour être franc, je séche un peu... Surtout que dans le fichier source et destination, j'ai des userform qui se lancent tout seul ! Donc pour les ouvrir pour travailler dessus sans lancer l'automation... J'ai un soucis

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Voici le code de SilkyRoad adapté et testé, il te reste à adapter les noms et chemins des fichiers source et cible ainsi que le nom du UserForm. Les macros dans le fichier source ne seront pas exécutées.
    Remarque : il n'y a pas de gestion d'erreur en cas d'existance d'un UserForm portant le même nom dans le fichier cible.

    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
    Sub Export_Import_Module_Et_Userform()
        Dim FichSource As String, FichCible As String
        Dim WbSource As Workbook, WbCible As Workbook
     
        Application.ScreenUpdating = False
        Application.EnableEvents = False
     
        FichSource = "D:\Divers\Macro\tests\Classeur_test.xls"
        FichCible = "D:\Divers\Macro\tests\Test.xls"
     
        Workbooks.Open Filename:=FichSource
        Set WbSource = ActiveWorkbook
     
        Workbooks.Open Filename:=FichCible
        Set WbCible = ActiveWorkbook
     
        WbSource.VBProject.VBComponents("UserForm1").Export "C:\copieUSF.frm"
        WbCible.VBProject.VBComponents.Import "C:\copieUSF.frm"
     
        WbSource.Close False
        WbCible.Close True
     
        Set WbSource = Nothing
        Set WbCible = Nothing
     
        Application.EnableEvents = True
        Application.ScreenUpdating = True
     
        'efface les deux fichiers créés
        Kill "C:\copieUSF.frm"
        Kill "C:\copieUSF.frx"
        MsgBox "Opération terminée."
    End Sub

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Merci, ça marche trés bien, j'ai rajouté un code pour supprimer l'userform de la destination. Le seul hic, c'est que j'ai une erreur 1004 et que je dois résoudre, enfin je l'ai résoulu mais seulement sur mon poste, en cochant la case dans sécurité pour la fiabilité de la macro, mais je vais pas passer partout dans l'entreprise pour cocher sur tous les postes, je fais comment ? Y a pas un code pour ça ???

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bah...si on réfléchit 37 secondes, un code permettant d'auto-activer la fiabilité de la macro, elle servirait à quoi la sécurité ?

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Ben oui, je sais, mais bon, la macro ne sert à rien alors !

  10. #10
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Désolé, je n'ai pas de solution pour contourner ce problème

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Y a pas un code pour faire apparaitre la boite de dialogue de cette sécurité, car je trouve pas, enfin, je cherche...

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Bon, ben on y peut rien ! Effectivement, la sécurité, c'est là sécurité ! Mais bon, pas grave, j'ai trouvé un code vbs qui désactive tout ça ! Comme ça, je coche et ensuite je décoche... Mais ceci est une autre histoire...

    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
    Dim wsh, objXl
     
    'Pour s'assurer qu'excel n'est pas ouvert.
     
    On Error Resume Next
    Set objXl=GetObject(,"Excel.Application")
    If Not IsEmpty(objXl) Then
    Msgbox "Fermer excel pour exécuter ce scr1pt...",64,"La direction"
    WScript.Quit
    else
    Set objxl=createobject("Excel.Application")
    Ver = objxl.Version
    set objxl = nothing
    End If
    Err.Clear
     
    Set wsh = WScript.CreateObject("WScript.Shell")
     
    'Niveau de sécurité 2 pour 2ième niveau
    wsh.RegWrite "HKCU\Software\Microsoft\Office\" & _
    Ver & "\Excel\Security\Level",2,"REG_DWORD"
     
    if ver >= 10 then
    'Faire confiance au projet VBA -> 1 pour que la case soit cochée
    '         -> 0 pour que la case soit décochée
    wsh.RegWrite "HKCU\Software\Microsoft\Office\" & _
        Ver & "\Excel\Security\accessVBOM",1,"REG_DWORD"
     
    'Faire confiance au modèle -> 0 pour que la case soit cochée
    '     -> 1 pour que la case soit décochée
    wsh.RegWrite "HKCU\Software\Microsoft\Office\" & _
    Ver & "\Excel\Security\DontTrustInstalledFiles",0,"REG_DWORD"
    end if
    Merci beaucoup...

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

Discussions similaires

  1. [XL-2000] Userform VBA Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/04/2015, 13h49
  2. Réponses: 0
    Dernier message: 31/07/2012, 10h27
  3. Recuperer userform VBA
    Par zoumzoum59 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 22/11/2007, 21h24
  4. Réponses: 4
    Dernier message: 07/01/2007, 12h55
  5. Réponses: 2
    Dernier message: 11/04/2006, 19h09

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