Commentaire dans cellules grace à VBA

Résolu/Fermé
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 - Modifié par elglouton le 12/02/2011 à 22:36
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 - 13 févr. 2011 à 19:20
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

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 13/02/2011 à 11:39
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
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
13 févr. 2011 à 12:13
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
13 févr. 2011 à 13:39
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
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
13 févr. 2011 à 14:38
Merci
C'est parfait le remplacement de vbCrLF par vbLF a fonctionner
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
13 févr. 2011 à 16:14
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
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
13 févr. 2011 à 19:20
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