VBA : colorier cellules fusionnées en fonction activecell

Résolu/Fermé
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 - 9 févr. 2022 à 14:00
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 - 9 mars 2022 à 22:41
Bonjour,

1) J'ai un tableau sur lequel j'ai, en colonne B, le nom de mes personnels et vu que j'ai beaucoup de personnels, j'ai mis en place un code pour que le nom du personnel se colore en vert quand je clique sur une cellule correspondant à sa ligne.

Exemple : Robert est inscrit en B1, quand je clique sur une des cellules sur la ligne 1 (C1, D1, E1, ...,etc) cela colore la cellule B1 en vert.

J'ai voulu mettre sur mon tableau 2 lignes par personnel et j'ai cherché pour que cela fonctionne sur des cellules fusionnées mais cela marche pour une ligne et non pour l'autre.

Exemple : j'ai fusionné la cellule B1 et B2 et inscrit Robert dedans, quand je clique sur une cellule de la ligne 1, ça me colore ma cellule fusionnée B1:B2, mais si je clique sur une cellule de la ligne 2, cela ne fait rien.
Je vous mets un bout de code comme pour l'exemple :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C1:NC2")) Is Nothing Then
Range("B1:B2").Cells(1).Interior.ColorIndex = xlColorIndexNone
Cells(Target.Row, "B").Interior.Color = RGB(0, 255, 0)
End If
End sub

Auriez-vous une solution ?

2) Dernière chose, j'ai essayé de faire ce code pour chaque personnel, et avec le code que j'ai mis, les cellules restent colorées quand je clique sur un autre personnel, sauf si je clique sur une cellule d'une ligne où rien ne se passe.

Exemple : j'ai fusionné la cellule B1:B2 et inscrit Robert dedans, j'ai fusionné la cellule B3:B4 et inscrit André dedans. Quand je clique sur une cellule de la ligne 1, cela colore la cellule fusionnée B1:B2, si je clique sur une cellule de la ligne 3, cela colore la cellule fusionnée B3:B4 mais la cellule fusionnée B1:B2 reste colorée. Mais si je clique sur une cellule de la ligne 2, la cellule fusionnée B1:B2 perd sa couleur.
Je vous mets le code que j'ai fait calqué à cet exemple :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C1:NC2")) Is Nothing Then
Range("B1:B2").Cells(1).Interior.ColorIndex = xlColorIndexNone
Cells(Target.Row, "B").Interior.Color = RGB(0, 255, 0)
End If
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C3:NC4")) Is Nothing Then
Range("B3:B4").Cells(1).Interior.ColorIndex = xlColorIndexNone
Cells(Target.Row, "B").Interior.Color = RGB(0, 255, 0)
End If
End sub

Auriez-vous une solution à ce problème ?

En vous remerciant d'avance ! Et désolé du pavé, je souhaitais être le plus exhaustif possible.

Cdlt,

Rémi
A voir également:

31 réponses

f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
8 mars 2022 à 15:31
Bonjour,

Fichier modifie pour inversion +/- dates et si vous cliquer sur l'adresse colonne jour en A2: defilement pour attendre la colonne du jour, clique une deuxieme fois vous ramene en colonne C

https://www.cjoint.com/c/LCioCJmCRzf
1
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
9 févr. 2022 à 16:36
bonjour,
pour le premier point, as-tu essayé de mettre
1
à la place de
Target.Row
?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 9 févr. 2022 à 16:49
Bonjour,

comme ceci:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim DerniereLigneUtilisee As Long
DerniereLigneUtilisee = Cells(Rows.Count, 2).End(xlUp).Row 'où X est le numéro de la colonne donnée
If Not Application.Intersect(Target, Range("C1:NC" & DerniereLigneUtilisee)) Is Nothing Then
Range("B1:B" & DerniereLigneUtilisee).Interior.ColorIndex = xlColorIndexNone
Cells(Target.Row, 2).Interior.Color = RGB(0, 255, 0)
End If
End Sub


il faut cliquer sur la ligne haute des cellules fusionnées pour que cela fonctionne!


0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
9 févr. 2022 à 17:38
Bonjour,

