TextBox sans texte lors du premier double clic avec l'évènement DoubleClick

Bonjour,

J'ai utilisé le code suivant avec l'évènement DoubleClick pour avoir la variable Somme qui apparait dans le TextBox de mon UserForm.

Cela ne marche pas à chaque première fois que je vais dans une nouvelle Feuille. Autrement cela marche. Pouvez-vous m'aider?

Le zéro n'apparait pas aussi dans la somme (exemple:213,6 € au lieu de 213,60 €)

D'avance merci,

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Somme As Variant
Somme = Feuil1.Range("E36").Value
UserForm1.Show

UserForm1.TextBox1.Value = "Le solde est de " & Somme & " €"
UserForm1.TextBox1.AutoSize = True
End Sub

Bonjour Jeanmickey, le forum,

Si j'ai bien compris, au double-clic, quelque soit la feuille active, tu souhaite afficher un Userform avec une Textbox qui indique la valeur de la cellule E36 de la feuille 1 ?

A tester....

Dans le code du Userform:

Private Sub UserForm_Initialize()
 Dim Somme As Variant
  Somme = Format(Sheets("Feuil1").Range("E36").Value, "# ### ##0.00 €")
   Me.TextBox1.Value = "Le solde est de " & Somme
   Me.TextBox1.AutoSize = True
End Sub

Dans le module Thisworkbook:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  UserForm1.Show
End Sub

Cordialement,

Bonjour,

La procédure "Worksheet_BeforeDoubleClick" n'est applicable que dans la feuille où elle est placée. Tu peux la copier dans chaque feuille mais il est plus simple d'utiliser la procédure "Workbook_SheetBeforeDoubleClick" au niveau du classeur (ThisWorkbook).

Dans ta procédure, tu fais référence à la feuille 1 (Feuil1), donc si tu te trouves sur une autre feuille, c'est toujours la feuille 1 qui est prise en compte. A moins que tu ne veuilles que l'info de la feuille 1.

Remplace la ligne par : Somme = Activesheet.Range("E36").Value, si la feuille peut être différente.

Pour le zéro manquant, il faut ajouter un format de présentation.

UserForm1.TextBox1.Value = "Le solde est de " & Format(Somme, " # ### ##0.00 €; -# ### ##0.00 €") par exemple

Le TextBox doit être alimenté avant l'affichage du formulaire.

Enfin pour simplifier le code utilise un bloc With

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Somme As Variant
Somme = ActiveSheet.Range("E36").Value
' Peut-être vérifier si l'on est sur la bonne feuille
With UserForm1
.TextBox1.Value = "Le solde est de " & Format(Somme, " # ### ##0.00 €; -# ### ##0.00 €")
.TextBox1.AutoSize = True
.Show
End With

Unload UserForm1 ' Refermer le Form

End Sub

Bonne journée

Bonjour à tous les deux et merci pour vos réponses, mais je crois que je me suis mal fait comprendre et vous ne répondez à ma question que pour le 0 dans le textbox. Ce que j'ai fait, c'est un userform par mois userform1 et textbox1 pour le mois de janvier, userform2 et textbox2 pour le mois de février, etc. Dans ce cas, l'utilisation du ThisWorkbook est elle utile? J'ai fait 12 feuilles et 12 userform avec 12 textbox pour les douze mois de l'année. Pouvez-vous réenvisager le problème? Excusez-moi si je me suis mal fait comprendre. D'avance merci pour vos réponses. JM

Re,

Pourquoi 12 Userform ?

Un fichier peut-être ? J'ai du mal à comprendre le besoin ...

Cordialement,

Bonsoir

En effet comme le dit xorsankukai, quel intérêt de créer 12 Userforms, un seul suffit.

Si le déclencheur de l'affichage de l'userform est un double click sur une cellule d'une des 12 feuilles, alors ma proposition est suffisante.

Par contre si la cellule à afficher dans le Textbox varie il faut tester le nom de la feuille.

Comme ceci :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Somme As Variant
Select Case ActiveSheet.Name
    Case "Feuil1"
        Somme = ActiveSheet.Range("E36").Value
    Case "Feuil2"
        Somme = ActiveSheet.Range("???").Value ' Cellule concernée
    Case "...  ' Etc"

    Case Else
        ' Feuille non prévue, prévoir rejet
        GoTo Fin
End Select

With UserForm1
    .TextBox1.Value = "Le solde est de " & Format(Somme, " # ### ##0.00 €; -# ### ##0.00 €")
    .TextBox1.AutoSize = True
    .Show
End With

Fin:
Unload UserForm1 ' Referme le formulaire

End Sub

Sans fichier il est difficile de répondre à ta demande.

Bonne soirée.

Eric

Merci Eric. Je vais réfléchir à tout cela à tête reposée. Je ne suis pas programmeur. Je ne suis qu'un amateur qui s'est intéressé à Excel et à VBA seul et appliqué à Excel. Mais ce que tu me dis m'est utile. Pour organiser ma pensée et mes petits programmes. Merci encore. JM

Rechercher des sujets similaires à "textbox texte lors premier double clic evenement doubleclick"