Commentaire conditionnel

Bonjour à tous,

Je cherche à créer une macro qui m'ajoute un commentaire. Ma base est celle ci :

Sub test2()

With Range("W2")
    .AddComment
    .Comment.Visible = False
    .Comment.Text Text:=Worksheets("relevé encodages").Range("D2").Value & Chr(10) & Worksheets("relevé encodages").Range("G2").Value & Chr(10) & Worksheets("relevé encodages").Range("I2").Value

    With Range("W2").Comment.Shape
        .TextFrame.AutoSize = True
        .OLEFormat.Object.Font.Size = 10 'Taille du texte
        .OLEFormat.Object.Interior.ColorIndex = 33 'Couleur de fond
        .TextFrame.Characters.Font.ColorIndex = 11 'Couleur de la police
        .TextFrame.Characters.Font.Bold = False 'Gras ou non
        .OLEFormat.Object.Font.Name = "Bangle" 'Type de police
End With
End With
End Sub

Ca fonctionne, mais, il me manque 3 choses :

* Ce que je cherche à obtenir c'est que ce commentaire soit soumis à condition, c'est à dire que le commentaire ne doit se mettre que si

La cellule L2 de ma feuille "relevé encodages" est égale à la cellule L7 de ma feuille "TM"

ET

La cellule H2 de ma feuille "relevé encodages" est égale à la cellule C7 de ma feuille "TM"

Si ces 2 conditions ne sont pas remplies il ne faut pas de commentaire

* Je peux avoir plusieurs résultats conditionnels VRAI, où les deux conditions sont remplies plusieurs fois, auquel cas le commentaire doit alors reprendre tous les résultats VRAI

* Et plutot que de se mettre uniquement en W2, le commentaire doit pouvoir se mettre sur toutes les cellules de ma colonne W

Un fichier valant mieux que de grands discours, le voici en pièce jointe. J'ai indiqué dans la première cellule concernée de la colonne W le résultat auquel j'essaie de parvenir

Merci beaucoup, bonne après midi

Lorence

16classeur2.xlsm (239.01 Ko)

Voici où j'en suis, par contre il ne se passe rien

Sub test3()

For i = 7 To Range("W" & Rows.Count).End(xlUp).Row

If Worksheets("TM").Range("B" & i) = Worksheets("relevé encodages").Range("L") And Worksheets("TM").Range("C" & i) = Worksheets("relevé encodages").Range("H") Then
With Range("W7")
    .AddComment
    .Comment.Visible = False
    .Comment.Text Text:=Worksheets("relevé encodages").Range("D").Value & Chr(10) & Worksheets("relevé encodages").Range("G").Value & Chr(10) & Worksheets("relevé encodages").Range("I").Value

    With Range("W").Comment.Shape
        .TextFrame.AutoSize = True
        .OLEFormat.Object.Font.Size = 10 'Taille du texte
        .OLEFormat.Object.Interior.ColorIndex = 33 'Couleur de fond
        .TextFrame.Characters.Font.ColorIndex = 11 'Couleur de la police
        .TextFrame.Characters.Font.Bold = False 'Gras ou non
        .OLEFormat.Object.Font.Name = "Bangle" 'Type de police

End With
End With
End If

Next
End Sub

il me manque encore, ben que ça fonctionne, et comment résoudre la situation où plusieurs résultats sont vrais

Bonjour Lorence, le forum,

Juste en jetant un petit coup d’œil à ton code, je relève quelques manquements:

If Worksheets("TM").Range("B" & i) = Worksheets("relevé encodages").Range("L") And Worksheets("TM").Range("C" & i) = Worksheets("relevé encodages").Range("H") Then

Quelle ligne pour L ?

Quelle ligne pour H ?

  .Comment.Text Text:=Worksheets("relevé encodages").Range("D").Value & Chr(10) & Worksheets("relevé encodages").Range("G").Value & Chr(10) & Worksheets("relevé encodages").Range("I").Value

Quelle ligne pour D ?

Quelle ligne pour G ?

Quelle ligne pour I ?

Cordialement,

J'ai essayé plusieurs écritures

la seule qui fonctionne dans mes essais c'est

If Worksheets("TM").Range("B7") = Worksheets("relevé encodages").Range("L2") And Worksheets("TM").Range("C7") = Worksheets("relevé encodages").Range("H2") Then
With Range("W7")
.AddComment
.Comment.Visible = False
.Comment.Text Text:=Worksheets("relevé encodages").Range("D2").Value & Chr(10) & Worksheets("relevé encodages").Range("G2").Value & Chr(10) & Worksheets("relevé encodages").Range("I2").Value

Mais du coup je cherche comment faire la boucle sur chaque cellule de ma colonne W

J'ai essayé aussi, H2:H ou H2:H10000 mais sans succès

Re,

