Rapport de message :*
 

Formattage VBA sur report Excel

Titre du sujet : Formattage VBA sur report Excel
par Megaolive le 29/11/2007 16:13:04

Bonjour,

Je commence à travailler sur une nouvelle macro de formattage d\'un report extrait d\'une base de donnée...

Vous trouverez en fichier joint l\'exemple sur lequel je cherche à faire fonctionner ma macro.

Il est composé de 2 feuilles :
- 1 feuille \"Report\"
- 2 feuille \"Format\"

A mon avis (d\'après mon analyse de neewbie),
Le déroulement de la macro est à splitter au moins en deux étapes:
1 - Appliquer un formattage des cellules en fonction de conditions
2 - Appliquer une restructuration des lignes en fonctions de conditions

1/Pour le formattage des cellules,
Je pense m\'appuyer sur un paramétrage qui serai laissé à disposition du User sur la feuille format.

La macro doit venir prendre les \"format\" dans la feuille format et les appliquer dans la feuille \"report\" sur les cellules définies.

J\'ai 3 types de lignes à formatter :
- Les entêtes de colonne => Format 1
- Les consolidations => Format 2
- Les lignes de détail => Format 3


2/ Plus difficile, l\'étape 2, consiste à inverser les positions des Consolidations et des lignes de détails.

Etat d\'origine :
1 / Conso
2 / Detailconso1
3 / Detail Conso 2


Etat d\'arivée :
2 / Detailconso1
3 / Detail Conso 2
1 / Conso


Voila pour ce qui est du besoin global. :]

Maintenant voici le code que je commence à générer ...
Comme je suis un noob du VBA (cf post précédent :p),
Je voudrai juste me faire un petit peu orienter pour m\'approprier les fonctionnement propre au VBA et petit à petit devenir moi aussi un guru Excel :p

donc voici ou j\'en suis,
et j\'ai un problème a l\'execution :(
Run time error 438
Object doesn\'t support this method or property

à ce que je comprends, je ne peux pas tester sur le format de la cellule ?
ou pas comme ça ?

Je suis à votre écoute messieurs les gurus excel :p


'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 des titres dans la feuille format
Public Leformat As Range

Sub Format
()
'1 formattage de la ligne de titre
'
2 formattage des lignes de conso
'3 formattage des lignes de conso

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

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


    '
Boucle de formattage
    
    
For Each cell In Declencheur
    
            
'Format ligne titre
            If cell.Value = "" Then
            
                copytitleformat
                
                cell.Rows.Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False

            '
Format ligne conso [b]ICI LE PLANTAGE[/b]
            
' j'essaye de tester si format de cellule gras alors appliquer le format  conso
            
ElseIf cell.Format.Bold True Then
               
                copyconsoformat
                
                cell
.Rows.Select
                Selection
.PasteSpecial Paste:=xlFormatsOperation:=xlNoneSkipBlanks:= _
                False
Transpose:=False

            
'Format ligne Item
            ElseIf cell.Format.Bold = False Then
               
                copyItemformat
                
                cell.Rows.Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                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