Microsoft 365 Edition d'une note

Francky79

XLDnaute Junior
Bonjour à tous,

Je voudrais éditer une note par macro en cliquant dans la cellule.
J'utilise le code ci-dessous, mais problème, le pavé numérique s'allume ou s'éteint avec ce code ??

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Target.Comment Is Nothing Then
SendKeys "%im"
End If
End Sub

Voir fichier joint,

Merci de votre aide,
 

Pièces jointes

  • Commentaires.xlsm
    22.5 KB · Affichages: 6
Solution
Re,

En passant par une InputBox. Essaie l'événementielle ci-dessous :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)

Cancel = True 'empêche le mode [Édition] lié au double-clic
BE = Application.InputBox("Quantité en Cde", "Commentaire") 'déninit la boîte d'entrér BE
If Not Target.Comment Is Nothing Then 'condition : si la cellule contient déjà un commentaire
    If BE = False Then Exit Sub ' si bouton [Annuler], sort de la procédure
    Target.Comment.Delete 'efface l'ancien commentqire
End If 'fin de la condition
Target.AddComment 'ajoute un commentaire...

Robert

XLDnaute Barbatruc
Bonjour Francky, bonjour le forum,

C'est le problème récurrent de SenKeys. Tu peux utiliser : Bouton droit de la souris et l'option Insérer un commentaire ou, Bouton droit de la souris, [m], [Entrée]. C'est sûr, c'est plus long...
 

Francky79

XLDnaute Junior
Merci Robert,

j'ai essayé de modifier le code pour avoir le même résultat avec un double click dans la cellule,
Mais je pense ne pas être assez doué.

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

If Not Target.Comment Is Nothing Then

End If
End Sub

Il y a t'il un moyen de le faire fonctionner ?
 

Robert

XLDnaute Barbatruc
Re,

En passant par une InputBox. Essaie l'événementielle ci-dessous :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)

Cancel = True 'empêche le mode [Édition] lié au double-clic
BE = Application.InputBox("Quantité en Cde", "Commentaire") 'déninit la boîte d'entrér BE
If Not Target.Comment Is Nothing Then 'condition : si la cellule contient déjà un commentaire
    If BE = False Then Exit Sub ' si bouton [Annuler], sort de la procédure
    Target.Comment.Delete 'efface l'ancien commentqire
End If 'fin de la condition
Target.AddComment 'ajoute un commentaire
Target.Comment.Text Text:="Quantité en Cde" & Chr(10) & "=  " & BE ' texte du commentaire
Target.Offset(1, 0).Select 'déplace le curseur
Target.Select 'replace le curseur
End Sub
 

Francky79

XLDnaute Junior
Bonjour Robert,

j'essaye de rajouter un bout de code pour autoriser le double click que sur une plage de cellules,
de E5 à E200

If Not Intersect(Target, Range("E5:E200")) Is Nothing Then

Mais évidement je n'arrive pas à le faire marcher.
Si tu peux faire quelque chose pour moi ?

Merci d'avance,
 

Francky79

XLDnaute Junior
Bonjour à tous,

J'essaye de modifier le code pour qu'il s'exécute seulement en E5:E200 mais pas de sucés.

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
'ActiveCell.AddComment 'Ajout un Commentaire
Cancel = True 'empêche le mode [Édition] lié au double-clic
BE = Application.InputBox("Quantité en Cde", "Commentaire") 'déninit la boîte d'entrér BE
[B]If Target.Count > 1 Then Exit Sub
  If Not Intersect(Target, Range("E5:E200")) Is Nothing Then
End If[/B]
If Not Target.Comment Is Nothing Then 'condition : si la cellule contient déjà un commentaire
    If BE = False Then Exit Sub ' si bouton [Annuler], sort de la procédure
    Target.Comment.Delete 'efface l'ancien commentqire
End If 'fin de la condition
Target.AddComment 'ajoute un commentaire
Target.Comment.Text Text:="Quantité en Cde" & Chr(10) & "=  " & BE ' texte du commentaire
Target.Offset(1, 0).Select 'déplace le curseur
Target.Select 'replace le curseur
With ActiveCell.Comment.Shape
        .Width = 110 'Largeur commentaire
        .Height = 60 'Hauteur
        .OLEFormat.Object.Font.Size = 12 'Taille du texte
        .OLEFormat.Object.Interior.ColorIndex = 34 'Couleur de fond
        .TextFrame.Characters.Font.ColorIndex = 11 'Couleur de la police
        .TextFrame.Characters.Font.Bold = True 'Ecriture gras
        .OLEFormat.Object.Font.Name = "Bangle" 'Type de police
    End With
End Sub

Si quelqu'un peut m'aider ?

Merci,
 

soan

XLDnaute Barbatruc
Bonjour Francky,

je te propose ce code VBA :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
  With Target
    If .CountLarge > 1 Then Exit Sub
    If Intersect(Target, [E5:E200]) Is Nothing Then Exit Sub
    Cancel = True 'empêche le mode [Édition] lié au double-clic
    Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
    BE = Application.InputBox("Quantité en Cde", "Commentaire") 'définit la boîte d'entrée BE
    If BE = False Then Exit Sub 'si bouton [Annuler], sort de la procédure
    'condition : si la cellule contient déjà un commentaire, alors efface celui-ci
    If Not .Comment Is Nothing Then .Comment.Delete 'efface l'ancien commentaire
    .AddComment 'ajoute un commentaire
    .Comment.Text "Quantité en Cde" & Chr$(10) & "=  " & BE 'texte du commentaire
    With .Offset(1).Comment.Shape
      .Width = 110 'Largeur commentaire
      .Height = 60 'Hauteur
      With .OLEFormat.Object
        .Interior.ColorIndex = 34 'Couleur de fond
        .Font.Name = "Bangle" 'Type de police
        .Font.Size = 12 'Taille du texte
      End With
      With .TextFrame.Characters.Font
        .ColorIndex = 11 'Couleur de la police
        .Bold = True 'Ecriture gras
      End With
    End With
  End With
End Sub

soan
 

soan

XLDnaute Barbatruc
@Francky79

autre écriture possible (sans les nombreux commentaires) :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If Intersect(Target, [E5:E200]) Is Nothing Then Exit Sub
    Cancel = True
    Dim BE: BE = Application.InputBox("Quantité en Cde", "Commentaire")
    If BE = False Then Exit Sub
    If Not .Comment Is Nothing Then .Comment.Delete
    .AddComment: .Comment.Text "Quantité en Cde" & Chr$(10) & "=  " & BE
    With .Offset(1).Comment.Shape
      .Width = 110: .Height = 60
      With .OLEFormat.Object
        .Interior.ColorIndex = 34: .Font.Name = "Bangle": .Font.Size = 12
      End With
      With .TextFrame.Characters.Font
        .ColorIndex = 11: .Bold = True
      End With
    End With
  End With
End Sub

soan
 

soan

XLDnaute Barbatruc
Bonsoir Francky,

Image.jpg


merci pour ton retour. :)

merci aussi d'avoir indiqué que tu as trouvé toi-même la solution. 😁 😜

nan, mais t'inquiètes pas : comme j'ai posté à la fois mon post #8 et mon post #9, j'comprends très bien que du coup, tu n'as pas su lequel des 2 cocher comme solution ; alors tant qu'à faire, tu as coché comme solution ton propre post #10. 😄 (c'est tout naturel, n'est-ce pas ? :rolleyes:)

soan
 

Discussions similaires

Statistiques des forums

Discussions
286 621
Messages
1 877 549
Membres
160 769
dernier inscrit
Yudlo
Haut Bas