VBA : colorier cellules fusionnées en fonction activecell
Résolu
Remi2236
Messages postés
86
Date d'inscription
Statut
Membre
Dernière intervention
-
Remi2236 Messages postés 86 Date d'inscription Statut Membre Dernière intervention -
Remi2236 Messages postés 86 Date d'inscription Statut Membre Dernière intervention -
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
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:
- VBA : colorier cellules fusionnées en fonction activecell
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
31 réponses
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
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
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
pour le premier point, as-tu essayé de mettre
pour le premier point, as-tu essayé de mettre
1à la place de
Target.Row?
Bonjour,
comme ceci:
il faut cliquer sur la ligne haute des cellules fusionnées pour que cela fonctionne!
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!
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
Que dois-je mettre alors ? Car si je remplace target.row par 1, ça me colorie la cellule B1 uniquement.
Que dois-je mettre alors ? Car si je remplace target.row par 1, ça me colorie la cellule B1 uniquement.
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
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
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
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
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
Bonsoir,
Je vous mets un fichier exemple pour vous montrer :
https://www.cjoint.com/c/LBrumTizrPA
Cdlt,
Rémi
Je vous mets un fichier exemple pour vous montrer :
https://www.cjoint.com/c/LBrumTizrPA
Cdlt,
Rémi
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
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
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
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)Mergcellsdonne True si fait partie d'une fusion et False si non
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
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
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
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
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
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
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 ?
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 ?
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
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