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

Microsoft 365 Edition d'une note

Francky79

XLDnaute Occasionnel
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: 17
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
Target.Comment.Text Text:="Quantité en Cde" &...

Robert

XLDnaute Barbatruc
Repose en paix
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 Occasionnel
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
Repose en paix
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 Occasionnel
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 Occasionnel
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
Inactif
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
Inactif
@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
Inactif
Bonsoir Francky,



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

soan
 

Discussions similaires

Réponses
1
Affichages
285
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…