Rapport de message :*
 

Re: Formattage VBA sur report Excel

Titre du sujet : Re: Formattage VBA sur report Excel
par Megaolive le 29/11/2007 18:04:33

Bon j'avance a tatton sur mon sujet :

j'ai trouvé la coquille du code précédent,
j'avais remplacé ".Font" par ".format" dans le code précédent tellement j'étais obsédé par le test sur le format :)

CI dessous mon dernier code qui fonctionne pour la mise à jour des trois types de format :(Titre,Conso, Item...

Comme toujours les critiques les plus acerbes sont les bienvenues !


Je m'attaque maintenant à la restructuration des lignes.

Je vois une procédure un peu comme ça :
Si Ligne = Conso (déduit par détection du format)
alors couper les N lignes suivantes jusqu'a la prochaine conso non comprise.
et les coller au dessus de la conso détecté précédement.

encore une fois toutes les pistes sont les bienvenue....:]

'Option Explicit
'
pour forcer la declaration de variable
Option Explicit

'Declaration des varibable en public
'
pour les utiliser dans toutes les sousfonctions

'Variable Worksheet Report
Public Reportsheet As Worksheet

'
Variable Worksheet Format
Public FormatSheet As Worksheet

'Variable Colonne contenant la condition
Public Declencheur As Range

'
Variable qui prendra les valeurs de cellules
'contenant la condition
Public cell As Range

'
Variable Cellule du format dans la feuille format
Public Leformat As Range

Sub Format
()
'définition des trois types de formattage
'
titre
'conso
'
item

'definition valeur de ReportSheet
Set Reportsheet = Worksheets("REPORT")

'
definition valeur de Declencheur
Set Declencheur 
Reportsheet.Range("A1:A50")


    
'Boucle de formattage
    
    For Each cell In Declencheur
    
            '
Format ligne titre
            
If cell.Value "" Then
            
                copytitleformat
                
                cell
.EntireRow.Select
                Range
(SelectionSelection.End(xlToLeft)).Select
                Selection
.PasteSpecial Paste:=xlFormatsOperation:=xlNoneSkipBlanks:= _
                False
Transpose:=False
            End 
If
            
            
'Format ligne conso
            If cell.Value <> "" Then
            
            cell.Select
            If Selection.Font.Bold = True Then
                        
                copyconsoformat
                
                cell.Select
                Range(Selection, Selection.End(xlToRight)).Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
            End If
            End If
            '
Format ligne Item
           
If cell.Font.Bold False Then
               
               copyItemformat
                
                cell
.Select
                Range
(SelectionSelection.End(xlToRight)).Select
                Selection
.PasteSpecial Paste:=xlFormatsOperation:=xlNoneSkipBlanks:= _
                False
Transpose:=False
            
           End 
If
        
Next
End Sub

Sub copytitleformat
()
                
'definition valeur de FormatSheet
                Set FormatSheet = Worksheets("FORMAT")
                '
definition valeur de Title
                Set Leformat 
FormatSheet.Range("B5")
                
Leformat.Copy
End Sub

Sub copyconsoformat
()
                
'definition valeur de FormatSheet
                Set FormatSheet = Worksheets("FORMAT")
                '
definition valeur de Conso
                Set Leformat 
FormatSheet.Range("B6")
                
Leformat.Copy
End Sub

Sub copyItemformat
()
                
'definition valeur de FormatSheet
                Set FormatSheet = Worksheets("FORMAT")
                '
definition valeur de Item
                Set Leformat 
FormatSheet.Range("B7")
                
Leformat.Copy
End Sub