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:=xlFormats, Operation:=xlNone, SkipBlanks:= _
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
|