XL 2013 Copier un Userform d'un fichier Excel vers un autre avec en l'adaptant avec les nouvelles feuilles

metalbarzotti

XLDnaute Nouveau
Bonjour tous le monde;

Avec l'énoncer du sujet on dirait que c'est farfelu, pour résumer enfin si on peu dire que c'est un résumé:

Un fichier Excel qui s'appelle Plan Maintenance & Production.xlsm dedans il y'a la gestion de la maintenance (Intervention - recherche - ajout - corrective - préventive...) et avec la gestion de la production (KPI et tableau de board), ce fichier excel a une relation avec BD Équipements UAB.accdb un fichier Access où comme son nom l'indique il regroupe toutes les bases de données des équipements de l'installation, avec ça on crée une application sous android pour lire des code QR qui affiche le détail des équipements et d'où on peu envoyé des notification par Mail sur une panne.

Le site web aura comme rôle d'afficher le tableau de board excel en ce qui concerne la maintenance du site avec le production et ses KPI. Voila voila en gros le projet en cours.

Passant aux problèmes, oui avec "S" car il y'a des tonnes :

1- Y'a un fichier excel GMAO que je mets en pièce jointe qui a l'air pas mal, j'aimerai utilisé les userform de celui ci dans mon fichier Plan maintenance en ce qui concerne l'ajout d'équipements, les pièces de rechanges bref comment adapté les Useform avec mon fichier, j'ai essayé de suivre des tuto VBA mais trop compliqué pour le moment.

2- Si il y'a une âme charitable qui peu m'aider pour la mise en forme de mon fichier et les relation entre les feuilles, en gros la page d'accueil résume ce que je veux afficher et ajouter.

3- Il y'a un fichier access qui regroupe les détails des équipements de l'installation et si c'est possible d'ajouter un userform depuis le fichier Plan maintenance qui ajoutera si il y'en a des détails d'équipements dans le fichier Listing Equipements UAB.xlsm et de là il sera mis a jour directement vers access, on a besoin de access pour crée une requête SQL avec l'application android.

4- Et pour finir, si on peu dire que c'est la fin , comment faire pour crée un fichier excel dans une page web qui sera consulter en réseau local seulement et qui affichera principalement des graphe de la maintenance corrective et préventive et les KPI de la production.

5- Et pour finir comment faire pour crée une base de donnée avec le serveur SQL pour les lire d'une application PHP et de là les lire sur une application android.

Je sais qu'il y'a plusieurs spécialités ici si on me répond que pour les Userform ça serai déjà un énorme progrès pour moi.

Voilà j'espère ne pas avoir été trop long dans ma description du problème. Je vous remercie pour chaque seconde passé a lire tous ce texte.
 
Solution
Je vois que vous n'avez pas les notions de bases, c'est gênant pour construire votre usine à gaz.

Pour que le code du post #4 fonctionne il faut que seuls le fichier Source et le fichier Destination soient ouverts.

Et pour pouvoir accéder au VBAProject il faut avoir coché l'option Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).
Lol une usine a gaz, c'est plutôt du gaz hilarant je vous laisse donc voir la construction de cette dernière comment est faite et surtout on utilise quoi comme matière première lol. Enfin pour revenir a notre sujet j'ai bien précisé dans mon message que j'ai pas la base dans VBA, je vous remercie...

metalbarzotti

XLDnaute Nouveau
Bonjour,

Si car ce projet est un vrai délire : android, le web, Access, SQL, PHP, on n'en peut plus :mad:

A+
En effet je te rejoint sur ton résonnement, si c'est possible de m'éclairer sur la façon de bien copier un userform d'un fichier a un autre en l'adaptant a ce dernier, ça sera déja un enorme pas pour moi pour le reste je suis entrain de faire des recherches , et pour le projet il est en cours de réalisation pour l'application elle est à 80% pour le web la page est crée reste la connexion entre l'excel et l'access. et pour le fichier maintenance c'est un chantier en cours de réalisation.
 

job75

XLDnaute Barbatruc
Voyez les fichiers joints et la macro affectée au bouton du fichier source :
VB:
Sub Copier_USF()
Dim wb1 As Workbook, wb2 As Workbook
Set wb1 = ThisWorkbook
For Each wb2 In Workbooks
    If wb2.Name <> wb1.Name Then Exit For
Next
If wb2 Is Nothing Then MsgBox "Ouvrez le fichier de destination": Exit Sub
wb1.VBProject.VBComponents("Userform1").Export wb1.Path & "\Userform1.frm"
wb2.VBProject.VBComponents.Import wb1.Path & "\Userform1.frm"
Kill wb1.Path & "\Userform1.frm"
End Sub
 

Pièces jointes

  • Fichier Source(1).xlsm
    19 KB · Affichages: 33
  • Fichier Destination.xlsm
    8 KB · Affichages: 22

metalbarzotti

