Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

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 !

NoodleDS

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau sur le forum et effectue un peu de VBA depuis seulement quelques semaines. Je n'effectuais jusqu'ici que des macros en mode enregistrement.

Je vous expose ma problématique :

Dans la même feuille, j'ai une plage de dates dans une colonne et plusieurs dates sur des lignes différentes.
Je souhaite qu'un code VBA puisse automatiquement, dès qu'une date de ma colonne est identique à une qui se trouve sur une ligne, que des cellules précises situées dessous la date se retrouvent grisées (voir exemple dans le fichier ci-joint).

Merci pour votre aide.
 

Pièces jointes

Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Bonjour NoodleDS, Gareth,

Voici le fichier avec le code VBA. Regarde si ça te convient.

Clique sur une date pour voir les cellules grisées.



A bientôt 😎
 

Pièces jointes

Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Re NoodleDS,

une variante

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, plage As Range, plages As Range, i As Long, lig As Integer
If Not Intersect(Target, [M11:M35]) Is Nothing Then
lig = Range("m65536").End(xlUp).Row
For i = 11 To lig
For j = 1 To 10
Set plages = Range("pl_" & j)
If ActiveCell.Value = plages.Value Then
Set plage = Range("dt_" & j)
plage.Interior.ColorIndex = 15
End If
Next j
Next i
End If
End Sub


A+ :cool:
 
Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Bonjour Gareth et Lone-wolf,

Je tiens d'abord à vous remercier tous les deux pour avoir consacré du temps à ma demande.

Pour Gareth :
Je n'avais pas penser à une MFC et il faut dire que cela fonctionne très bien. Le résultat correspond bien à ce que je souhaite réaliser, mais comme je dois l'intégrer à un petit code VBA existant...

Pour Lone-wolf :
Le fonctionnement de tes deux codes sont intéressant. On clique sur une des dates en colonne et cela grise au bonne endroit. Ce n'est pas tout à fait ce que je souhaite réaliser. En fait, dès que le tableau en colonne est renseigné de ces dates je souhaite qu'automatiquement les zones concernées se grisent et le restent, sans que l'on ait besoin de cliquer sur une des cellules.

Merci pour votre aide.
 
Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Bonsoir Gareth, Noodle,

J'ai rectifié l'ancien code de mon fichier comme suit:


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, plage As Range, plages As Range, i As Long, lig As Integer
If Not Intersect(Target, [m11:m10000]) Is Nothing Then
lig = Range("m65536").End(xlUp).Row
For i = 11 To lig
For j = 1 To 10
Set plages = Range("pl_" & j)
If Range("m" & i).Value = plages.Value Then: Set plage = Range("dt_" & j): _
plage.Interior.ColorIndex = 15
Next j
Next i
End If
End Sub

En souhaitant que ça joue.


A+ 😎
 
Dernière édition:
Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Rebonsoir,

une petite correction à faire dans le code de Gareth, dans le cas ou tu voudrais éffacer l'une des dates.

If Not c Is Nothing Then au lieu de If Not c Is Nothing And X <> "" Then.

En éffaçant le 2 avril par exemple, la colonne du 4 avril aussi, n'avait plus de couleur de fond.


Bonne soirée. 😎
 
Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Bonjour,

Merci Lon-Wolf, effectivement j'avais mis au debut ce X <> "" pour une raison bien précise mais ce n'est plus nécessaire. Je ne me souviens plus pourquoi 🙄
J'en ai profité pour optimiser mon code qui triate maintenant toutes les dates de la colonne M où qu'elles soient.

En revanche, en testant ton code sauf erreur le grisé ne disparait pas lors de l'effacement d'une date.
 

Pièces jointes

Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Bonsoir Gareth,

dans le fichier joint, cette fois c'est le texte qui est mis en forme, suite à l'exemple de ton fichier.

Il faut écrire dans la colonne E, l'un des textes proposés.


Très bonne soirée 😎
 

Pièces jointes

Re : Code VBA pour colorier des cellules dès que l'on trouve 2 dates identiques

Bonsoir,

En remplaçant
Code:
For Each cel In Range("e2:e1000")
par
Code:
For Each cel In Columns("E").SpecialCells(xlCellTypeConstants, 23)

Ca semble aller plus vite ...

Il faut également rajouter LookAt:=xlWhole dans le Find car sinon par exemple a, aa, aaa fonctionnent pour aaa

Code:
Set c = Range("a2:c1000").Find(cel.Value, LookAt:=xlWhole)
 
Dernière édition:
- 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
6
Affichages
308
Réponses
3
Affichages
300
Réponses
12
Affichages
1 K
Retour