Cela fonctionne comme ce que j'avais fait, mais il n'y a pas possibilité que cela fonctionne également avec la ligne basse des cellules fusionnées ?

Cdlt,

Rémi
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
9 févr. 2022 à 17:45
Si, à condition de ne pas simplement utiliser
Target.Row
.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
9 févr. 2022 à 17:57
Bonsoir,

Que dois-je mettre alors ? Car si je remplace target.row par 1, ça me colorie la cellule B1 uniquement.
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
9 févr. 2022 à 19:09
il faut faire un petit calcul qui retire un si la valeur est paire.
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1 > yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024
10 févr. 2022 à 08:37
Bonjour,

Vous auriez un exemple qui reprendrait mon exemple :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C1:NC2")) Is Nothing Then
Range("B1:B2").Cells(1).Interior.ColorIndex = xlColorIndexNone
Cells(Target.Row, "B").Interior.Color = RGB(0, 255, 0)
End If
End sub

Cdlt,

Rémi
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467 > Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023
10 févr. 2022 à 09:12
un exemple:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C1:NC2")) Is Nothing Then
Range("B1:B2").Cells(1).Interior.ColorIndex = xlColorIndexNone
Cells(spmu(Target.Row), "B").Interior.Color = RGB(0, 255, 0)
End If
End Sub
Private Function spmu(n As Integer)
If n Mod 2 = 0 Then
    spmu = n - 1
Else
    spmu = n
End If
End Function
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
16 févr. 2022 à 15:51
Bonjour,

Ca ne fonctionne pas. On ne pourrait pas se servir de la fonction Selection.Offset(1, 0) ?
Ou de demander à ce que si la 2ème ligne est sélectionnée, que cela reproduise le même effet que si on sélectionnait la première ligne ?

Cdlmt

Rémi
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
16 févr. 2022 à 16:00
"Ca ne fonctionne pas": message d'erreur?
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
17 févr. 2022 à 21:13
Bonsoir,

Je vous mets un fichier exemple pour vous montrer :
https://www.cjoint.com/c/LBrumTizrPA

Cdlt,

Rémi
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
17 févr. 2022 à 22:47
Rien ne fonctionne. Tu n'as tenu compte d'aucune suggestion, ce fichier est bourré d'erreurs.

Recommence peut-être du point de départ.
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
18 févr. 2022 à 07:57
Bonjour,
Mes connaissances en VBA sont assez faibles, je ne sais pas trop comment procéder. Vous pourriez m'aider pour le code ?
Cdlt
Rémi
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
18 févr. 2022 à 10:20
Bonjour a vous tous,

Remi2236:
Ca Roule depuis oct 2021?
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
Modifié le 19 févr. 2022 à 07:43
Bonjour,

Deux remarques pour le fichier que vous avez mis a dispo
le code n'est pas au bon endroit. Vous l'avez mis dans ThisWorkbook ald VBA de la feuil1
Vous n'avez besoin de votre fonction que de la ligne 1 a 6 pas pour la suite.
Si c'est seulement un exemple et que dans votre fichier les cellules fusionnées sont dispersées, y a peut-être moyen de reconnaitre des cellules fusionnées

Suite:

Detecter cellule appartient a une fusion:
Apres recherche: ex
Cells(1,1)Mergcells
donne True si fait partie d'une fusion et False si non
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
20 févr. 2022 à 21:25
Bonjour f894009,

Très bien merci et toi depuis le temps ?

Tu vas peut-être pouvoir m'aider. C'est encore pour mon planning. Après l'avoir testé j'avais 2, 3 petites choses que je voulais modifier mais bon...je n'ai pas les connaissances nécessaires !

