Bonjour , j'ai un problème avec un code qui oblige de rentrer un commentaire dans une cellule :
Ce code fonctionne bien s'il est exécuté directement :
	
	
	
	
	
		
Mais si celui est exécuté juste avant le commentaire n'est pas retenu dans la cellule la première fois.
Il faut une autre action de changement pour qu'il garde enfin le commentaire !
	
	
	
	
	
		
Comment résoudre ce mystérieux phénomène ?
	
		
			
		
		
	
				
			Ce code fonctionne bien s'il est exécuté directement :
		Code:
	
	
	Private Sub Worksheet_Change(ByVal target As Range)
   Application.ScreenUpdating = False
   
   'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr   obligation de commentaire rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Dim commentaire As Variant
Dim k As Variant
If Not Intersect(target, Range("A32:C41")) Is Nothing Then
On Error Resume Next
If target = "" Then target.ClearComments
If target <> "" Then
    target.ClearComments
    target.AddComment
    
    
boucle:
   commentaire = InputBox((Now) & Chr(10) & Chr(10) & "Indiquez la cause de l'indisponibilité", "Saisie commentaire ")
If commentaire = "" Then MsgBox "Vous devez saisir obligatoirement un commentaire"
If commentaire = "" Then GoTo boucle
target.Comment.Text Text:=commentaire
        target.Comment.Text Text:=CStr(Now) & Chr(10) & Chr(10) & target.Comment.Text & Chr(10)
    lg = Len(target.Comment.Text)
    With target.Comment.Shape.TextFrame
      .Characters(Start:=1, Length:=lg).Font.Name = "Verdana"
      .Characters(Start:=1, Length:=lg).Font.Size = 10
      .Characters(Start:=1, Length:=lg).Font.Bold = True
      .Characters(Start:=1, Length:=lg).Font.ColorIndex = 1
      .Characters(Start:=lg, Length:=99).Font.ColorIndex = 1
    End With
    With target.Comment.Shape ' taille du commentaire
    .Width = 120 '
    .Height = 90
    End With
 End If
End If
'  couleur de fond commentaires
    k = Range("A30:C45")
      For Each k In ActiveSheet.Comments
        k.Shape.Fill.ForeColor.SchemeColor = 5
        k.Shape.AutoShapeType = msoShapeRoundedRectangle
      Next k
End Sub
	Mais si celui est exécuté juste avant le commentaire n'est pas retenu dans la cellule la première fois.
Il faut une autre action de changement pour qu'il garde enfin le commentaire !
		Code:
	
	
	 Sub Worksheet_Deactivate()
Dim origine As Variant
Dim j As Long
Dim Plage As Range
Dim Cel As Range
Dim Msg As String
 Set origine = ActiveSheet
Application.EnableEvents = False 'Bloque l'exécution des autres macros
Application.ScreenUpdating = False
    Sheets("ROSE").Visible = True
    With Sheets("ROSE").Select
                   COPIE_dans_OPTH 'copie les BUS dans la feuille OPTHOR
            Application.ScreenUpdating = False
        Set Plage = Range("C3:C27,H6:H30,M6:M37,R6:R39,A32:C41,H32:H41,F40:F41") 'Contrôle s'il manque des N°
        For j = 7 To 166
          Set Cel = Plage.Find(What:=Sheets("PARC").Range("C" & j), LookIn:=xlValues, LookAt:=xlWhole)
          If Cel Is Nothing Then
            Msg = Msg & ", " & Sheets("PARC").Range("C" & j)
          End If
         Next j
          If Len(Msg) > 0 Then
            Application.ScreenUpdating = True
            Sheets("ROSE").Activate
            MsgBox " Attention il manque les N° suivants :   " & Mid(Msg, 3) & Chr(10) & Chr(10) & "   Veuillez les postionner dans la feuille de remisage avec un commentaire s'ils sont indisponible", vbInformation + vbOKOnly
            If Len(Msg) > 0 Then Exit Sub
                    
          End If
          
 
          
        End With
Application.EnableEvents = False 'Bloque l'exécution des autres macros
origine.Select
Application.EnableEvents = True 'Remet l'exécution des autres macros
        
End Sub
	Comment résoudre ce mystérieux phénomène ?
			
				Dernière édition: