procedure evenementiel sur cellule colorisé

  • Initiateur de la discussion Initiateur de la discussion daiman
  • 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 !

daiman

XLDnaute Nouveau
bonjour,
j'ai crée une macro qui fonctionne assez. elle consiste à mettre un cellule à 1 lorsque je colorise une autre cellule définie dans une plage.
j'ai voulu mettre tout sa en automatique c'est à dire qu' a chaque fois que je colorise ma cellule, dans ma plage, l'autre cellule lié ce met automatiquement à 1. j'ai réusi partiellement c'est à dire que ma cellule ce met bien 1 met avec 2 condition. que la cellule soit rouge mais aussi non vide. hors moi je veut que sur la couleur.

voilà ma macro:
Sub rouge()
For Each c In [d5:dy5]
If c.Interior.ColorIndex = 3 Then
c.Select
colonne = ActiveCell.Column
ligne = ActiveCell.Row
a = ligne + 1
Cells(a, colonne).Value = 1
Else
If c.Interior.ColorIndex = xlNone Then
c.Select
colonne = ActiveCell.Column
ligne = ActiveCell.Row
a = ligne + 1
Cells(a, colonne).Value = 0
End If
End If
Next c
End Sub
 
Re : procedure evenementiel sur cellule colorisé

Bonsoir,
tu t'es re-lu?
Désolé, mais un petit peu incompréhensible ton :

j'ai crée une macro qui fonctionne assez.

suivi de ton :

j'ai voulu mettre tout sa en automatique c'est à dire qu' a chaque fois que je colorise ma cellule, dans ma plage, l'autre cellule lié ce met automatiquement à 1

fini par :

j'ai réusi partiellement c'est à dire que ma cellule ce met bien 1 met avec 2 condition. que la cellule soit rouge mais aussi non vide. hors moi je veut que sur la couleur.

revois ton énoncé, clairement, avec un fichier exemple, on verra ce qu'on peut faire.
 
Re : procedure evenementiel sur cellule colorisé

Bonsoir,

Je te signale que ton code n'est pas une macro événementielle mais une macro à exécuter, si tu veux en faire une macro événementielle, merci de le préciser.
Sinon, voici le code modifié:

Code:
Sub rouge()
For Each c In [d5:dy5]
    colonne = c.Column
    ligne = c.Row
    a = ligne + 1
    If c.Interior.ColorIndex = 3 Then
        Cells(a, colonne).Value = 1
    ElseIf c.Interior.ColorIndex = xlNone Then
        Cells(a, colonne).Value = 0
    End If
Next c
End Sub
Edit: bhbh, j'ai utilisé mon décodeur 😀, on verra si le cryptage marche encore 😛
 
Dernière édition:
Re : procedure evenementiel sur cellule colorisé

Bonsoir daima, bhbh, skoobi, et à tous

Une petite variante en reprenant le code de Skoobi
Code:
Sub rouge()
For Each c In [d5:dy5]
Colonne = c.Column
Ligne = c.Row
a = Ligne + 1
Cells(a, Colonne).Value = _
IIf(c.Interior.ColorIndex = 3, 1, _
IIf(c.Interior.ColorIndex = xlNone, 0, vbNullString))
Next c
End Sub
 
Re : procedure evenementiel sur cellule colorisé

oui désolé😱
je vais faire des efforts.
c'est bien une macro que je veut transformer en évènement.
merci de l'avoir amélioré.
voilà ce que j'ai essayé:
(avec ce code la colorisation de la cellule ne suffit pas pour quel fonctionne comme je voudrais. Il faut aussi double click sur la cellule colorisé en rouge pour que la cellule endesous se met à 1)

je voudrais que toutes les cellules de la plage colorisées en rouge mettent la cellule juste en dessous d'eux à 1.
merci d'avance

Private Sub Worksheet_Change(ByVal font As Range)
Dim Plage As Range
Set Plage = Intersect(font, Range("d5:dy5"))
If Plage Is Nothing Then Exit Sub
For Each c In [d5:dy5]
Colonne = c.Column
Ligne = c.Row
a = Ligne + 1
Cells(a, Colonne).Value = _
IIf(c.Interior.ColorIndex = 3, 1, _
IIf(c.Interior.ColorIndex = xlNone, 0, vbNullString))
Next c
End Sub
 
Re : procedure evenementiel sur cellule colorisé

Bonjour à tous

Salut Skoobi

je voudrais que toutes les cellules de la plage colorisées
En utilisant une plage nommée et Offset

Code:
Sub Macro1()
Dim C As Range
ActiveWorkbook.Names.Add "zonerouge", "=Feuil1!R5C4:R5C129"
For Each C In [zonerouge]
C.Offset(1, 0).Value = IIf(C.Interior.ColorIndex = 3, 1, vbNullString)
Next
End Sub

Résultat de la macro

Chaque cellule au dessous d'une cellule avec fond rouge appartenant à la plage nommée
prend la valeur 1.

C'est bien ce que tu souhaites?

Pour transformer en procédure évenementielle, tu veux que les 1 s'inscrivent
dès qu'une cellule appartenant à la plage devient rouge
ou quand toutes les cellules de la plage auront été parcourues (et mis en rouge ou pas) ?
 
Dernière édition:
Re : procedure evenementiel sur cellule colorisé

Re


Sur l'évenement double-click

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'création d'une plge nommée zonerouge
ActiveWorkbook.Names.Add "zonerouge", "=Feuil1!R5C4:R5C129"
'test pour savoir si la cellule active (target) appartient à la plage nommée
If Not Intersect(Target, [zonerouge]) Is Nothing Then
'si oui, la cellule du dessous (Offset(1,0)) prend la valeur
'si la cellule active (target) a un fond rouge
Target.Offset(1, 0).Value = IIf(Target.Interior.ColorIndex = 3, 1, vbNullString)
End If
End Sub
A mettre dans le code de la feuille (pas dans un module)
 
Dernière édition:
Re : procedure evenementiel sur cellule colorisé

bonjour,
je voudrais que les 1 s'inscrivent dès qu'une cellule appartenant à la plage devient rouge.
merci🙂
désolé de ne pas m'étaller mais je suis complètement largué. vos code fonctionne tous mais je suis imcapable de les traduires. si vous pouvez faire un petit texte explicatif à côté des ligne de code sa m'aiderais beaucoup.
encore merci😛
 
Re : procedure evenementiel sur cellule colorisé

Bonsoir à tous et aux autres.

En changeant le fond, tu ne peux pas appeler une procédure évènementielle de feuille !
Tu peux faire intervenir la procédure évènementielle BeforeDoubleClick comme tu l'as demandé plus haut et que tu as dans le fichier joint.

Dans ce fichier, tu as une façon de contourner le problème : au lieu de changer le fond en passant par une des manipulations classiques, cela se fait par une séquence* de touches (Ctrl et +). La séquence Ctrl et - permet d'annuler la précédente.
Tu as dans la feuille les descriptions de cette programmation.

* voir l'aide pour de plus amples explications !
 

Pièces jointes

- 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
4
Affichages
604
Réponses
8
Affichages
682
Réponses
5
Affichages
749
Réponses
3
Affichages
276
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
2
Affichages
351
Retour