XL 2021 Incompatibilité de type avec un userform

Tom_des

XLDnaute Nouveau
Bonjour,

je suis en train d'écrire un code où quand je double clique sur un cellule celle ci m'ouvre un userform dans lequel le 1er textbox me permet de rentrer un nouveau commentaire et dans un 2nd j'ai la liste de tous les anciens commentaires.
Le code est le suivant :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Dim rng As Range

    Dim ws As Worksheet

    Dim uf As New UserForm1



    ' Définir la plage à surveiller

    Set ws = ThisWorkbook.Sheets("Synthesis")

    Set rng = Union(ws.Range("D25:D35"), ws.Range("I25:I35"), ws.Range("N25:N35"))



    ' Vérifier si la cellule double-cliquée est dans la plage spécifiée

    If Not Intersect(Target, rng) Is Nothing Then

        Cancel = True  ' Annuler le double-clic pour éviter l'édition directe de la cellule



        ' Afficher le UserForm

        uf.Show



        ' Mettre à jour la cellule avec le nouveau commentaire

        Dim newComment As Variant

        Dim existingComments As Variant

      

        ' Construire le nouveau commentaire avec la date, prénom et nom de l'utilisateur

        newComment = Format(Now(), "dd/mm/yyyy") & " - " & Left(Application.UserName, 1) & Mid(Application.UserName, InStr(Application.UserName, " ") + 1, 2) & " - " & uf.TextBox1.Text

      

        ' Récupérer les commentaires existants de la cellule

        existingComments = Target.Value

      

        ' Mettre à jour les commentaires dans la cellule

        Target.Value = newComment

      

        ' Mettre à jour les commentaires dans le UserForm

        uf.TextBox2.Text = existingComments & vbCrLf & newComment

    End If

End Sub

Cependant j'ai un eurreur de type sur cette ligne : uf.TextBox2.Text = existingComments & vbCrLf & newComment.

J'ai essayé de rajouter des .text, des .value et même de dimensionner mes variables en variant mais rien n'y fait.

Si vous avez des idées je suis preneur !

Merci d'avance !
 
Dernière édition:
Solution
Merci beaucoup pour le fichier.

Je souhaite les récupérées pour pouvoir consulté ce qui a été dit précédemment. Ainsi sur la cellule j'ai le dernier commentaire en date et si je double click dessus je peux en ajouter un nouveau ou consulter les anciens (pour suivre les évolutions par exemple).

Je ne savais pas que unload supprimait tout, je pensais qu'il fermait juste le fichier ... peut-être dois-je faire une sauvegarde de l'uf avant de le fermer ?
Re,
Ah oui à sa fermeture l'uf vide toutes les variables et il n'est pas possible des les "sauvegarder" sur l'uf lui-même pour les retrouver lors de la prochaine ouverture. D'après ce que vous dites, il faut que la liste des commentaires de la textbox2 soit sauvegardée en fin de...

Tom_des

XLDnaute Nouveau
Re,
"par contre ma variable target n'est plus définie. Je la définie comment" Il faut passer la cellule et sa valeur en variables public. J'ai ajouté un module "Variables"
Je vous joins le fichier.
Par contre il y a une chose que je ne comprends pas : pourquoi récupérer les valeurs ancienne et nouvelle dans le textbox2 puiqu'elles ne sont pas utilisées et qu'au Unload de l'uf elles sont vidées ? Le code n'est pas fini peut-être ? 🤔

Merci beaucoup pour le fichier.

Je souhaite les récupérées pour pouvoir consulté ce qui a été dit précédemment. Ainsi sur la cellule j'ai le dernier commentaire en date et si je double click dessus je peux en ajouter un nouveau ou consulter les anciens (pour suivre les évolutions par exemple).

Je ne savais pas que unload supprimait tout, je pensais qu'il fermait juste le fichier ... peut-être dois-je faire une sauvegarde de l'uf avant de le fermer ?
 

Bernard38

XLDnaute Nouveau
Merci beaucoup pour le fichier.

Je souhaite les récupérées pour pouvoir consulté ce qui a été dit précédemment. Ainsi sur la cellule j'ai le dernier commentaire en date et si je double click dessus je peux en ajouter un nouveau ou consulter les anciens (pour suivre les évolutions par exemple).

Je ne savais pas que unload supprimait tout, je pensais qu'il fermait juste le fichier ... peut-être dois-je faire une sauvegarde de l'uf avant de le fermer ?
Re,
Ah oui à sa fermeture l'uf vide toutes les variables et il n'est pas possible des les "sauvegarder" sur l'uf lui-même pour les retrouver lors de la prochaine ouverture. D'après ce que vous dites, il faut que la liste des commentaires de la textbox2 soit sauvegardée en fin de procédure et chargée lors de l'ouverture. Il faut donc obligatoirement passer par une sauvegarde dans une feuille Excel (par exemple appelée "Tables". Et du coup, dans ce cas, il ne sert à rien de charger le nouveau commentaire dans la textbox2 mais juste sur le fichier Excel.
Et de même j'ai remplacé la TextBox2 par une ListBox plus appropriée à cette procédure. Ci-joint fichier rectifié.
 

Pièces jointes

  • ClasseurTomDes.xlsm
    27.8 KB · Affichages: 3

Tom_des

XLDnaute Nouveau
Re,
Ah oui à sa fermeture l'uf vide toutes les variables et il n'est pas possible des les "sauvegarder" sur l'uf lui-même pour les retrouver lors de la prochaine ouverture. D'après ce que vous dites, il faut que la liste des commentaires de la textbox2 soit sauvegardée en fin de procédure et chargée lors de l'ouverture. Il faut donc obligatoirement passer par une sauvegarde dans une feuille Excel (par exemple appelée "Tables". Et du coup, dans ce cas, il ne sert à rien de charger le nouveau commentaire dans la textbox2 mais juste sur le fichier Excel.
Et de même j'ai remplacé la TextBox2 par une ListBox plus appropriée à cette procédure. Ci-joint fichier rectifié.
Tout fonctionne, merci beaucoup.

Il me reste plus qu'à trouver comment afficher les commentaires les uns en dessous des autres dans la listebox ...
 

Bernard38

XLDnaute Nouveau
Tout fonctionne, merci beaucoup.

Il me reste plus qu'à trouver comment afficher les commentaires les uns en dessous des autres dans la listebox ...
"Il me reste plus qu'à trouver comment afficher les commentaires les uns en dessous des autres dans la listebox ..." : je vous l'ai mis dans le fichier. La ListBox récupère tout ce qui est dans la colonne B de la feuille table à partir de la cellule B3. Dans le code c'est le "Me.ListBox1.additem cells(i,2)
 

Discussions similaires

Réponses
0
Affichages
265

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD