Commentaire dans cellules grace à VBA

Résolu
elglouton Messages postés 197 Statut Membre -  
elglouton Messages postés 197 Statut Membre -
Bonjour,

Je souhaiterais savoir si il est possible d'effectuer un remplacement des cellules sous forme de commentaire.
Je m'explique Eriiic m'a beaucoup pour ce classeur Excel et il me reste le final
Voici un exemple

http://www.cijoint.fr/cjlink.php?file=cj201102/cija7Hzr15.xlsm

Et voici le debut du sujet https://forums.commentcamarche.net/forum/affich-20663483-remplacer-a-partir-d-un-tableau-excel#p20835700

Espérant avoir des réponses Merci par avance

1 réponse

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Regarde si ça convient :
    Sub Commentaires() 
    ' pour chaque cellule de la sélection, 
    ' traduit à l'aide des abréviations de 'Abrev' 
    ' et met la traduction en commentaire. 
    ' Pas d'ajout ou modification de commentaire si aucune traduction n'a eu lieu. 
    ' Retour à la ligne forcé sur "et", "ou" 
        Dim shAbrev As Worksheet, c As Range, ch As Variant 
        Dim i As Long, j As Long, comment As String, ok As Boolean 
        Set shAbrev = Worksheets("Abrev") 
        derlig = shAbrev.[A65536].End(xlUp).Row 
        For Each c In Selection 
            comment = "" 
            ok = False 
            ' traduire 
            ch = Split(c.Value, " ") 
            For i = 0 To UBound(ch) 
                If Len(ch(i)) > 1 Then 
                    j = 0 
                    On Error Resume Next 
                    j = shAbrev.Range("A1:A600").Find(What:=ch(i), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Row 
                    On Error GoTo 0 
                    If j <> 0 Then 
                        ch(i) = shAbrev.Range("B" & Application.WorksheetFunction.Match(ch(i), shAbrev.Range("A1:A600"), 0)) 
                        ok = True 
                    End If 
                End If 
                If (ch(i) = "et" Or ch(i) = "ou") And comment <> "" Then comment = comment & vbCrLf 
                comment = comment & " " & ch(i) 
            Next i 
            ' ajouter commentaire 
            If ok Then 
                On Error Resume Next 
                c.AddComment 
                On Error GoTo 0 
                c.comment.Visible = False 
                c.comment.Text Text:=comment 
                c.comment.Shape.Width = 300 'largeur commentaire 
                c.comment.Shape.Height = 90 'hauteur commentaire 
            End If 
        Next c 
    End Sub

    Commentaires.xlsm
    macro 'Commentaires' mise dans le module1

    eric

    Edit: on pourrait aussi prévoir un retour à la ligne forcé avant un élément traduit s'il est supérieur à une certaine taille (?)
    1
    1. elglouton Messages postés 197 Statut Membre 1
       
      Tu es le meilleur Msieu Eriiic c'est exactement ce qu'il me fallais.
      Juste deux petites chose est-ce possible que la fenêtre s'adapte a son contenu
      et a chaque saut de ligne forcé apparait un petit carré est-ce possible de ne pas le voire.
      Merci encore
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      est-ce possible que la fenêtre s'adapte a son contenu
      Ca serait faisable (?) mais long et compliqué car la mise en page est faite automatiquement en fonction de la police choisie et de sa taille. Je verrais peut-être plus tard mais sur les jours à venir j'aurais d'autres préoccupations.
      a chaque saut de ligne forcé apparait un petit carré est-ce possible de ne pas le voir
      Je n'ai pas ce petit carré...
      As-tu changé la police des commentaires ? J'ai Tomaha Normal taille 9
      Essaie en remplaçant vbCrLF par vbLF

      eric
      0
    3. elglouton Messages postés 197 Statut Membre 1
       
      Merci
      C'est parfait le remplacement de vbCrLF par vbLF a fonctionner
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      en rusant un peu une proposition pour la taille des commentaires :
      Commentaires.xlsm
      Tu peux fixer la largeur maximale des commentaires en changeant le paramètre :
      UserForm1.TextBox1.Width = 300

      Ne pas supprimer le UserForm1 même s'il n'est pas appelé.

      eric
      0
    5. elglouton Messages postés 197 Statut Membre 1
       
      Oki je comprend pas ce nouvel artefact mais ça me va merci je clos le sujet reponse rapide et parfaite comme toujours .
      Encore Merci
      0