Vb appel d'une UserForm

Bonjour,
J'ai un tableau excel et lors d'un double click sur une case mon Userform aparait.
Mais le problème c'est que avec la fonction Show c'est bloquant, il faut que l'Userform soir fermé pour que le code continu.
Mais je voudrais pouvoir récupérer des données sans que mon Userform se ferme.

Voici mon code :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim resultatfini As String

AdresseCellule = Target.Address
UserForm1.Show

resultatfini = UserForm1.Tresultat.Value //J'ai une texteBox qui affiche le resultat

If resultatfini <> "" Then
Range(AdresseCellule).Value = resultatfini
End If

Cancel = True

End Sub

Je ne sait vraiment pas comment faire, soit il faudrait appelé autrement mon UserForm
Soit trouver un lien entre mon ThisWorkBook et mon Userform.

Je ne sait pas si j'ai été bien clair et que vous avez compris le probleme, je serais ravi de repondre a toutes vos question.

Merci

12 réponses

  • Votes
  • Date
  • Date décroissante
  1. Merci pour cette reponse rapide .

    Mais
    Load (UserForm1)
    Sa me met Erreur d'excecution '361'
    Impossible de charger ou de decharger cet objet
    1. Contributeur
      Load Form1 alors... enfin.. Form1 est le nom de ta feuille (propriete, name)
      1. Contributeur
        attend attend... si j'ai bien compris ton code :

        l utilisateur double click dans une cellule.. de la tu charge ta form (qui je supose fait un tas de calcul scientique :p) et affiche un résultat dans un textbox appelé Tresultat et la valeur de Tresultat se met dans la cellule double cliquée c ca ??

        alors pourquoi au lieu de mettre ca dans un textebox ( avec quelque chose comme Tresultat.caption =résultatdemontestscientifique) tu ne fait pas:

        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        UserForm1.Show
        End Sub

        Private Sub UserForm_Activate()
        monresultatscientifique = "test"
        ActiveCell.Value = monresultatscientifique

        End Sub
        1. Contributeur
          Le probleme la c'est que la form reste visible... mais c'est peut etre ce que tu veux...

          Sinon, 2 solution :

          Private Sub UserForm_Activate()
          monresultatscientifique = "test"
          ActiveCell.Value = monresultatscientifique
          unload me 'pour quitter la form
          End Sub

          ou

          Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
          monresultatscientifique = "test"
          ActiveCell.Value = monresultatscientifique
          End Sub

          sans passer par une form
          1. Merci je vais tester tout sa et je te redit ;).

            merci de m'aider
            1. Activate ne colle pas car en faite dans mon Userform, je doit choisir ce que je dois calculer .
              A moins que je l'ai mal utiliser ?
              1. Contributeur
                ok.. donc

                Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
                UserForm1.Show
                End Sub

                Pour afficher la form

                dans ta form :

                l'utilisateur fait tous ses choix... liste, case à cocher ect.. tu peux afficher un résultat dans un textbox pour info..

                Apres, 2 solutions :
                soit un bouton 'Envoie dans xl avec ce code dedans :

                ActiveCell.Value = Tresultat.value ' met à jour la cellule où il a dbl cliqué
                unload me 'quitte form

                ou

                dans tresultat change :

                Private Sub Tresultat_Change()
                ActiveCell.Value = Tresultat.Value

                End Sub
                mais la.. a chaque changement de résultat, il met à jour la cellule.. ce qui peut etre embettant si le résultat change pour chaque choix de l utilisateur
                1. J'ai pris la 1ere solution et tout marche correctement.
                  je te remercie beaucoup.

                  Bonne journée a toi, merci encore