2 macros pour une feuille
Didier.v
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je viens de me faire un tableau avec une macro qui me colore une ligne en fonction d'une donnée dans une cellule avec la formule suivante:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 _
And Target.Row >= 2 Then
If UCase(Target.Value) = "Analogique" Then
Target.EntireRow.Interior.ColorIndex = 3
Else
Target.EntireRow.Interior.ColorIndex = 0
End If
End If
End Sub
Ma question est la suivante:
Je dois pouvoir colorer plusieurs lignes (plus de 9000) avec plusieurs couleurs (8)
La cellule qui détermine la couleur est une cellule à choix multiples (menu déroulant)
J'ai vu la mise en forme conditionnelle mais c'est limité à 3 conditions.
J'ai essaie de mettre 2X la même macro avec une valeur de colorindex et de target value (Analogique, Digital, ...) différentes mais ça ne fonctionne pas.
Seule la dernière macro est prise en compte.
Pouvez vous m'aider?
Merci
Je viens de me faire un tableau avec une macro qui me colore une ligne en fonction d'une donnée dans une cellule avec la formule suivante:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 _
And Target.Row >= 2 Then
If UCase(Target.Value) = "Analogique" Then
Target.EntireRow.Interior.ColorIndex = 3
Else
Target.EntireRow.Interior.ColorIndex = 0
End If
End If
End Sub
Ma question est la suivante:
Je dois pouvoir colorer plusieurs lignes (plus de 9000) avec plusieurs couleurs (8)
La cellule qui détermine la couleur est une cellule à choix multiples (menu déroulant)
J'ai vu la mise en forme conditionnelle mais c'est limité à 3 conditions.
J'ai essaie de mettre 2X la même macro avec une valeur de colorindex et de target value (Analogique, Digital, ...) différentes mais ça ne fonctionne pas.
Seule la dernière macro est prise en compte.
Pouvez vous m'aider?
Merci
A voir également:
- 2 macros pour une feuille
- Supercopier 2 - Télécharger - Gestion de fichiers
- Comment imprimer en a5 sur une feuille a4 - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Bruler feuille de laurier - Guide
- 2 ecran pc - Guide
5 réponses
Bonjour,
Si j'ai bien compris, ceci devrait résoudre ton problème,
il ne reste qu'a définir le code pour chaque couleur.
Cdt
Lupin
Si j'ai bien compris, ceci devrait résoudre ton problème,
il ne reste qu'a définir le code pour chaque couleur.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 And Target.Row >= 2 Then
Dim Couleur As Integer
Select Case (Target.Value)
Case "Analogique"
Couleur = 3
Case "Numérique"
Couleur = 5
' Etc ...
Case Else
Couleur = 0
End Select
Call AppliqueCouleur(Target, Couleur)
End If
End Sub
'
Private Sub AppliqueCouleur(ByVal Cible As Range, ByVal Couleur As int32)
Cible.EntireRow.Interior.ColorIndex = Couleur
End Sub
'
Cdt
Lupin
re:
désolé, je code trop en .NET ces temps-ci :
Modifie cette partie :
Cdt
Lupin
désolé, je code trop en .NET ces temps-ci :
Modifie cette partie :
Private Sub AppliqueCouleur(ByVal Cible As Range, ByVal Couleur As Integer)
Cible.EntireRow.Interior.ColorIndex = Couleur
End Sub
Cdt
Lupin
re :
Tu pourrais faire une bascule au cas ou il ait une erreur de manipulation :
Cdt
Lupin
Tu pourrais faire une bascule au cas ou il ait une erreur de manipulation :
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 6 Then
Dim Couleur As Integer
Select Case (Target.Value)
Case "Analogique"
If (Target.EntireRow.Interior.ColorIndex = 3) Then
Couleur = 0
Else
Couleur = 3
End If
Case "Numérique"
If (Target.EntireRow.Interior.ColorIndex = 5) Then
Couleur = 0
Else
Couleur = 5
End If
' Etc ...
Case Else
Couleur = 0
End Select
Call AppliqueCouleur(Target, Couleur)
End If
End Sub
'
Private Sub AppliqueCouleur(ByVal Cible As Range, ByVal Couleur As Integer)
Cible.EntireRow.Interior.ColorIndex = Couleur
End Sub
'
Cdt
Lupin
Oula !
Joli, merci beaucoup.
J'ai une question néanmoins.
La bascule c'est quoi ? C'est que a chaque fois que je click sur une cellule colorée, elle repasse en blanc?
Version avec bascule, numéro et thermes OK.
Pour ne pas avoir le repassage en transparent avec le re-click, ça se passe comment?
j'imagine qu'il faut supprimer la ligne " then couleur =0 mais suis pas sûr.
Comment faire.
BàT
Didier
Joli, merci beaucoup.
J'ai une question néanmoins.
La bascule c'est quoi ? C'est que a chaque fois que je click sur une cellule colorée, elle repasse en blanc?
Version avec bascule, numéro et thermes OK.
Pour ne pas avoir le repassage en transparent avec le re-click, ça se passe comment?
j'imagine qu'il faut supprimer la ligne " then couleur =0 mais suis pas sûr.
Comment faire.
BàT
Didier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re:
En effet, la bascule est pour défaire la première instruction,
si tu as fait une erreur, un nouveau click defait la couleur.
en remplaçant
par
Couleur = 3
tu enlève cette option !
le
défait aussi la couleur si la valeur "Analogique", ou l'une des valeurs
cités dans les "case" n'est pas rencontré.
c'est la même chose que d'écrire
qui aurait le même effet pour défaire la couleur
Cdt
Lupin
En effet, la bascule est pour défaire la première instruction,
si tu as fait une erreur, un nouveau click defait la couleur.
en remplaçant
If (Target.EntireRow.Interior.ColorIndex = 3) Then
Couleur = 0
Else
Couleur = 3
End If
par
Couleur = 3
tu enlève cette option !
le
Case Else
Couleur = 0
défait aussi la couleur si la valeur "Analogique", ou l'une des valeurs
cités dans les "case" n'est pas rencontré.
c'est la même chose que d'écrire
Case ""
Couleur = 0
qui aurait le même effet pour défaire la couleur
Cdt
Lupin
s'il y a plusieurs lignes à tester :
Tu devrais enlever le critère de ligne :
If Target.Column = 3 And Target.Row >= 2 Then
devient :
If Target.Column = 3 Then
Cdt
Lupin
erreur de compilation.
Type défini par utilisateur non défini.
et la ligne "If target.Column = 6" se met en rouge.
Quel est le problème?
Merci encore.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 6
Dim Couleur As Integer
Select Case (Target.Value)
Case "Analogique"
Couleur = 3
Case "Numérique"
Couleur = 5
Case Else
Couleur = 0
End Select
Call AppliqueCouleur(Target, Couleur)
End If
End Sub
'
Private Sub AppliqueCouleur(ByVal Cible As Range, ByVal Couleur As int32)
Cible.EntireRow.Interior.ColorIndex = Couleur
End Sub
'