Vba userform

Résolu
la9 -  
 la9 -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut Lermite222.
      Le "show" seul lance la procédure UserForm_initialize???
      0
    2. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Absolument.
      Fait un test, tu met un point d'arrêt dans Initialize.
      A+
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Merci.
      A+
      0
    4. la9
       
      merciiiiiiii
      0