1) je voulais que quand je clique sur une ligne de mon planning, ça mette en surbrillance (vert dans l'exemple) le nom du personnel (sur l'exemple joint je les ai nommé 1,2,3,4,5... pour une question d'anonymat. Mais le souci c'est que j'ai des cellules fusionnées et je ne sais pas comment faire pour que la cellule fusionnée se mette en surbrillance.

2) C'est un peu long de se déplacer en scrollant avec la barre en bas. J'ai fait un Userform que je voulais utiliser pour scroller de semaine en semaine et que ça prenne en compte là où se trouve l'activecell. C'est à dire que si je suis au 2 janvier avec l'acticell, quand je clique sur le userform pour aller à droite ça prenne en compte qu'on est en semaine 1, et que si je suis en semaine 10 avec l'activecell, en appuyant sur le bouton de l'userform, ça ne me redéplace pas en semaine 2 en pensant que j'étais en semaine 1. Je ne sais pas si c'est très clair, manque de sommeil lol.

3) J'aurais aimé avoir un moyen de faire une remise à zéro du tableau, de pouvoir effacer toutes les shapes et les commentaire pour pouvoir le réutiliser en fin d'année.

4) J'aurais aimé que en ouvrant le tableau, cela me mette la colonne avec la date du jour à gauche de l'écran. Par exemple, si on est le 20 février, que ça me mette le 20 février à gauche de l'écran.

5) Enfin, quand je fais clic droit sur une cellule, ça ouvre l'userform pour définir l'activité du jour, mais en sauvegardant, je voudrais que si il n'y a pas de commentaire, ça enregistre quand même l'activité mais sans commentaire, mais que si il y en a, ça enregistre comme actuellement l'activité et que ça affiche le commentaire.

Ca fait beaucoup d'infos désolé. Mais si tu peux m'aider avec ça, ce serait super ! Comme tu connais un peu le fichier. Il n'y a pas d'urgence.

Merci en tout cas par avance.

Cdlt,

Rémi
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
20 févr. 2022 à 21:26
Avec le fichier c'est mieux lol

https://www.cjoint.com/c/LBuumKNgJyQ
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
20 févr. 2022 à 21:38
Et le mdp : 2236
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
Modifié le 21 févr. 2022 à 07:53
Bonjour,
Ca roule pour le moment.

Dans mon post, j'ai mis l'essentiel de la méthode. Mais vu que vous etes a la ramasse, je vous fais ca.
Vous pensez quand meme a vous former un peu meme si le cas present, ca ne coule pas de source.
Avez vous fait quelques recherches?
Si oui, c'est surement l'adaptation qui vous coince.

Je recupere le fichier et regarde la chose


Suite:
d'infos désolé
Pauvre de nous.

Pouvez me la refaire pour le 2
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
21 févr. 2022 à 11:39
Suite:

1-3-4-5 fait
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
21 févr. 2022 à 13:49
Bonjour,

Tant mieux si vous vous portez bien vu la situation sanitaire actuelle.

Pour le 2, j'ai fait un Userform avec deux boutons qui apparait au lancement du fichier, et j'aimerais qu'ils me permettent de me déplacer de semaine en semaine mais en fonction de la position de l'activecell.
Par exemple, si mon activecell est au 15 mars (c'est en semaine 11), si j'appuie sur le bouton de droite, je voudrais que ça me déplace à la semaine 12, encore une fois en semaine 13 etc....et si j'appuie sur le bouton de gauche, que ça me déplace à la semaine 10, puis 9, etc...

Je ne sais pas si je suis plus clair.

Cdlt,

rémi
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
21 févr. 2022 à 15:08
Re,
Je ne sais pas si je suis plus clair.
On peu plus clair. Pourquoi mois precedent/suivant alors que vous voulez des semaines?
Deplacement au premier jour de la semaine ou ?
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
21 févr. 2022 à 16:01
Re,

C'est bien les semaines que je veux, semaines suivantes/précédentes

Le du top serait que l'activecell reste sur la ligne de la personne sur laquelle elle était avant de cliquer sur le bouton, et que ça me déplace l'activecell au premier jour de la semaine suivante/precedente

Cdlt

Rémi
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
21 févr. 2022 à 16:04
Re,

Ok
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
23 févr. 2022 à 17:57
Bonjour,

Fichier modifie: https://www.cjoint.com/c/LBxq4zSzOhf
0
Remi2236 Messages postés 83 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 29 novembre 2023 1
24 févr. 2022 à 10:46
Bonjour,

Merci ! Je teste ça chez moi en rentrant.

Cordialement,

Rémi
0