Bonsoir Startus, Gael, _Thierry, le Forum.
Tout d'abord, MERCI
_Thierry pour l'info sur la façon de modifier le Shape sans avoir à le sélectionner. Jusqu'à ce jour, j'ai toujours échoué dans mes tentatives et j'ai fini par penser (à tort !) que c'était impossible...Sincèrement, merci pour ce tuyau. Et en ce qui concerne la déclaration de MemCell, je suis bien évidemment d'accord à 10000% avec ta remarque aussi judicieuse que mon oubli est impardonnable
(si, si... j'ai pour habitude d'être aussi pointilleux que toi pour ne pas dire ch...t sur ce sujet !)
Startus, tu trouveras ci-joint le dernier fichier que tu as posté le
16/06/2005 23:54, modifié pour tenter de répondre à ta demande (j'espère)...
Concernant tes questions :
Après Quelques Essais Ta Macro Didier Marche NickelJ'ai seulement modifié :
Private Sub Worksheet_Change(ByVal Target As Range)
Par :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Pour ma part, je maintiens l'utilisation de l'évènement Change() en lieu et place de SelectionChange(). L'évènement Change() se déclenche seulement lorsque des cellules sont modifiées tandis que l'évènement SelectionChange() intervient à chaque déplacement de la sélection dans la feuille...
Que veut dire D:E dans
If Not Application.Intersect(Target, Range('D:E')) Is Nothing Then
Il faut que 'shape' en question soit situé entre la colonne D et E ?
Non.
Cette ligne de code est située dans l'évènement Change() de la feuille, cela signifie que si une valeur est modifiée dans cette feuille et que cette valeur est située en colonne D ou en colonne E, alors il faut procéder au traitement qui suit (lignes de code entre
Then et
End If)
Didier, ton code au début ne marchait pas, et subitement il a marché, je ne sais pourquoi...?
En essayant de l'adapter il ne fonctionne à nouveau plus???
Une des explications possibles, c'est tout simplement que l'exemple que tu as joint initialement (
15/06/2005 20:00) est différent de l'exemple que tu joins maintenant (
16/06/2005 23:54)... En effet, dans le premier exemple les montants Débit-Crédit sont situés en colonne D et E alors que dans le deuxième fichier ils sont situés cette fois en colonne E et F !!!
Ensuite, si l'objet Shape représentant le solde n'est plus situé sur la feuille de compte mais sur une autre feuille ('Accueil') cette fois, la macro demande effectivement une adaptation...
Par ailleurs, j'ai cru comprendre que tu avais d'autres Comptes (et donc d'autres feuilles et objets Shapes) a gérer de la sorte. J'ai donc essayé d'adapter ton exemple avec cette fois 2 comptes. Pour plus de clarté, j'ai renommé les 2 Shapes 'Solde1' et 'Solde2' et je te conseille vivement de faire de même pour les autres comptes éventuels...
Dans le module de code de chaque feuille de Compte, le code ci-dessous est utilisé :
'Gère la couleur du solde (rouge pour négatif) dans la feuille 'Accueil'
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range('E:F')) Is Nothing Then
Sheets('Accueil').Shapes('Solde1').TextFrame.Characters.Font.ColorIndex = IIf(Range('E1').Value < 0, 3, 0)
End If
End Sub
'Pointe les opérations validés
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range('G4:G21')) Is Nothing Then
Target.Value = IIf(Target.Value = 'a', '', 'a')
End If
End Sub
Il convient bien sûr d'utiliser 'Solde2' (et non 'Solde1') pour le Compte N°2.
Une seule macro, ou une pour chaque feuille ?
Dans l'exemple joint, par simplification et pour t'aider à comprendre, j'ai préféré laisser une macro par feuille... Cela dit, l'ensemble est facilement adaptable pour ne laisser qu'une seule macro gérant le tout (en utilisant l'évènement
Workbook_SheetChange() de l'objet
ThisWorkbook). Si tu le souhaites vraiment, je peux te faire cette adaptation mais il conviendra de préciser le nom exacte de chaque onglet (Accueil, Comptes et autres) que tu utiliseras dans ton projet... Cette précision est indispensable et cela implique qu'une modification ultérieure de la structure de ton classeur entrainera d'office un dysfonctionnement dans ce traitement. A toi de voir...
Cordialement, [file name=MFC2.zip size=13649]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MFC2.zip[/file]