J'ai bien bossé sur les commentaires...

Philippe

XLDnaute Occasionnel
Chers amis,

suite aux posts récents sur les mises en forme de commentaire et à un de mes anciens posts,

Lien supprimé

j'ai étudié, compilé, cogité, fumé par les oreilles( on se serait cru sur le toit de la chapelle Sixtine) et j'ai pondu la démo qui suit, dont je ne suis pas peu fier (comme l'indique sans ambiguité le titre de mon post)... :) :silly: :) :p

Il s'agit de générer des commentaires qui se complètent automatiquement à chaque saisie, avec une coloration différente pour chaque ajout...

Pour Thierry (si tu lis ce post), j'ai essayé d'écrire PROPREMENT ;)
[file name=COLORIER COMMENTAIRE_20050420145000.zip size=14182]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/COLORIER COMMENTAIRE_20050420145000.zip[/file]
 

Pièces jointes

  • COLORIER COMMENTAIRE_20050420145000.zip
    13.8 KB · Affichages: 19

Ashaar

XLDnaute Junior
Bonjour,

Dans ta feuille Excel, l'endroit ou l'on saisi va de G6 à I7 (cellules fusionnée).

Dans ton code (Worksheet_Change), seul G6 est pris en compte.

Ne faudrait'il pas changer :
If Target.Address <> '$G$6' Then Exit Sub
en
If Target.Address <> '$G$6:$I$7' Then Exit Sub ?

Cdlt
 

Philippe

XLDnaute Occasionnel
Bonsoir Ashaar,

lorsqu'une cellule est fusionnée, elle prend l'adresse de la cellule en haut et à gauche de la plage avant fusion, l'adresse dans le code est donc exacte, la routine fonctionne parfaitement d'ailleurs.... a moins que tu n'aies constaté une anomalie ??

En tous cas chez moi ça fonctionne...
 

Ashaar

XLDnaute Junior
Re,

Chez moi ça plante.

Quand je passe en débogage, un Debug Print Target.Address me renvoit : '$G$6:$I$7'.

Comme la comparaison se fait sur $G$6 Excel me bascule directement sur le Exit Sub.

Cela vient peut être de ma version Excel : NT - Xl97, Vais me l'envoyer à la maison pour tester sous xp.

En tout cas un grand bravo pour cette réalisation, c'est sympa en diable.
 

pat1545.

XLDnaute Accro
Salut,
à mon avis il est toujours mauvais de fusionner des cellules !!

Essaie un lien en B1 vers un autre fichier et fusionne A1 avec D1, tu verras que le lien est impossible à retrouver !!!



Patrick


Dans ta feuille Excel, l'endroit ou l'on saisi va de G6 à I7 (cellules fusionnée).
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir José, Philippe, Patrick, Ashaar, le Forum

Je profite de l'acquisition d'un PC tout neuf, pour installer Office 97, puis 2000, puis 2003... Comme ça je serai apte à tout tester !

Donc je viens de finir l'install de la version 97 et je confirme bien que ce que dit Ashaar est tout à fait correcte. Aucune réaction à l'évènementielle si on ne lui indique pas la plage :

If Target.Address <> '$G$6:$I$7' Then Exit Sub

Vu que c'est un PC avec 360 GB, Je vais tenter expérience d'installer les trois versions d'Office conjointement pour voir un peu avant de publier des démos... Quelqu'un a t'il déjà essayé d'avoir plusieurs version d'Office sur la même machine ?

Sinon j'ai aussi regardé ton code Philippe, une fois que j'en aurai fini avec les installation, je repasserai pour te conseiller deux trois trucs.

En attendant votre avis m'interresse pour du Multi-Version d'Office.

Merci d'avance
@+Thierry
 

Philippe

XLDnaute Occasionnel
Bonsoir josé et aux autres,

OK message reçu, leçon du jour: 'les cellules point tu ne fusionneras...' Je retiens pour l'avenir.

Voici donc la V.2 de ma démo qui cette fois devrait fonctionner sous toutes les versions d'excel... [file name=COLORIER COMMENTAIRE 2_20050420213032.zip size=13922]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/COLORIER COMMENTAIRE 2_20050420213032.zip[/file]
 

Pièces jointes

  • COLORIER COMMENTAIRE 2_20050420213032.zip
    13.6 KB · Affichages: 24

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Pat

merci beaucoup, alors OK C'est parti !!!

Je reviendrai te (vous) dire....En fait si je fais çà c'est vraiment pour XLD car perso Excel 97 je ne bosse plus avec depuis au moins trois ou quatre ans !

Mais que ne ferait-on pas pour faire au mieux pour être XLD-Compliant !!!

alors @ plus et merci

@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Pat, José, Philippe, Ashaar, le Forum

Bon alors no 'sushy' pour avoir les 3 versions d'Office (97/2000/2003) sur la même bécane, mis à part Outlook, mais c'est tout à fait logique.

Donc en direct d'Excel 2003, j'ai un peu remanié ton code Philippe afin d'éviter tous ces 'Horribles Goto' (voir le fil à ce sujet)

Par contre j'utilise la Fonction Split totalement inexistante sous Excel 97, on pourrait boucler sur le Len avec 'Instr' pour contruire un Tableau équivalent pour Excel 97 au cas o&ugrave;.