XLDnaute Nouveau
Voyez les fichiers joints et la macro affectée au bouton du fichier source :
VB:
Sub Copier_USF()
Dim wb1 As Workbook, wb2 As Workbook
Set wb1 = ThisWorkbook
For Each wb2 In Workbooks
    If wb2.Name <> wb1.Name Then Exit For
Next
If wb2 Is Nothing Then MsgBox "Ouvrez le fichier de destination": Exit Sub
wb1.VBProject.VBComponents("Userform1").Export wb1.Path & "\Userform1.frm"
wb2.VBProject.VBComponents.Import wb1.Path & "\Userform1.frm"
Kill wb1.Path & "\Userform1.frm"
End Sub
Tout d’abord merci pour votre rapidité.

Ce code là copie et adapte le userform qu'on veut au fichier de distination? car on le lançant je reçois ce message d'erreur:.
1622980679989.png
et en mettant débogage il me revoit a la ligne suivant:

1622980740752.png
 

metalbarzotti

XLDnaute Nouveau
j'ai trouver ce code là :

VB:
Option Explicit
Sub RecopieModule()
  Dim NewM As Object, NewCode As String
  ' Stockage du code du module "Module1" du classeur maitre
    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule 'mettre le nom du module
      NewCode = .Lines(1, .CountOfLines)
    End With
  ' Ajout d'un module au CLASSEUR ACTIF
  Set NewM = ActiveWorkbook.VBProject.VBComponents.Add(1)
    With ActiveWorkbook.VBProject.VBComponents(NewM.Name).CodeModule
    ' Le DeleteLines sert à éviter éviter d'avoir 2 fois Option Explicit
    ' si la déclaration explicite est cochée dans les préférences
    'sans effet si l'option n'est pas cochée
      .DeleteLines 1, .CountOfLines
      .AddFromString NewCode
    End With
 End Sub
Sub Exportermodule()
'on ouvre le classeur cible
Workbooks.Open Filename:= _
        "Chemin du classeur.xls"
RecopieModule
End Sub

Es qu'il va directement me copier le userform de mon choix et l'adapter selon le fichier ou bien la feuille du fichier destination?
Merci
 

job75

XLDnaute Barbatruc
Je vois que vous n'avez pas les notions de bases, c'est gênant pour construire votre usine à gaz.

Pour que le code du post #4 fonctionne il faut que seuls le fichier Source et le fichier Destination soient ouverts.

Et pour pouvoir accéder au VBAProject il faut avoir coché l'option Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).
 

metalbarzotti

XLDnaute Nouveau
Je vois que vous n'avez pas les notions de bases, c'est gênant pour construire votre usine à gaz.

Pour que le code du post #4 fonctionne il faut que seuls le fichier Source et le fichier Destination soient ouverts.

Et pour pouvoir accéder au VBAProject il faut avoir coché l'option Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).
Lol une usine a gaz, c'est plutôt du gaz hilarant je vous laisse donc voir la construction de cette dernière comment est faite et surtout on utilise quoi comme matière première lol. Enfin pour revenir a notre sujet j'ai bien précisé dans mon message que j'ai pas la base dans VBA, je vous remercie donc pour votre patience et surtout votre indulgence.

J'ai pu tester votre code et ça marche très bien cependant il n'a pas copier de module avec dans le cas ou il y'a un code qui gère les boutons et autres.

Es que ce code ou bien celui dans le #post06 peu convenir a ma demande?

VB:
Dim cheminfichier As String
Private Sub CommandButton1_Click()
ListFiles
End Sub
Sub test_Copy()
With ThisWorkBook
With .VBProject.VBComponents
With .Item("Userform1")
.Export "c:\Userform1.frm"
End With
With .Item("Module1")
.Export "c:\Module1.bas"
End With
End With
'.Sheets("Feuil1").Copy
.Worksheets.Copy
End With
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ActiveWorkbook
With .VBProject.VBComponents
.Import "c:\userform1.frm"
.Import "c:\module1.bas"
End With
.SaveAs cheminfichier
.Close False
End With
Application.DisplayAlerts = True

Kill "c:\userform1.frm": Kill "c:\userform1.frx"
Kill "c:\module1.bas"
End Sub
Sub ListFiles()
'   Which directory?
    Directory = "Chemin du répertoire"
'Get the files
    On Error Resume Next
    With Application.FileSearch
        .NewSearch
        .LookIn = Directory
        .Filename = "*.*"
        .SearchSubFolders = False
        .Execute
'       Write the file info
        For i = 1 To .FoundFiles.Count
            cheminfichier = .FoundFiles(i)
            test_Copy
            r = r + 1
        Next i
    End With
End Sub
 

Discussions similaires

Réponses
7
Affichages
581
Réponses
10
Affichages
404

Statistiques des forums

Discussions
315 094
Messages
2 116 154
Membres
112 670
dernier inscrit
Flow87