Conserver la couleur de police - convertir les données
Bonjour à tous,
Dans mon nouveau fichier en cours de construction mon code VBA convertit dans une de ses étapes un fichier CSV en colonnes.
Mon souci est que lors de la conversion la couleur de police disparait, hors j'en ai besoin pour mon rapport final.
Pourriez vous me dire ce que je dois adapter dans mon code pour conserver ma couleur de police?
Merci beaucoup
Sub convertir_resultat_en_colonnes()
'
' convertir le fichier CSV en colonnes
'
'
Sheets("relevé du comparatif").Select
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1)), TrailingMinusNumbers _
:=True
End SubBonjour
Pas clair : un csv est du texte brut sans couleur donc précise les étapes de ton traitement
Bonjour.
L'une de mes premières étapes est de mettre mes 3 fichiers CSV en couleur :
Sub mettre_couleur_region()
'
' mettre_couleur_region Macro
'
'
Sheets("coller ici le CSV NL").Select
Cells.Select
With Selection.Font
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0
End With
Sheets("coller ici le CSV BXL").Select
Cells.Select
With Selection.Font
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0
End With
Sheets("coller ici le CSV WALL").Select
Cells.Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End SubEnsuite je réunis mes 3 feuilles sur une :
Sub reunir_3_regions()
'
' reunir_3_regions Macro
'
'
Sheets("coller ici le CSV NL").Select
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("reunir 3 CSV").Select
Range("A2").Select
ActiveSheet.Paste
Selection.End(xlDown).Offset(1, 0).Select
Sheets("coller ici le CSV BXL").Select
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("reunir 3 CSV").Select
ActiveSheet.Paste
Selection.End(xlDown).Offset(1, 0).Select
Sheets("coller ici le CSV WALL").Select
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("reunir 3 CSV").Select
ActiveSheet.Paste
End SubEt je convertis en colonnes :
Sub CSV()
'
' modifie les fichiers de base csv en excel
'
'
ThisWorkbook.Worksheets("reunir 3 CSV").Activate
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1)), TrailingMinusNumbers _
:=True
End SubC'est là que ça coince. Je n'ai plus que ma première colonne qui conserve la couleur de texte.
Comment puis je parvenir à reproduire la même couleur de police lors du convertissement en colonnes?
Merci et bonne journée à vous
Bonjour
C'est normal
Puisque tu as 365 avec PowerQuery intégré, je synthétiserai les 3 fichiers csv en une requête en gardant la colonne indiquant le nom ou une partie, j'appliquerai alors la couleur par MFC ou VBA en fonction du nom.
Simple et rapide
Si tu maintiens ton VBA, change l'ordre : fractionne en colonnes et colore avant de rassembler...
Ca fonctionne, je te remercie, je n'y avais pas pensé.
Etape suivante :
A la suite de ce que je viens de transporter dans ma feuille, j'ai des colonnes. Et je souhaiterais que le contenu de ces colonnes prennent la même couleur de ce que je viens d'importer comme données.
Par exemple en cellule A2 j'ai une donnée écrite en rouge (d'autres en bleu ou en orange), et je souhaiterais que le contenu de ma cellule G2 se mettent alors en rouge également.
Comment puis je reproduire la mise en forme en VBA ? Sachant que mon nombre de ligne est variable.
J'ai trouvé ;)
Pour ceux qui chercheraient voici le code pour copier la mise en forme de la colonne A (peu importe le nombre de lignes) vers la colonne O
Sub Macro6()
'
' Macro6 Macro
'
'
Sheets("feuil1").Select
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.ScrollRow = 28
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 1
Range("O2").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End SubBonne journée
RE
C'est du code d'enregistreur macro assez malpropre
Enlève au moins les lignes de ScrollRow
Rien de pire que les select pour ralentir VBA...
Tu as 365 alors je rappelle que
- les tableaux structurés qui permettent de simplifier et coder plus proprement existent depuis la version 2003, soit 19 ans...
- tout cela est faisable par une simple requête PowerQuery de quelques étapes et une MFC...
Bonjour 78Chris,
J'ai supprimé le scroll, effectivement...
Je me doute que ça ne doit pas être joli. Je suis débutante en VBA (je chipote quelques heures par semaine depuis un mois environ), les codes que je trouve sont glanés sur internet, et j'en teste beaucoup avant d'en trouver un qui fonctionne pour ce que j'essaie de faire. Je ne viens sur le forum qu'après avoir passé plusieurs heures à chercher. Cela veut aussi dire que les codes que je trouve datent et ne sont certainement pas beaux.... Comme je débute je suis déjà très contente quand ils fonctionnent ;)
Pour les tableaux structurés qui permettent de simplifier je vais chercher si je trouve de quoi il s'agit
Pour le PowerQuery et MFC je ne sais pas ce que c'est, à mon avis ce n'est pas encore de mon niveau ;) un jour j'espère