Code VBA lire et reimplanter couleur celulle
Résolu
micheldu52
-
micheldu52 -
micheldu52 -
A voir également:
- Code VBA lire et reimplanter couleur celulle
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Code ascii - Guide
- Lire epub - Guide
- Lire qr code sur pc - Guide
- Code puk bloqué - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
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
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
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
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
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 !
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"
à 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.
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 ?