VBA UserForm <==> UserForm

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

yusukens

XLDnaute Occasionnel
Bonsoir,

je viens encore soliciter encore une fois car j'ai encore besoin d'un petit coup de main.
j'essaye désespérement a trouver la faille à mon code mais rien n'a faire.

Considérons 2 UserForm

UserForm1 :
- un ListBox contenant de contact
- Un bouton permettant de transférer le choix du contact vers des TextBox du 2eme UserForm

UserForm2 :
- Des TextBox permettant d'afficher les infos du contact choisi dans l'UserForm1
- Un bouton permettant de revenir dans le Userform1 pour choisir un autre contact.

J'ai réussi a faire ce boucle :
c'est a dire passé du UserForm1 vers UserForm2 et vice versa avec l'affichage de la fiche contact dans l'userForm2.

Mon problème et que j'ai l'impression que les TextBox garde en mémoir l'ancien contact, et donc lorsque je reviens sur l'UserForme1 pour choisir un autre contact, les textBox n'affiche pas le nouveau contact choisi

voici mon code dans le 1er UserForm :
Code:
Private Sub CommandButton1_Click()
Dim x As Integer

Unload UserForm1
UserForm2.Show

For x = 1 To 15
    UserForm2("TextBox" & x).Value = UserForm1.ListBox.Column(x - 1,  UserForm1.ListBox.ListIndex)
Next x

End Sub

et voici mon UserForm 2 :
Code:
Private Sub CommandButton1_Click()
Unload UserForm2
UserForm1.Show
End Sub
 
Re : VBA UserForm <==> UserForm

SALUT yusukens

Je t'envoie ce fichier que j'ai dénicher dans ce forum est qui te sert probablement celui qu'il l'a fait est un maitre en la matiere tu peut t'insperer de ce modelé il répond a ce que tu cherche

bonne soirée
 

Pièces jointes

Re : VBA UserForm <==> UserForm

SALUT yusukens
moi j'ai fait une petite expérience avec le fichier que je t'es envoie et ca a marcher je t'envoie le code est essaye de le modifier a ton niveau car le principe est bon il faut pas le prendre de son intégralité il y'a les RGB les couleur t'a pas besoin le commandButton il faut le faire dans le 1 Userform :

Private Sub CommandButton12_Click()
UserForm2.Show
Dim L As Integer
Dim plage As String
SortNom
With UserForm2.TextBox12
.Value = UserForm1.TextBox3
.Enabled = False
.BackColor = RGB(255, 200, 200)
End With
With UserForm2.TextBox13
.Value = UserForm1.TextBox2
.Enabled = False
.BackColor = RGB(255, 200, 200)
End With
With UserForm2.TextBox14
.Value = UserForm1.TextBox1
.Enabled = False
.BackColor = RGB(255, 200, 200)
End With
With UserForm2.TextBox15
UserForm2.TextBox15 = Format(Sheets("Database").Range("D" & NomLBindex), " 000,00")
.Enabled = False
.BackColor = RGB(255, 200, 200)
End With
With UserForm2.TextBox16
UserForm2.TextBox16 = Format(Sheets("Database").Range("E" & NomLBindex), " 000,00")
.Enabled = False
.BackColor = RGB(255, 200, 200)
End With
With UserForm2.TextBox17
UserForm2.TextBox17 = Format(Sheets("Database").Range("F" & NomLBindex), " 000,00")
.Enabled = False
.BackColor = RGB(255, 200, 200)
End With
With UserForm2.TextBox18
UserForm2.TextBox18 = Format(Sheets("Database").Range("G" & NomLBindex), " 000,00")
.Enabled = False
.BackColor = RGB(255, 200, 200)
End With
L = Sheets("Database").Range("A65536").End(xlUp).Row
plage = Sheets("Database").Range("A2:G" & L).Address
ListBox1.RowSource = "Database!" & plage
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = False
CommandButton8.Visible = False
CommandButton9.Visible = False
UserForm2.CommandButton10.Visible = False
CommandButton11.Visible = False
TextBox6.Visible = False

Label4.Visible = False
ListBox2.Visible = False
Frame1.Visible = False
UserForm2.Caption = "FONDS D'ETAT => MONTAGE FINANCIERS"

End Sub
 
Re : VBA UserForm <==> UserForm

Salut
merci pour t'as réponse
j'ai fais plusieur test avec le fichier et le dernier code que t'as mis
mais je n'y arrive toujours pas.
(j'ai commencé la VBA il y a 1 semaine en autodicdacte)
j'ai encore un peu de mal a tout comprendre.

par contre ça ma permis de trouver une petite solution.

en fait il faut laisser le UserForm2 allumé, et comme ça il ne garde pas en mémoir les données qu'on lui injecte.
je sais pas pourquoi mais ça marche.
a oui, en fait mon astuce et de déplacer le Unload UserForm après le transfere des données.

mon nouveau code est donc :

Code:
Private Sub CommandButton1_Click()
Dim x As Integer

For x = 1 To 15
    UserForm2("TextBox" & x).Value = UserForm1.ListBox.Column(x - 1,  UserForm1.ListBox.ListIndex)
Next x
Unload UserForm1
End Sub

Code:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub


Merci pour ton fichier et ton code.
 
Re : VBA UserForm <==> UserForm

J'ai compris pourquoi ça gardé les valeurs.
en fait il faut rénitialiser les UserForm

En gros il faut le Fermer complément.

car si on applique un Show sur un UserForm déjà ouvert, ça affiche une erreur.

connais tu un moyen pour sauter cette erreur ?
par exemple,
lui dire
Si la l'UserForm est ouvert sauter ce SHOW.

voici l'aide sur Erreur que me propose Excel :



Code:
Feuille déjà affichée; impossible d'afficher modalement (Erreur 400)


Vous ne pouvez pas utiliser la méthode Show pour afficher une feuille en tant que feuille modale si elle est déjà visible. La cause de cette erreur et la solution pour la corriger sont les suivantes : 

Vous avez essayé d'appliquer à une feuille déjà visible la méthode Show avec l'argument style égal à 1 (vbModal). 
Utilisez l'instruction Unload ou la méthode Hide sur la feuille avant d'essayer de l'afficher en tant que feuille modale.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
685
Réponses
5
Affichages
502
Réponses
3
Affichages
901
  • Question Question
Microsoft 365 Textbox userform
Réponses
10
Affichages
610
Retour