Pas certain d'avoir compris le besoin, un essai à tout hasard...à partir de tes codes...

Sub essai()
 Dim dl%, derlig%, shTM As Worksheet, shRE As Worksheet, msg As String
   Set shTM = Sheets("TM")
   Set shRE = Sheets("relevé encodages")
         dl = shTM.Range("A" & Rows.Count).End(xlUp).Row
     derlig = shRE.Range("B" & Rows.Count).End(xlUp).Row

     shTM.Range("W7:W" & derlig).ClearComments

Application.ScreenUpdating = False

 For i = 7 To dl
  For j = 2 To derlig
   If shTM.Range("B" & i) = shRE.Range("L" & j) And shTM.Range("C" & i) = shRE.Range("H" & j) Then
    msg = msg & Chr(10) & shRE.Range("D" & j).Value & " - " & shRE.Range("G" & j).Value & " - " & shRE.Range("I" & j).Value
   End If
  Next j
   If msg <> "" Then
    With shTM.Range("W" & i)
    .AddComment
    .Comment.Visible = False
    .Comment.Text Text:=msg
     With .Comment.Shape
     .TextFrame.AutoSize = True
     .OLEFormat.Object.Font.Size = 10 'Taille du texte
     .OLEFormat.Object.Interior.ColorIndex = 33 'Couleur de fond
     .TextFrame.Characters.Font.ColorIndex = 11 'Couleur de la police
     .TextFrame.Characters.Font.Bold = False 'Gras ou non
     .OLEFormat.Object.Font.Name = "Bangle" 'Type de police
     End With
    End With
   End If
   msg = ""
 Next i
 Set shTM = Nothing: Set shRE = Nothing
End Sub

[EDIT] : le fichier...la macro se nomme Essai

10lorence.xlsm (249.33 Ko)

Cordialement,

Salut Lorence,
Salut Xorsankukai,

devrait ressembler à ceci...
La macro de mise à jour des commentaires se déclenche à l'activation de la feuille 'TM'

Private Sub Worksheet_Activate()
'
Dim sWkRE As Worksheet, rCel As Range, tTab, sComm$
'
Application.ScreenUpdating = False
Set sWkRE = Worksheets("Relevé encodages")
tTab = sWkRE.Range("A2:L" & sWkRE.Range("B" & Rows.Count).End(xlUp).Row).Value
'
For x = 7 To Range("B" & Rows.Count).End(xlUp).Row
    sAM = Range("B" & x).Value
    sCl = Range("C" & x).Value
    Range("W" & x).ClearComments
    Set rCel = Range("W" & x)
    sComm = ""
    For y = 1 To UBound(tTab, 1)
        If tTab(y, 12) = sAM And sCl = tTab(y, 8) Then _
            sComm = sComm & IIf(sComm = "", "", Chr(10)) & tTab(y, 4) & " - " & tTab(y, 7) & " - " & tTab(y, 9)
    Next
    If sComm <> "" Then Call CommCHGT(rCel, sComm)
Next
'
Application.ScreenUpdating = True
'
End Sub
14lorence.xlsm (242.99 Ko)


A+

Bonjour Curulis57,

La classe comme toujours, tu es déconcertant de facilité,

Mais je suis ravi de constater que j'obtiens bien le même résultat,

Amitiés,

OMG

Curulis57, tu veux bien m'épouser ?

Vous allez me faire rougir, grands sots !!!

Rougis, rougis.

Tu peux, je suis admirative.

Je crois que Xor est candidat !
Après tout, il est tout aussi efficace et lui, c'est un héros !


A+

Les garçons,

Je reviens vers vous pour un petit complément ;)

Je suis repartie du code pour créer encore autre chose, qui pars d'une source de donnée différente mais dans un but similaire.

Dans le fichier ci joint, il y a un onglet " Relevé TM", de ce relevé je tente d'imputer dans les bonnes colonnes et lignes de l'onglet TM l'addition des valeurs correspondantes au titre, ainsi que les commentaires reprenant la date, le nombre et le statut

Par exemple, la première ligne de l'onglet Relevé TM = DE CANNIERE, CHIMBRU Maria, 7, 12-2021-TE, je voudrais que ce 7 soit repris en cellule TM/C130, qui correspond à CHIMBRU comme AM et DE CANNIERE comme client et en commentaire "mercredi 8 décembre 2021 - 7 - Partiellement remboursée"

J'ai tenté d'y parvenir en avec un =SI('Relevé TM'!N:N=T$2;SOMME.SI.ENS('Relevé encodages'!G:G;'Relevé encodages'!H:H;TM!C7;'Relevé encodages'!L:L;TM!B7);"")

mais j'obtiens un EPARS

Je ne suis pas sure d'être claire :) Voici le fichier en PJ ;)

J'ai trouvé, merci ;)

Rechercher des sujets similaires à "commentaire conditionnel"