Export d’UserForm d’un classeur sur un autre = erreur

Résolu/Fermé
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 28 févr. 2016 à 16:36
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 28 févr. 2016 à 21:45
Bonjour,

J’ai copié un UserForm d’un classeur 1 vers un classeur 2 (par exporter).
L’UserForm ne fonctionne pas correctement sur le classeur 2 !!!
Le classeur 2 avait d’autres UserForm qui fonctionnent toujours bien.

J’explique les manipulations que j’ai effectuées pour essayer de comprendre :

a) Si mon curseur est positionné sur ma feuil1(Devis) du classeur 2
lancement de l’userForm à partir du code par F5 = Erreur d’exécution ‘1004’ la méthode ’range’ de l’objet _Global à échoué (arrêté sur Formulaire_Devis.show)

b) Si mon curseur est positionné sur ma feuil2(BD) du classeur 2
lancement de l’userForm à partir du code par F5 = ça marche bien, mais les actions sont exécutées sur la feuil2 au lieu de la feuil1

c) si je double clic dans une des cellules C11:C25 de la feuil1 = Erreur d’exécution ‘1004’ la méthode ’range’ de l’objet _Global à échoué (arrêté sur Formulaire_Devis.show) (fonctionnement normale souhaité du programme)

Code sur ma feuil1(Devis)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
If Not Intersect([c11:c25], Target) Is Nothing And Target.Count = 1 Then
Cancel = True
Formulaire_Devis.Show
End If
End Sub


Code au niveau de l’UserForm.
Nom de l’UserForm = Formulaire_Devis
Si je remplace UserForm_Initialize par Formulaire_Devis_Initialize ça ne change rien

Private Sub UserForm_Initialize()

choix1 = Application.Transpose(Range("choix1"))
choix2 = Application.Transpose(Range("choix2"))
choix3 = Application.Transpose(Range("choix3"))
prix = Application.Transpose(Range("prix"))
Set d1 = CreateObject("Scripting.Dictionary")
For Each c In choix1: d1(c) = "": Next c
Me.ComboBox1.List = d1.keys
End Sub


La feuil2(BD) est la feuille avec les cellules Chois1 ; 2 ; 3 et prix

L’erreur est peut-être un problème d’initialisation de l’UserForm ? Pourquoi ?
Avez-vous une idée sur c qu'il faudrait faire ?
Merci pour votre aide.

Cordialement

1 réponse

mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
28 févr. 2016 à 21:45
Bonjour,

Après réflexion, j'ai fait une petite modif qui marche.
Ajout des deux sheets dans le code.
C'est peut-être pas la bonne solution mais ça fonctionne.

Private Sub UserForm_Initialize()

Sheets("BD").Select

choix1 = Application.Transpose(Range("choix1"))
choix2 = Application.Transpose(Range("choix2"))
choix3 = Application.Transpose(Range("choix3"))
prix = Application.Transpose(Range("prix"))

Sheets("Devis").Select

Set d1 = CreateObject("Scripting.Dictionary")
For Each c In choix1: d1(c) = "": Next c
Me.ComboBox1.List = d1.keys
End Sub



Cordialement
0