Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier intégralement un Frame

Calvus

XLDnaute Barbatruc
Bonsoir le forum,

Comment fait on pour copier un Frame et tous ses objets sur un autre, le code y compris évidemment.
J'ai bien essayé des choses comme :
VB:
Private Sub CommandButton1_Click()
Me.Copy
Me.Paste
End Sub
mais sans succès.

Est-ce possible ?

Merci
 

Lone-wolf

XLDnaute Barbatruc
Hello mon cher

la solution en fausse image

VB:
Private Sub CommandButton1_Click()
'Formulaire 1
Dim Frm As MSForms.UserForm
Dim ctrl As Controls

    Set Frm = Me
    Set ctrl = Me.Controls
  
    ctrl.Copy
  
    UserForm2.Show
    UserForm2.Paste
End Sub
 

Calvus

XLDnaute Barbatruc
Bonsoir mon cher Lone-Wolf ,

Alors, j'ai copié dans un module, ça m'a fait planter excel.
Ensuite j'ai créé un bouton, copié le code, et il s'est passé quelque chose, mais je ne sais pas quoi.... Je ne trouve pas la copie dans l'USF.

Merci
A+
 

Lone-wolf

XLDnaute Barbatruc
Hello

La macro fallait la mettre dans le bouton du formulaire et non dans un module. Maintenant pour tester, crée un nouveau classeur, ajoute 2 formulaires, la frame et les contrôles ci-dessous dans le formulaire1. Chez moi tout est ok.

Tout le code du formulaire 1

VB:
Private Sub CheckBox1_Click()
ComboBox1.Text = "HELLO !"
End Sub

Private Sub ComboBox1_Change()
Me.OptionButton1.Value = True
End Sub

Private Sub CommandButton1_Click()
Dim Frm As MSForms.UserForm
Dim ctrl As Controls
Dim fm As Controls

    Set Frm = Me
    Set ctrl = Me.Controls
 
    ctrl.Copy
    Call copier
    UserForm2.Show
    UserForm2.Paste
End Sub

Private Sub ListBox1_Click()
ListBox1.AddItem "HELLO BOY !"
End Sub

Private Sub OptionButton1_Click()
TextBox1 = "C'EST OK !"
End Sub

Private Sub TextBox1_Change()
MsgBox "BYE !"
End Sub

Sub copier()
'Active la référence Microsoft Visual Basic Extensibility

   Dim strCode As String
   Dim vbCom As VBComponent
   Dim modObj As Object

   Set modObj = _
      Application.VBE.ActiveVBProject.VBComponents.Item("UserForm1")

   strCode = modObj.CodeModule.Lines(1, modObj.CodeModule.CountOfLines)

   Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)

   Application.VBE.ActiveVBProject.VBComponents.Item("UserForm2") _
      .CodeModule.AddFromString (strCode)

End Sub
 

Lone-wolf

XLDnaute Barbatruc
Ecoute

Si quelqu'un peux t'aider ça serait bien. Encore une fois il y à une incompatibilité entre 2007 et 2010. Sinon vas sur google
"vba excel 2007+Application.VBE.ActiveVBProject.VBComponents" et vois si tu trouve quelque chose.

EDIT: et bien tu rajoute une frame dans form1. Le code prends en considération tous les contrôles qui peuvent si trouvés.
 

Discussions similaires

Réponses
3
Affichages
275
Réponses
9
Affichages
257
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…