Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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

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
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
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
269
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…