Code VBA lire et reimplanter couleur celulle
Résolu/Fermé
A voir également:
- Code VBA lire et reimplanter couleur celulle
- Lire epub - Guide
- Code asci - Guide
- Code puk bloqué - Guide
- Excel compter cellule couleur sans vba - Guide
- Code couleur resistance - Télécharger - Utilitaires
3 réponses
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 novembre 2024
Ambassadeur
1 549
Modifié le 10 nov. 2019 à 20:38
Modifié le 10 nov. 2019 à 20:38
bonjour, moi je bute sur un autre problème: ton code est peu lisible parce que tu n'as pas utilisé les balises de code.
nonobstant, pour le non subsidiaire, je suggère de faire ainsi:
plutôt que:
nonobstant, pour le non subsidiaire, je suggère de faire ainsi:
dim couleurinterieure as int, couleurbord as int couleurinterieure = Target.Interior.ColorIndex couleurbord =xLastRng.Interior.ColorIndex Target.Interior.ColorIndex = 32 Target.Border.ColorIndex = 6 xLastRng.Interior.ColorIndex = xlColorIndexNone xLastRng.BorderAround.ColorIndex = xlColorIndexNone Application.Wait (Now + TimeValue("00:00:01")) 'le temps du clignotement Target.Interior.ColorIndex = couleurinterieure Target.Border.ColorIndex = couleurbord
plutôt que:
Target.Interior.ColorIndex = 32 Target.Border.ColorIndex = 6 xLastRng.Interior.ColorIndex = xlColorIndexNone xLastRng.BorderAround.ColorIndex = xlColorIndexNone Application.Wait (Now + TimeValue("00:00:01")) 'le temps du clignotement Target.Interior.ColorIndex = 6 Target.Border.ColorIndex = 32
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié le 10 nov. 2019 à 22:40
Modifié le 10 nov. 2019 à 22:40
Bonjour,
on voit que noël approche à grand pas ! :-)
On met en place les décos
eric
on voit que noël approche à grand pas ! :-)
On met en place les décos
eric
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié le 10 nov. 2019 à 23:21
Modifié le 10 nov. 2019 à 23:21
Bah, excel n'est pas un sapin de noël ;-)
La sélection avec une MFC =VRAI pour préserver sa couleur d'origine c'est le plus simple.
A chaque sélection tu supprimes cette MFC pour la recréer sur la nouvelle cellule, ça tient en 5 lignes :
Et ne me dit pas que tu ne vois pas le jaune pétard !
On peut mettre rouge mais l'écriture noire sera moins lisible.
Tu peux même marquer une plage.
eric
Edit : et si tu as d'autres MFC non 'standard' sur la feuille :
La sélection avec une MFC =VRAI pour préserver sa couleur d'origine c'est le plus simple.
A chaque sélection tu supprimes cette MFC pour la recréer sur la nouvelle cellule, ça tient en 5 lignes :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim fc As FormatCondition For Each fc In Cells.FormatConditions If fc.Formula1 = "=VRAI" Then fc.Delete Next fc Target.FormatConditions.Add Type:=xlExpression, Formula1:="=VRAI" Target.FormatConditions(1).Interior.Color = vbYellow End Sub
Et ne me dit pas que tu ne vois pas le jaune pétard !
On peut mettre rouge mais l'écriture noire sera moins lisible.
Tu peux même marquer une plage.
eric
Edit : et si tu as d'autres MFC non 'standard' sur la feuille :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim fc As Object For Each fc In Cells.FormatConditions On Error GoTo suite If fc.Formula1 = "=VRAI" Then fc.Delete suite: On Error GoTo 0 Next fc Target.FormatConditions.Add Type:=xlExpression, Formula1:="=VRAI" Target.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Target.FormatConditions(1).Interior.Color = vbYellow Target.FormatConditions(1).StopIfTrue = True End Sub
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
10 nov. 2019 à 23:48
10 nov. 2019 à 23:48
C'est à mettre dans le module de la feuille.
Pas besoin de mettre une MFC, la macro s'occupe de tout.
https://mon-partage.fr/f/5tf5TlH2/
Quel est ce mal mystérieux qui empêche toute MFC ?
Pas besoin de mettre une MFC, la macro s'occupe de tout.
https://mon-partage.fr/f/5tf5TlH2/
Quel est ce mal mystérieux qui empêche toute MFC ?
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié le 11 nov. 2019 à 12:21
Modifié le 11 nov. 2019 à 12:21
Bonjour,
il n'y a pas grand chose à expliquer.
La boucle balaie toutes les MFC pour supprimer celles posées par la macro et effacer le précédent marquage.
La suite met la MFC sur la nouvelle sélection.
Pour les propriétés et méthodes que tu ne connais pas il suffit de faire F1 dessus pour accéder à l'aide pas si mal faite.
Question subsidiaire 1, je voulais aussi jouer sur la bordure mais le "target.border" ne semble pas très probant dans mon code….
les bordures pour une MFC, c'est assez limité.
On ne peut pas choisir l'épaisseur, juste la couleur et le style de trait.
Pas sûr que ça apporte plus de visibilité...
Question subsidiaire 2 : puis-je grossir (provisoirement) dans la cellule où l'utilisateur saisi la police de caractère (qui devra revenir ensuite à la taille d'origine) (effet de zoom sur la saisie)
Si la taille d'origine de la police est toujours la même sur toutes les cellules ça peut se faire facilement.
Dans ce cas quelle est la taille à rétablir ? 11 ?
Si elles varient ça oblige à mémoriser toutes les tailles de chaque cellule. Faisable si indispensable mais on risque de partir sur une usine à gaz pas forcément fiable ou cas de plantage ou de fermeture brutale.
eric
il n'y a pas grand chose à expliquer.
La boucle balaie toutes les MFC pour supprimer celles posées par la macro et effacer le précédent marquage.
La suite met la MFC sur la nouvelle sélection.
Pour les propriétés et méthodes que tu ne connais pas il suffit de faire F1 dessus pour accéder à l'aide pas si mal faite.
Question subsidiaire 1, je voulais aussi jouer sur la bordure mais le "target.border" ne semble pas très probant dans mon code….
les bordures pour une MFC, c'est assez limité.
On ne peut pas choisir l'épaisseur, juste la couleur et le style de trait.
Pas sûr que ça apporte plus de visibilité...
Question subsidiaire 2 : puis-je grossir (provisoirement) dans la cellule où l'utilisateur saisi la police de caractère (qui devra revenir ensuite à la taille d'origine) (effet de zoom sur la saisie)
Si la taille d'origine de la police est toujours la même sur toutes les cellules ça peut se faire facilement.
Dans ce cas quelle est la taille à rétablir ? 11 ?
Si elles varient ça oblige à mémoriser toutes les tailles de chaque cellule. Faisable si indispensable mais on risque de partir sur une usine à gaz pas forcément fiable ou cas de plantage ou de fermeture brutale.
eric
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
11 nov. 2019 à 14:42
11 nov. 2019 à 14:42
Voilà :
eric
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim fc As Object For Each fc In Sh.Cells.FormatConditions On Error GoTo suite If fc.Formula1 = "=VRAI" Then fc.AppliesTo.Font.Size = 11 fc.Delete End If suite: On Error GoTo 0 Next fc Target.FormatConditions.Add Type:=xlExpression, Formula1:="=VRAI" Target.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Target.FormatConditions(1).Interior.Color = vbYellow Target.FormatConditions(1).StopIfTrue = True Target.Font.Size = 20 End Sub
eric
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
11 nov. 2019 à 23:52
11 nov. 2019 à 23:52
Oui, c'est normal.
L'utilisation d'une macro efface la pile des undo, plus d'annulation possible.
De la même façon que quand tu enregistres le fichier.
L'utilisation d'une macro efface la pile des undo, plus d'annulation possible.
De la même façon que quand tu enregistres le fichier.
10 nov. 2019 à 20:54
Merci pour ta réponse ultra rapide!
Désolé je débute en VBA, j'avais juste "copié-collé" mon code….
J'ai reporté "le tien" mais (sauf erreur de manipulation de mon coté) cela ne conserve pas la couleur initiale de la cellule avant sélection.
Les cellules sont ensuite "sans couleur" et plus rouge dans mon exemple (ce qui était la couleur initiale, mais cela peut varier)
Merci pour tes lumières dont j'ai bien besoin !
10 nov. 2019 à 20:57
10 nov. 2019 à 21:37
https://wetransfer.com/downloads/72f8a8eb43d454aae23b1d539bba788d20191110203318/d002fc65356674d6e5e7e563bed2216d20191110203318/f3c742
dis moi ce que tu en penses ?
Le principe est qu'il faut sélectionner une zone se saisie et que sa couleur devrait être rendue à la fin….
Mon niveau de VBA est encore assez loin de cela….
Dis moi donc si c'est possible !
Mark Twain "Ils ne savaient pas que c'était impossible, alors ils 'lont fait"
10 nov. 2019 à 22:16
à chaque fois, tu fais des changements dans la cellule courant, ainsi que dans la cellule précédente. cela ne rend pas les choses plus claires.
décris peut-être précisément ce qui se passe, et à quel moment cela dévie de ce que tu attends.
10 nov. 2019 à 22:36
La cellule H21 doit alors contenir la réponse saisie et être redevenue bleue gris.
Et ainsi de suite, dans l'exemple les cellules B21:E21 devront être rouge lorsqu'on en sélectionnera une autre
Est-ce plus clair ?