Bon voici ce que je propose, et tout d'abord note bien 'Option Explicit' en Top de Module qui t'aurait obligé à déclarer toutes tes variables (Deb & Part)...

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim SuitComment As String, AncienComment As String, NouvComment As String
Dim Pos As Integer, Tour As Integer, Deb As Integer, Part As Integer
Dim i As Integer
Dim TabComment As Variant

Tour = 3
'pour démarrer en ColorIndex en Rouge (ni noir ni blanc)

If Target.Address <> '$G$6' Then Exit Sub
&nbsp; &nbsp; SuitComment = Range('G6').Value
&nbsp; &nbsp;
If SuitComment = '' Then Exit Sub

&nbsp; &nbsp; &nbsp; &nbsp;
On Error Resume Next 'si il n'y a pas de Commentaire
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AncienComment = Range('F15').Comment.Text
&nbsp; &nbsp; &nbsp; &nbsp;
On Error GoTo 0
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If AncienComment <> '' Then AncienComment = AncienComment & Chr(10)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NouvComment = AncienComment & SuitComment & Chr(160)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
With Range('F15')
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
On Error Resume Next 'si il y a déjà un Commentaire
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .AddComment
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
On Error GoTo 0
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
With .Comment
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Text Text:=NouvComment
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Visible =
True
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Shape.OLEFormat.Object.Font.Bold =
True
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Shape.TextFrame.AutoSize =
True
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Shape.Fill.ForeColor.RGB = RGB(217, 217, 235)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End With
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End With
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabComment = Split(NouvComment, Chr(160))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
For i = 0 To UBound(TabComment) - 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Pos = Pos + Part
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Part = Len(TabComment(i)) + 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Range('F15').Comment.Shape.TextFrame.Characters(Pos + 1, Part).Font.ColorIndex = Tour
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tour = Tour + 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Next
End Sub


Bonne Journée
@+Thierry
 

Zon

XLDnaute Impliqué
Salut à tous,

Thierry, tu risques à avoir des soucis un de ces 4 (surtout avec de l'automation) , à moins que tu es créé plusieurs partitions avec pour chacune un OS différent...

Voici un version de split pour excel 97

Function SplitZon97(ByVal Ch$, Sep$)
&nbsp;
Dim Pos&, PosS&, T(), I&
&nbsp; &nbsp; Pos = 1
&nbsp; &nbsp;
Do
&nbsp; &nbsp; &nbsp; PosS = InStr(Pos, Ch, Sep)
&nbsp; &nbsp; &nbsp;
ReDim Preserve T(I)
&nbsp; &nbsp;
On Error Resume Next
&nbsp; &nbsp; &nbsp; T(I) = Mid(Ch, Pos, PosS - Pos)
&nbsp; &nbsp;
If Err <> 0 Then
&nbsp; &nbsp; &nbsp; Pos = Pos - 1
&nbsp; &nbsp; &nbsp; T(I) = Right(Ch, Len(Ch) - Pos)
&nbsp; &nbsp; &nbsp;
Exit Do
&nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; Pos = PosS + 1
&nbsp; &nbsp; &nbsp; I = I + 1
&nbsp; &nbsp;
Loop While PosS > 0
&nbsp; SplitZon97 = T
&nbsp;
End Function

On peut supprimer les error on goto 0 ainsi que le 2 eme on error resume next puisque tu ne récupéres pas le n° d'erreur dans le cas présent.
Pour faire un peu plus court:
NouvComment = iif(AncienComment<>'',AncienComment & chr(10),'') & SuitComment & Chr(160)

Enfin les colorindex s'arretent à 54 donc il faut réinitiliser Tour
tour=iif(tour>54, 3,tour+1)

A+++
 

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonsoir Philippe, Patrick, Ashaar, José, Thierry & Zon

En voilà une bien belle démo. A force, je trouve que ce forum s'embelli de jour en jour de démos plus chatoyantes et utiles les une que les autres. Je le dit et le redit, ce forum devient Le Forum de Référence.
@micalement et bonne continuation. ;)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Zon, José, Eric, le Fil, le Forum

Arf, Zon tu me fais peur alors !!! Enfin c'est pas trop grave, c'est une machine pour le Fun, puisque c'est un kdo perso pour bibi que je me suis fait, c'est pas du matos pro. Mais je vous tiendrais au courant de ce qu'il en advient.

Pour l'instant, ça à l'air de tourner avec les trois sur C: mais si j'ai un souci, alors tampi pour les veilles versions, j'ai encore un PIII pour Office 2000...

Sinon merci pour ta Fonction pour Excel 97, moi j'avais la flème, avec mon Split !!!

Pour ce qui est des Resume Next, j'ai simplement repris le code de Philippe, mais tu as raison pour le second, il est inutile, en plus c'est moi qui l'ai rajouté, car au début je l'avais déplacé pour le '.AddComment ' seulement, puis j'ai planté sur le AncienComment = Range('F15').Comment.Text , finalement faudrait faire comme Ti m'avait conseillé dans une autre démo 'louf' sur les commentaires, avec un simple If Comment Is Nothing...

Pour ce qui est du ColorIndex, oui ça j'ai vu mais j'ai laissé :whistle: , disons Zon (mdr Dis ZonZon lol) que que tu as toujours un oeil pour un travail propre et complet, c'est bien.

Enfin donc Philippe a de quoi faire maintenant ;)

Merci à vous pour vos conseils pour mon Multi-Office-Versions.

Bonne Soirée
@+Thierry
 

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 082
dernier inscrit
Narlock