code vba pour cellule non colorée

usul

XLDnaute Occasionnel
Bonjour

suite d'un message sur le changement de couleur de cellules par macro:

voilà la macro d'Abel :
Sub ChangeCouleur()
Dim Plage As Range
Dim Couleur1 As Byte, Couleur2 As Byte
Set Plage = Application.InputBox(prompt:='Sélectionner la zone à modifier', Type:=8)
Couleur1 = InputBox('Donnez l'index de la couleur à remplacer')
Couleur2 = InputBox('Donnez l'index de la couleur de remplacement')
For Each c In Plage
With c.Interior
.ColorIndex = IIf(.ColorIndex = Couleur1, Couleur2, .ColorIndex)
End With
Next c
End Sub

dans l'execution de la macro quand je répond 'none' à l'une des questions 'Donnez l'index de couleur...)

j'ai une erreur de type à l'execution de la macro
ce terme n'est pas compris lors de l'execution

d'ailleurs dans l'écriture d'une macro on peut entrainer un changement de index 35 (par exemple) vers 'none' mais pas de 'none' vers index 35 :

celle-ci fonctionne :
Sub ChangementcouleurVRien()
For Each c In Selection
If c.Interior.ColorIndex = 35 Then c.Interior.ColorIndex = none
Next c

End Sub

mais celle-là non :
Sub ChangementcouleurRienG()
For Each c In Selection
If c.Interior.ColorIndex = none Then c.Interior.ColorIndex = 15
Next c

End Sub

merci

Message édité par: usul, à: 04/11/2005 10:48
 

PascalXLD

XLDnaute Barbatruc
Modérateur
RE

Le pbe vient du fait qu'il déclare la couleur en byte (ce qui était logique) alors forcément maintenant que tu essaies de taper Xlnone, cela ne passe pas

Bon essaies comme ceci

Option Explicit

Sub ChangeCouleur()
Dim Plage As Range, c As Range
Dim Couleur1 As Integer, Couleur2 As Integer
Set Plage = Application.InputBox(prompt:='Sélectionner la zone à modifier', Type:=8)
Couleur1 = InputBox('Donnez l'index de la couleur à remplacer' & vbcrlf & '-4142 pour pas de couleur')

Couleur2 = InputBox('Donnez l'index de la couleur de remplacement' & vbcrlf & '-4142 pour pas de couleur')

For Each c In Plage
With c.Interior
.ColorIndex = IIf(.ColorIndex = Couleur1, Couleur2, .ColorIndex)
End With
Next c
End Sub

Et à la place de xlnone mets le code qui est : -4142 pour pas de couleur

Message édité par: Pascal76, à: 04/11/2005 11:26
 

usul

XLDnaute Occasionnel
ça fonctionne impec :)

oserais-je abuser ? :whistle:

comment modifier la macro pour qu'elle s'execute
sur une plage sélectionnée
ou
sur plusieurs plages non contigües sélectionnées

donc sans avoir à indiquer la plage de cellule


MERCI !

usul
 

PascalXLD

XLDnaute Barbatruc
Modérateur
RE

essaies ainsi

Option Explicit

Sub ChangeCouleur()
Dim c As Range
Dim Couleur1 As Integer, Couleur2 As Integer
Couleur1 = InputBox('Donnez l'index de la couleur à remplacer' & vbCrLf & '-4142 pour pas de couleur')

Couleur2 = InputBox('Donnez l'index de la couleur de remplacement' & vbCrLf & '-4142 pour pas de couleur')

For Each c In Selection
With c.Interior
.ColorIndex = IIf(.ColorIndex = Couleur1, Couleur2, .ColorIndex)
End With
Next c
End Sub

Message édité par: Pascal76, à: 04/11/2005 11:58
 

Discussions similaires

Réponses
0
Affichages
161

Statistiques des forums

Discussions
312 370
Messages
2 087 688
Membres
103 639
dernier inscrit
NIEMASAFI