Vba userform

Résolu/Fermé
la9 - 10 janv. 2011 à 21:54
 la9 - 14 janv. 2011 à 20:23
Bonjour,


J'utilise VBA sous Excel 2010. Je suis dans un userform qui me permet de choir un nom dans une liste déroulante.
Après avoir validé je veux pouvoir rentrer (grâce à des textbox) et archiver des infos qui correspondent au nom précédemment sélectionné.
En gros:
La première liste déroulante du premier userform permet le choix du nom et le deuxième userform doit archiver les données rentrées (dans le deuxième userform) en fonction de la sélection du nom faite dans le premier userform.

quelqu'un aurait il une explication et un peu d'aide pour moi svp????

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
11 janv. 2011 à 09:56
Bonjour,

Un exemple vaut parfois mieux qu'un long discours

Codes utilisés :
Userform 1 :
bouton "valider" :
Private Sub CommandButton1_Click()
If ComboBox1.Value = "" Then
    MsgBox "Veuillez choisir un nom"
    Exit Sub
End If
Load UserForm2
UserForm2.Show
End Sub

initialisation du UserForm1 :
Private Sub UserForm_Initialize()
Dim DerniereLigne As Integer, Ligne As Integer
DerniereLigne = Sheets("Feuil1").Range("A65536").End(xlUp).Row
For Ligne = 2 To DerniereLigne
    ComboBox1.AddItem Cells(Ligne, 1).Value
Next Ligne
End Sub


Userform 2 :

Bouton : "enregistrement des modifications" :
Private Sub CommandButton1_Click()
Dim Trouve As Range
Dim Valeur_cherchee As String
If TextBox1.Value = "" Then
    MsgBox "Veuillez entrer un nom"
    Exit Sub
End If
Valeur_cherchee = TextBox1.Value
    Set Trouve = Sheets("Feuil1").Columns(1).Cells.Find(what:=Valeur_cherchee)
        If Trouve Is Nothing Then
            MsgBox "Pas trouvé"
        Else
            Trouve.Offset(0, 1).Value = TextBox2.Value
            Trouve.Offset(0, 2).Value = TextBox3.Value
            Trouve.Offset(0, 3).Value = TextBox4.Value
            Trouve.Offset(0, 4).Value = TextBox5.Value
            Trouve.Offset(0, 5).Value = TextBox6.Value
        End If
Set Trouve = Nothing
End Sub

Initialisation des données au chargement de l'USF2 :
Private Sub UserForm_Initialize()
Dim Trouve As Range
Dim Valeur_cherchee As String
TextBox1.Value = UserForm1.ComboBox1.Value
Valeur_cherchee = TextBox1.Value
    Set Trouve = Sheets("Feuil1").Columns(1).Cells.Find(what:=Valeur_cherchee)
        If Trouve Is Nothing Then
            MsgBox "Pas trouvé"
        Else
            TextBox2.Value = Trouve.Offset(0, 1).Value
            TextBox3.Value = Trouve.Offset(0, 2).Value
            TextBox4.Value = Trouve.Offset(0, 3).Value
            TextBox5.Value = Trouve.Offset(0, 4).Value
            TextBox6.Value = Trouve.Offset(0, 5).Value
        End If
Set Trouve = Nothing
End Sub

0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
11 janv. 2011 à 12:17
Bonjour,
Un complément pour lire/écrire des Cellules/TextBox/Cellules.

Bonjour pijaku
Load UserForm2
UserForm2.Show

Le Load est superflu, Show suffit.

A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
11 janv. 2011 à 12:22
Salut Lermite222.
Le "show" seul lance la procédure UserForm_initialize???
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
11 janv. 2011 à 12:24
Absolument.
Fait un test, tu met un point d'arrêt dans Initialize.
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
11 janv. 2011 à 12:27
Merci.
A+
0
merciiiiiiii
0