Mise en forme conditionnelle par MACRO d'un classeur externe
Bonjour,
Je débute en VBA et je souhaiterais savoir s'il est possible de coloriser, grâce à VBA, les onglets d'un classeur excel.
Cas particulier :
Ma macro est contenue dans un classeur Excel "de config" qui a pour but de regrouper 3 classeurs excel en 1 seul nouveau (avec 3 onglets)
Le regroupement à déjà était effectué, il me faut maintenant coloriser mon nouveau classeur et ces onglets à partir de ma macro et selon des conditions.
De manière plus imagé : Mon classeur "Macro" doit dire au "New_Classeur", pour ces trois onglets, de colorer toute les lignes d'une certaine couleur selon si le resultat de la colonne "P" est '1' ou '0' (1 ou 0 sont des valeurs de type texte)
Les tableaux dans les trois onglets auront toujours le meme nombre de colonne mais pourront avoir plus ou moins de ligne.
Voici mon code actuel qui n'inclut rien concernant la mise en forme conditionnelle du nouveau classeur :
Option Explicit
Public Const colsep As String = ","
Public Const rowsep As String = vbCrLf
Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
-------------------------------------------------------
Sub load_csv_to_worksheet()
On Error GoTo labelerror
Dim ws As Worksheet
Dim Error_message As String
'1 Chargement du fichier csv en mémoire
Dim file_content() As String
Dim file_content2() As String
Dim file_content3() As String
'Fichier 1
Dim csvfpath As String
Dim csvfname As String
Dim outsheetname As String
csvfpath = Sheets("ACE_Input_Data_1").Cells(2, 2).Value
csvfname = Sheets("ACE_Input_Data_1").Cells(2, 3).Value
outsheetname = Sheets("ACE_Input_Data_1").Cells(2, 4).Value
'Fichier 2
Dim csvfpath2 As String
Dim csvfname2 As String
Dim outsheetname2 As String
csvfpath2 = Sheets("ACE_Input_Data_1").Cells(3, 2).Value
csvfname2 = Sheets("ACE_Input_Data_1").Cells(3, 3).Value
outsheetname2 = Sheets("ACE_Input_Data_1").Cells(3, 4).Value
'Fichier 3
Dim csvfpath3 As String
Dim csvfname3 As String
Dim outsheetname3 As String
csvfpath3 = Sheets("ACE_Input_Data_1").Cells(4, 2).Value
csvfname3 = Sheets("ACE_Input_Data_1").Cells(4, 3).Value
outsheetname3 = Sheets("ACE_Input_Data_1").Cells(4, 4).Value
Error_message = File_To_STRTable(file_content, csvfpath, csvfname)
Error_message = File_To_STRTable(file_content2, csvfpath2, csvfname2)
Error_message = File_To_STRTable(file_content3, csvfpath3, csvfname3)
If Len(Error_message) <> 0 Then
MsgBox Error_message
Exit Sub
End If
'2 Creation d'un nouveau fichier
Dim FichierExport As String
FichierExport = "c:\New_Classeur.xlsx"
Call Create_Workbook(FichierExport)
'3 Creation d'une feuille excel de destination, copie du csv dans cette feuille, Export output to new workbook
'Fichier1
Call Add_Worksheet(outsheetname, ws)
ws.Range("A1:" & DecToB26(UBound(file_content, 2)) & UBound(file_content, 1)).Value = file_content
Call Export_Worksheet(ws, FichierExport, Error_message, 1)
'Fichier2
Call Add_Worksheet(outsheetname2, ws)
ws.Range("A1:" & DecToB26(UBound(file_content2, 2)) & UBound(file_content2, 1)).Value = file_content2
Call Export_Worksheet(ws, FichierExport, Error_message, 2)
'Fichier3
Call Add_Worksheet(outsheetname3, ws)
ws.Range("A1:" & DecToB26(UBound(file_content3, 2)) & UBound(file_content3, 1)).Value = file_content3
Call Export_Worksheet(ws, FichierExport, Error_message, 3)
If Len(Error_message) <> 0 Then
MsgBox Error_message
Exit Sub
End If
Exit Sub
labelerror:
MsgBox Err.Description
End Sub
------------------------------------------------------------------------------------
' Fonction de création d'un classeur
Sub Create_Workbook(write_path As String)
Application.DisplayAlerts = False
If Len(Dir(write_path)) <> 0 Then
DeleteFile write_path
End If
Dim NewBook As Workbook
Set NewBook = Workbooks.Add
NewBook.SaveAs FileName:=write_path
NewBook.Close True
End Sub
-------------------------------------------------------------------------------------------------------
' Copie d'une feuille vers un classeur existant
Sub Export_Worksheet(ws As Worksheet, path As String, Err_Msg As String, nb As Integer)
On Error GoTo lblerr
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim wb As Workbook
Set wb = Workbooks.Open(path)
ws.Copy Before:=wb.Sheets(nb)
Application.DisplayAlerts = True
wb.Close True
Exit Sub
lblerr:
Err_Msg = Err.Description
End SubMerci par avance pour vos retours et réponses