|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 7 ![]() |
Bonjour,
J'ai cherché (peut être mal Je veux recréer le fonctionnement de la macro native "reproduire la mise en forme" mais modifié de la façon suivante : 1- on clique dans une cellule qui possède une couleur de remplissage donnée, 2- je lance ma macro et 3 - lorsqu'on clique dans une autre cellule : la cellule de départ n'est plus colorée et la cellule d'arrivée est mise en couleur avec celle qu'avait la cellule de départ Actuellement je ne suis pas arrivé à transmettre la couleur de départ, j'utilise donc une couleur fixée. Ma procédure (dans un module) : Code :
Code :
Merci de me lire et de me guider si possible. Cordialement. -- Plouf69 |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Il faut bien comprendre qu'une macro est une procédure. Une fois lancée, elle s'execute sans attendre que tu cliques quelque part ou autre (sauf userForm, msgbox...). C'est donc uniquement ton évènement qui va déclencher une action, même si tu peux appeler une macro dans cette évènement.
Pour faire simple, c'est facile de passer un paramètre d'un évènement à une procédure, dans l'autre sens, ce n'est pas logique. Ce que je te préconise : - L'équivalent de "lancer ta macro" sera de changer un paramètre, sur une feuille ou dans une variable globale, indiquant que tu es en mode "changement de couleur". - Dans ce mode chaque, changement de selection enregistre également dans une variable global ou sur une feuille le code couleur de la cellule pour que ce soit celui-là qui soit copier à la prochaine selection (Il faut l'initialiser pour la première fois bien sûr) Maintenant, si tu ne veux faire qu'une fois cette action, oublie les évènements . Tu dois pouvoir exploiter ce qui est dans le presse papier (Ctrl+C sur la cellule d'origine et clique sur ton bouton pour le collage spécial) |
|
|
00
|
|
|
#3 | ||||
|
Membre Expert
![]() Retraité Inscription : avril 2011 Messages : 696 ![]() |
Bonjour,
Voici une solution qui doit s’approcher du résultat attendu. Dans un module standard : Code :
Code :
|
||||
|
|
10
|
|
|
#4 | ||
|
Expert Confirmé
![]() |
bonjour sinon tu a le intersect entre deux range
essaie ceci: Code :
__________________
mes fichiers dans les contributions: mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA mon nouveau mouse in out pour les boutons dans un userform mon addin pour prendre un cliché de selection de cellules si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres et n'oublie pas de voter ![]()
|
||
|
|
00
|
|
|
#5 | |||||
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 7 ![]() |
Bonjour et merci à tous les 3 de s'être penchés sur mon pb
@gFZT82 Pour que la modification avec votre code fonctionne il m'a fallu ajouter dans Code :
Code :
Citation:
J'ai enfin trouvé mon pb, mais ne sais pas le résoudre et "Private Sub Workbook...." dans deux classeur différents ou j'utilise cette macro et les 2 variables Public coulRempl et Public Copie sont vides pour les "Sub Workbook", alors que l'ensemble du code fonctionne si les deux proc sont dans un seul classeur (Modules et ThisWorkbook). @ZebreLoup : il y a qd même une solution dans cette voie... @patricktoulon Comment on utilise ton code dans la feuille, je n'ai obtenu qu'un gros b...l, il faut que le code ne fonctionne que lorsqu'on en a besoin => une macro actionnée par un bouton, car je dois garder le clique droit pour formater des cellules par ex. (j'ai certainement pas compris le fonctionnement !) Cordialement |
|||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Tes variables publiques ne seront accessibles que dans ton classeur. Si tu veux mettre ta macro dans le Perso.xls, il faut mettre les variables dans le classeur qui appelle cette macro et faire un passage par référence.
|
|
|
10
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 7 ![]() |
@patricktoulon
une raison du bazard : Code :
Range(cellule).Interior.Color = xlNone par contre : Code :
Range("E6").Interior.ColorIndex = xlNone met bien le fond en blanc (la valeur -4142 m'a été donnée par l'enregistreur de macro) C'est du détail, mais je veux comprendre. Je continue à explorer les réponses. PS : pourquoi Citation:
|
|
|
|
00
|
|
|
#8 |
![]() ![]() Alain GerardConsultant informatique Inscription : mai 2005 Messages : 3 675 ![]() |
Parce que c'est une valeur littérale (entre guillemets).
La coloration syntaxique du forum utilise le rouge pour les valeurs littérales.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres! Pensez aussi à voter pour les réponses qui vous ont aidés. ------------ Je dois beaucoup de mes connaissances à mes erreurs! |
|
|
10
|
|
|
#9 | ||||||
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 7 ![]() |
Merci à tout ceux qui m'ont répondus et à developpez.com où j'ai pu trouver ce qui m'a fait avancer (et à Goo.. qui m'a simplifié les recherches).
Je travaille avec 2 classeurs dans lesquels j'utilise mon pinceau "Ploufé" Dans chaque module de classe ThisWorkbook j'ai : Code :
Code :
Code :
|
||||||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com