Récupérer la couleur d'une cellule
Bonjour à tous !
J'ai encore besoin de vos lumières sur un autre sujet.
Dans le planning que rempli le personnel de l'entreprise (300 personnes environ), leur présence ou absence est identifiée par une couleur !
La couleur n'étant pas une donnée, j'ai du mal à traiter cette information. Impossible de changer le fonctionnement, les habitudes sont trop tenaces.
J'avais une macro pour le faire et cétait parfait !
Function CodeCouleur (CelluleCouleur As Range) As Long
Application.Volatile
CodeCouleur = CelluleCouleur.Interior.ColorIndex
End FunctionCependant, après plusieurs semaines à faire quelque chose de propre, je viens de comprendre qu'il est impossible d'enregistrer un Excel avec des macros en tant que fichier partagé.... Là est tout mon problème.
Ma question est donc: est-il possible de récupérer la couleur sans macro ?
Bonne journée à tous !
M.
Bonjour,
Pas vraiment non, comme déjà souvent expliqué la couleur n'est pas une donnée.
Cependant j'ai trouvé un "trick" en ligne avec une vieille fonction (GET.CELL) et le gestionnaire de noms. Ca ne permet pas de sauvegarder en xlsx mais xls ca passe. Sans macros donc.
Autrement ne pouvez-vous pas simplement lancer une macro qui affecte un numéro à chaque couleur une fois le classeur rempli, puis ensuite faire des tris classiques sans VBA ? Vous gardez le classeur en XLSX, vous utilisez simplement une macro pour récupérer les numéros de couleurs.
Bonsoir,
avez vous la possibilité d'installer des "Add-in" ? Sur combien de poste cela serait-il "vraiment" nécessaire ?
Car il y a ci dessus dans le menu du site "Add-in" qui vous permet de télécharger un Pack de fonction XLP, qui comporte des fonctions "formules" qui permettent de récupérer le numéro de couleur d'une cellule, que cette couleur soit en "dur" en en "MFC".
A voir donc la possibilité d'installer se genre de chose, mais il faudra le faire sur chaque poste nécessitant l'accès à ces données.
@ bientôt
LouReeD
Bonjour,
Je vous remercie pour vos réponses.
@LouReed malheureusement non, je ne peux rien ajouté de plus
@saboh12617 ça marche merci beaucoup.
Quand un problème est résolu, un nouveau survient !
Tout marche avec votre solution. Cependant, je comptais récupérer la donnée dans un autre fichier avec une requete Power Query mais cela est impossible sur un onglet masqué ! Car oui je comptais masquer l'onglet qui me donnait le "code" couleur.
J'ai donc essayé une autre solution :
1) mon suivi d'activité dans un Classeur1.xlsx, avec mes couleurs pour les activités
2) un Classeur2.xlsm, qui vient récupérer mes couleurs avec la macro suivante:
Function GetCellColor (cellRef As String) As Variant
Dim wb as workbook
Dim ws as worksheet
Dim cell as range
Set wb = workbooks.open("C:\users\moi\desktop\Classeur1.xlsx")
set ws = wb.worksheets ("Feuil1")
set cell = ws.range(cellRef)
GetCellColor= cell.Interior.Color
End Function3) Si ma macro fonctionnait, je tape dans mon Classeur2 : =GetCellColor("B2"), et je suis sensée obtenir la couleur de fond de la cellule B2 de mon Classeur1 (Feuil1)
Et pourtant le résultat n'est pas là... Sauriez-vous m'aider à trouver mon erreur ?
Merci beaucoup
M.
J’ai un peu de mal à comprendre le processus pour etre tout à fait honnête, mais bon je vais me concentrer sur la partie technique.
Pour votre macro, “le résultat attendu n’est pas là”. Pouvez-vous préciser ?
Si le classeur “Classeur1” est déjà ouvert, je pense que cela peut créer un problème car la commande “.open” ne peut pas s’exécuter. Donc j’imagine qu’elle renvoit Nothing, et à partir de là le reste ne s’exécute pas.
Après, ne trouvez-vous pas tout cela assez alambiqué ?
Ne serait-il pas plus simple, de
- Récupérer votre classeur colorié par vos collègues
- Sur votre pc, a l’aide d’un autre classeur contenant une macro/add-in : récupérer les numéros de couleurs
- Réexporter selon votre format final désiré, sur le fichier inital ou un nouveau fichier type.
Il me semble que c’est un processus simple et robuste. Parce que pas de macros quand elles sont nécessaires, powerquery (pourquoi?), des feuilles masquées…
C’est autant de contraintes sujettes à poser problème.
Il faut bien réfléchir d’abord à ce que l’on a et ce que l’on veut, et ensuite s’occuper du traitement. Sinon on s’emmêle.
Bonjour Mo_kt, Saboh12617, LouReeD,
Une solution qui pourrait être utile. Insérer dans le tableau ou chaque personnel de la société indique ses couleurs, des listes déroulantes dans ces cellules. Par exemple pour 3 couleurs: Bleu, Blanc, Rouge qui sont une liste de mots couplée avec une Mise en Forme Conditionnelle.
Cette MFC donnera un fond bleu et une police bleue pour le terme bleu. Même principe pour les autres couleurs. Le personnel lui verra sur la cellule de validation les différents choix en mots. Le choix bleu mettra la cellule en bleue...Etc...
Pour récupérer les données, il suffira de collecter le mot bleu ou blanc ou rouge qui sont plus faciles ainsi à dénombrer et servir pour des statistiques... Etc...
Bonjour X Cellus
Merci pour votre réponse, c'était une solution envisagée malheureusement impossible. Les employés renseignent en couleurs l'activité et dans la première cellule le nom de cette activité (vous avez un exemple dans le premier fichier que j'ai partagé). Et mon soucis également, pour faire valider cela à mon chef, c'est que rien ne doit changer pour la saisie des employés.
@saboh, je vais répondre étape par étape à vos questions
- "le résultat attendu n'est pas là" : tout simplement je n'obtiens pas le code de la couleur lorsque j'utilise GetCellColor
- Classeur1 ouvert ou fermé, le problème est le même, je n'obtiens pas le code de la couleur
- c'est alambiqué, peut-être, mais ayant passé plusieurs semaines à cherche différentes solutions, si je pose la question sous ce format c'est que j'en ai testé beaucoup d'autres.
- pourquoi utiliser PowerQUery ? Parce que je ne vois pas pourquoi je m'amuserais à retrouver le code couleur de mes cellules si ce n'était pas pour traiter l'inforamtion par la suite. Il y a énormément d'indicateurs et de choses qui en découleront.
Je vais tenteer de reformuler avec les impératifs
- 1 tableau (en partagé) où les employés rentrent leur activités en couleur + le nom de l'activité (le mode d'utilisation ne doit pas changer, le fichier est en partagé, impossible d'avoir des ongles supplémentaires s'ils ne sont pas masqués).
- dans un autre fichier (ou onglets masqués si c'est possible), récupérer le code couleur correspondant aux activités de mon autre classeur.
- dans un autre classeur, je fais mes requetes afin de traiter mes données et aboutir à mes indicateurs.
J'espère avoir été un peu plus claire.
Merci beaucoup
D’accord, je comprends mieux et je suis d’accord avec vous. Pour revenir sur la mini fonction donc :
- Essayez de l’exécuter en pas à pas en mettant un breakpoint au début pour voir où ca cloche
- Alternativement, pour éviter l’ouverture/lecture dans l’autre classeur (en supposant que le problème soit bien là). Vous pourriez importer la feuille dans celui contenant la macro, (via VBA ou manuellement) et essayer votre fonction en local plutot que sur l’autre classeur.
Bonjour Mo_kt, Le Fil,
A nouveau,
Et mon soucis également, pour faire valider cela à mon chef, c'est que rien ne doit changer pour la saisie des employés.
Ci-dessous réalisé ton fichier modifié. Je l'ai laissé en extension xlsm uniquement pour laisser ta fonction.
Mais il fonctionne en type xlsx. Voir les notes en rouge pour commentaires explicatifs.
Je vous remercie tous pour l'aide apporté, j'ai pris des informations de tout le monde et j'ai pu m'en sortir.
Je vous posterai prochainement la solution pour laquelle j'ai opté lorsque je l'aurai "aseptisée" du nom des collaborateurs.
Merci encore !