XL 2010 Intégrer le contenu d'un text box comme commentaire de la cellule active

chris6999

XLDnaute Impliqué
Bonjour

Encore un petit casse tête de fin de week end pour lequel je ne trouve pas de réponse sur les posts.

J'active un userform avec textbox à partir d'un déclencheur de type worksheet change.
Je souhaiterais incrémenter la cellule active (celle la même qui a déclenché le worksheet change) par le texte saisi dans ma zone textbox en tant que commentaire (non en tant que valeur).
J'ai créé un bouton de validation (command button) pour que cette opération se fasse.

Quoi que j'essaye je ne parviens pas à aboutir car j'ai toujours des messages d'erreur.

Je vous mets un fichier test en PJ

Merci d'avance
Cordialement
 

Pièces jointes

  • test textbox pour intégrer commentaire.xlsm
    17.2 KB · Affichages: 60

Dranreb

XLDnaute Barbatruc
Bonsoir.

Dans Feuil1 (Feuil1) :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3:B13")) Is Nothing Then
   If Target.Value <> "" Then UserForm1.Afficher Target
   End If
End Sub
Dans UserForm1 :
VB:
Option Explicit
Private Cel As Range

Public Sub Afficher(ByVal Cible As Range)
Set Cel = Cible(1, 1)
Me.Show
End Sub

Private Sub CommandButton1_Click()
Dim Com As Comment
Set Com = Cel.Comment
If Com Is Nothing Then Set Com = Cel.AddComment
Com.Text Text:=Me.TextBox1.Text
Unload Me
End Sub

Edit: Bonsoir Lone-wolf
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
La méthode Afficher peut être écrite comme ça pour récupérer lors de l'affichage le texte du commentaire s'il existe :
VB:
Public Sub Afficher(ByVal Cible As Range)
Dim Com As Comment
Set Cel = Cible(1, 1)
Set Com = Cel.Comment
If Not Com Is Nothing Then Me.TextBox1.Text = Com.Text
Me.Show
End Sub
 

jecherche

XLDnaute Occasionnel
Bonjour,

Il n'a pas été demandé qu'il n'y ait pas de pause, je ne vois pas ce que vous voulez dire.

Dans le fichier fourni par chris6999, l'option "ShowModal" du Userform1 est à True. Du coup, le code arrête.
Si on place l'option "ShowModal" du Userform1 à False, ton code fonctionne correctement.
C'est ce que je veux dire ....




Jecherche
 

Dranreb

XLDnaute Barbatruc
Mon code fonctionne correctement avec la propriété ShowModal du UserForm à True.
Mais on ne peut accéder à Excel pendant qu'il est affiché, ça n'a pas été demandé.
Bien sûr il faut impérativement l'afficher à l'aide de la méthode Afficher, et surtout pas Show.
 

chris6999

XLDnaute Impliqué
Bonsoir Chris

Je réédite le message: j'ai changé par l'évenement Selection_Change.

Bonjour et merci pour cette proposition très prometteuse.
Toutefois je souhaite conserver l'événement worksheet change car j'ai des conditions pour l'affichage de l'userform.
Avec sélection change ce dernier s'affiche dès que l'on clique sur la cellule.

J'ai du mal à comprendre pourquoi votre code ne fonctionne pas avec worksheet change.

Je vais continuer à creuser
Merci encore et bonne soirée
 

Dranreb

XLDnaute Barbatruc
Pour ma part je l'ai gardé, avec les conditions qu'il y avait (la cellule changée doit appartenir à B3:B13)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3:B13")) Is Nothing Then
   If Target.Value <> "" Then UserForm1.Afficher Target
   End If
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Bonjour chris

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3:B13")) Is Nothing Then
UserForm1.Show
Target.Offset(0, 0).Activate
If IsEmpty(ActiveCell) Then ActiveCell.Comment.Delete
End If
End Sub

Si tu utilise toujours Excel 2003, il faut peut-être écrire autrement; je ne sais pas. Chez moi ça marche.
 

chris6999

XLDnaute Impliqué
Bonjour chris

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3:B13")) Is Nothing Then
UserForm1.Show
Target.Offset(0, 0).Activate
If IsEmpty(ActiveCell) Then ActiveCell.Comment.Delete
End If
End Sub

Si tu utilise toujours Excel 2003, il faut peut-être écrire autrement; je ne sais pas. Chez moi ça marche.


Bonjour

J'ai retesté et cela fonctionne nickel.
Merci encore à tous
 

Dranreb

XLDnaute Barbatruc
Je voudrais quand même bien comprendre un jour pourquoi tout le monde semble tellement réfractaire à l'écriture de méthodes dans les UserForm.
C'est pourtant la voie royale pour leur communiquer des informations juste avant affichage.
 

Discussions similaires

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley