Utiliser une macro dans plusieurs classeurs Excel
Bonjour,
J'avais une question sur une macro que je souhaitais utiliser. Le but de cette dernière était de renseigner les 3 valeurs des composantes RVB et que dans une autre cellule, la couleur correspondante aux 3 composantes s'affiche automatiquement.
J'ai trouvé un fichier qui répond très bien à ma demande. En revanche, impossible pour moi de comprendre cette macro et je n'arrive pas à l'intégrer dans un autre fichier personnel. C'est donc là où j'aurais besoin de l'aide de quelqu'un :
J'aimerais utiliser la macro que j'ai déjà (qui est dans le fichier en pièce jointe) dans un autre fichier. Ce fichier comprendrait plusieurs feuilles et dans chaque feuilles, il y aurait à renseigner à différents endroits les 3 composantes RVB et la couleur correspondante s'afficherait.
Est ce que quelqu'un pourrait m'expliquer comment insérer cette macro dans un autre fichier en pouvant l'utiliser à différents endroits (sachant que je ne suis pas du tout familier avec les macros) ?
Merci par avance infiniment pour votre aide
Loic
bonjour,
les macro du type "Sub Worksheet_Change", il faut les copier et coller dans chaque module des feuilles que vous voulez. A mon avis, une autre option n'existe pas, désolé.
Bonjour le fil
Pas tout à fait d'accord avec BsAlv
Tu mets se code dans ThisWorkBook de ton classeur et il fonctionne pour toutes les feuilles qui sont dedans.
Je fais une recherche du terme "Rouge" dans les cellules, si je le trouve, je considère que les 2 suivantes sont "Vert" et "Bleu"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Ind As Long, ColR As Long, Lig As Long
Dim CelF As Range, Rvb(2) As Integer
' Chercher et trouver la colonne avec indiqué Rouge
' Dans la feuille ou il y a modification
With Sh
Set CelF = .Cells.Find(What:="Rouge", LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
' Si libellé trouvé
If Not CelF Is Nothing Then
' Numéro de la ligne modifiée
Lig = Target.Row
' Numéro de la colonne contenant le libellé "Rouge"
ColR = CelF.Column
For Ind = 0 To 2
If IsNumeric(Sh.Cells(Lig, ColR + Ind)) Then
Rvb(Ind) = Sh.Cells(Lig, ColR + Ind).Value
End If
Next Ind
Sh.Cells(Lig, ColR + 3).Interior.Color = RGB(Rvb(0), Rvb(1), Rvb(2))
End If
End With
End SubA+
Merci beaucoup pour vos réponses
J'ai mis le code dans "ThisWorkBook" et en effet, c'est vraiment top, cela correspond vraiment bien à ce que je veux. Maintenant, si je peux abuser, il y a quelques corrections au code qui me seraient vraiment utiles :
- lorsqu'on écrit "Rouge/ Vert / Bleu", la cellule de droite de "Bleu" est colorée en noire. J'aimerais qu'il n'y ait pas de coloration dans la cellule à droite de "Bleu"
- lorsqu'on écrit plusieurs fois "Rouge / Vert / Bleu", le codage ne fonctionne que pour le premier "Rouge" détecté sur la feuille. Dans la même feuille, je pourrais en avoir plusieurs en effet (car plusieurs colonnes avec des couleurs qui s'affichent). Je dirais que c'est la correction la plus importante pour moi
- ça c'est vraiment pour du confort donc pas très grave si complexe à faire : d'afficher la couleur que si les 3 composantes (RVB) sont renseignées
Merci encore pour votre aide, j'apprécie vraiment beaucoup
Loic
Re,
Pour le 1er souci
lorsqu'on écrit "Rouge/ Vert / Bleu", la cellule de droite de "Bleu" est colorée en noir
cette ligne écrit sur la 3ème colonne après celle du Rouge, donc il n'y a pas de raison
Sh.Cells(Lig, ColR + 3).Interior.Color = RGB(Rvb(0), Rvb(1), Rvb(2))Question, est-ce que "Rouge/Vert/Bleu" sont toujours inscrit sur la même ligne, la 4 ?
A+
Oh toutes mes excuses, je n'avais pas mis le fichier avec.
Oui pour la case noire, j'ai regardé et je n'ai pas compris non plus dans le code mais bon vu mon niveau, je me disais que j'étais passé à côté de quelque chose.
Le rouge vert bleu est inscrit à différents endroits (voir dans le fichier exemple)
Vraiment merci pour la réactivité en tous cas !!
Loic
Merci beaucoup c'est super, cela fonctionne parfaitement !!
Vraiment bravo et encore merci !!