[VBA] - Erreur lors de la Séléction ou Supression d'une plage

- Erreur lors de la Séléction ou Supression d'une plage [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 22-11-2005 à 14:50:08    

Bonjours ! 1er post dans VBA !
 
Voilà le topo :
 
- J'écrit un petit script en VBA Excel pour qu'en fonction du contenue d'une plage de cellule, la couleur du fond de cellule et du texte change.
 
- J'etait partis sur une MEFC, mais limité à 3 et jai besoins de beaucoup plus de possibilité.
 
J'ai donc decidé de debutter en VBA, chose que je n'avais jamais encore fait.
 
J'ai fait pas mal de teste et j'obtient un truc qui fonctionne maintenant sauf que ...
 
J'ai un debug et donc une interuption de la macro lorsque je selectionne plusieur cellule.
 
Exemple: j'ecrit pg dans une cellule, celle-ci se colore en jaune, et le texte egalement. Si je supprime le contenue de la cellule, le fond redevient gris et le texte s'efface bien. Par contre, si je selectionne plusieurs cellule ( tout ou pas contenant pg ) j'ai une erreur d'execution '13' Incompatibilité de type'.
 
Voilà ou j'en suis, je cherche en ce moment meme sur MSDN si je trouve pas une solution !
 
@+
 
ps: voilà mon code, très simple
 

Code :
  1. Private Sub Worksheet_Change(ByVal ActiveCell As Range)
  2. If Not Intersect(ActiveCell, Range("D3:AU29" )) Is Nothing Then
  3.     With ActiveCell
  4.     If .Value = "pg" Then
  5.         .Interior.ColorIndex = 6
  6.         .Font.ColorIndex = 6
  7.     ElseIf ActiveCell.Value = "md" Then
  8.         .Interior.ColorIndex = 4
  9.         .Font.ColorIndex = 4
  10.     Else
  11.         .Interior.ColorIndex = 15
  12.     End If
  13.     End With
  14. End If
  15. End Sub


---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
Reply

Marsh Posté le 22-11-2005 à 14:50:08   

Reply

Marsh Posté le 22-11-2005 à 15:31:57    

Salut Bl@p_psx,
 
Quand tu sélectionne une plage ton programme ne peux pas éxécuter ne comprends pas ton activecell, c'est que qui te génére une erreur. Tu peux corriger ça grace à for each... next :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim cl As Range
  3. For Each cl In Target
  4.      cl.Activate
  5. If Not Intersect(ActiveCell, Range("D3:AU29" )) Is Nothing Then
  6.     With ActiveCell
  7.     If .Value = "pg" Then
  8.         .Interior.ColorIndex = 6
  9.         .Font.ColorIndex = 6
  10.     ElseIf ActiveCell.Value = "md" Then
  11.         .Interior.ColorIndex = 4
  12.         .Font.ColorIndex = 4
  13.     Else
  14.         .Interior.ColorIndex = 15
  15.     End If
  16.     End With
  17. End If
  18. Next
  19. End Sub

Bon courage à toi :)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 22-11-2005 à 15:40:00    

je me doutais bien de ca, mais je ne trouvais pas comment corrigé ...
 
je vais regarder ton code !
 
je te tient au courant !
 
@+ et merci  
 
ps: en passant, manquerais pas un End For ?


---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
Reply

Marsh Posté le 22-11-2005 à 15:53:07    

bon, après avoir tester, j'ai reussi à faire un foreach sur le range, mais pas sur celui qui etait séléctionner uniquement. :D c'etait donc tres lent, le temp de passer toutes les cellules en revue !
 
bon, je continue de tester, mais je tatonne beaucoup !
 
encore merci !
 
@+


---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
Reply

Marsh Posté le 22-11-2005 à 15:56:05    

en fait, j'ai reussis, manquais que le next cl dans ton code ( et j'avais pas vu la modif en la declaration ^^ ByVal Target As Range )
 
merci beaucoup !
 
@+


---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
Reply

Marsh Posté le 22-11-2005 à 16:01:36    

bl@p_psx a écrit :

ps: en passant, manquerais pas un End For ?

Nanananan, pour termier ou plutôt boucler un for il faut NEXT
 

bl@p_psx a écrit :

bon, après avoir tester, j'ai reussi à faire un foreach sur le range, mais pas sur celui qui etait séléctionner uniquement. :D c'etait donc tres lent, le temp de passer toutes les cellules en revue !
 
bon, je continue de tester, mais je tatonne beaucoup !
 
encore merci !
 
@+

La boucle telle que je te l'ai mise en place autour de ta macro marchait pas chez toi ?


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 22-11-2005 à 16:43:27    

j'ai repondu, et d'ailleur, c'est à moi qu'il manquais le next ^^
 
enfait, j'avais oublier le next, et la declaration au debut !
 
merci encore !
 
@+


---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
Reply

Marsh Posté le 22-11-2005 à 16:57:45    

On a nos post qui ont dû se croiser :)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed