code vba pour cellule non colorée

  • Initiateur de la discussion Initiateur de la discussion usul
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
ç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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
427
Réponses
7
Affichages
316
Retour