Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 29-11-2007 16h13
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
|
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 29-11-2007 18h04
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
|
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 29-11-2007 20h02
Je vais noter ici mon presque algo en cours de traitement :p
J'espère aider les gurus à me guider :p "Scanner" la zone Declencheur Pour chaque cellule de la zone declencheur Si la police de la cellule de la zone declencheur scannée est en gras, la ligne correspond à une Conso Alors a chaque conso trouvée Inserer une ligne Vide au dessus "Scanner" la zone Declencheur Pour chaque cellule de la zone declencheur Si la police de la cellule de la zone declencheur scannée est en gras, la ligne correspond à une Conso Alors a chaque conso trouvée couper la ligne Conso trouvée Et la coller sur la ligne vide suivante? (Cette approche me semble plus realiste)+> mais comment avoir cette condition en vba ? c'est à dire comment definir la valeur de la ligne vide ? ca ma tout l air d etre deux fonctions differentes ? je suis bon pour ecrire deux petites procedures 1/ le decoupage "decouper" sur la meme base que le formattage un IF de plus dans mon FOR existant qui fini par inser.entirerow 2/ le deplacement des consos 1 par 1 suite au decoupage la je commence a sécher j'ai comme le sentiment que je vais avoir besoin d un compteur et d une boucle ? voire de deux compteurs et de deux boucles ? :p je m y perds un peu y il faut ke je commence a syntaxer le début de ce process Ajouter une ligne sous chaque conso pour commencer i will be back :p
Edité par Megaolive le 29/11/2007 20:56:29
|
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 29-11-2007 21h12
Bonsoir Megaolive,
Tout d'abord, merci pour ton retour ici (mieux vaut tard que jamais ![]() A vrai dire, je n'ai pas tout compris quant à l'étape 2 d'inversion Conso / Détail... Plutôt que : Etat d\'origine : 1 / Conso 2 / Detailconso1 3 / Detail Conso 2 Etat d\'arivée : 2 / Detailconso1 3 / Detail Conso 2 1 / Conso Ne faut-il pas comprendre... Etat d\'origine : 1 / Conso1 2 / Detailconso1 3 / Conso2 4 / DetailConso2 Etat d\'arivée : 2 / Detailconso1 1 / Conso1 4 / DetailConso2 3 / Conso2 Je pense que le mieux serait que tu reprennes ton classeur exemple ci-dessus et que tu ajoutes un onglet reflétant exactement le résultat souhaité (un onglet avec les données de départ + un onglet avec le résultat souhaité par automatisme) Cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 29-11-2007 21h40
Citation :
Ne faut-il pas comprendre... le bemol qui fait toute la difference, le nombre de DetailConso(n) est variable entre chaque conso... enfin a mon niveau ca fais toute la différence :p le code de formattage sur la feuille report fonctionne mais je n ai pas attaqué le renversement des conso j'ai l impression que mon fichier ne s uploade pas depuis mon pc...je dois avoir un soucis de réseau. merci pour vos idées ( je résoud mes problèmes réseau et poste le fichier exemple)
Edité par Megaolive le 30/11/2007 11:04:03
|
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 29-11-2007 23h23
Re,
Le fichier zip que tu as joint est vide (0 octet) :bof: (pour info, 80ko sont autorisés par fichier dans ce forum) Cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 30-11-2007 11h06
J'ai glissé le fichier contenant le résultat souhaité.
J'avais des problème d'upload, depuis mon domicile... Je commence à essayer de syntaxer la partie 2 du traitement à savoir l'inversion dans la table des éléments de conso et des éléments de détails. Merci pour vos éventuelles idées/conseils ;) |
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 30-11-2007 14h24
Maydey Maydey ! :p
Je continue donc d'ecrire ma petite macro de formattage : Je butte sur l'insertion d'une ligne vide après chaque consolidation. Je n'arrive pas à l'insérer car, j'insère la ligne via : Et comme vous pouvez le voir dans le code : "Selection.Insert Shift: xlDown" Fais descendre la consolidation en insérant une ligne au dessus. la macro detecte a nouveau une consolidation au dessous... et c pars en boucle... je cherche à insérer des lignes dans l'autre sens (en dessous de mes conso...).
'Insertion des ligne vides
|
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 30-11-2007 15h52
Toujours bloqué sur l'insertion des lignes....
Je pense que je vais revoir mon approche globale... ![]() je pense qu'un café sera du meilleur effet!!! ![]() A toute à l'heure ![]() |
|
![]() |
![]() ![]() |
Re: Formattage VBA sur report Excel | ||
---|---|---|
Inscription: 12/07/2007
Messages:
19
|
Posté le : 30-11-2007 17h45
JE dois etre fatigué mais je ne trouve vraiment pas une méthode pour insérer une ligne en fonction d'une condition rencontrée...
Aparemment, il faut que je trouve une autre façon de tester mes cellules pour l'insertion des lignes à vide. Pour le renversement des items dans le tableaux, je vais plutot m'orienter vers une restructuration de la requête à la base de données de façon à "structurer" le report avant qu'il ne descende dans Excel... Evidement, cela n'annule pas mon besoin concernant l'insertion de lignes vide et de formatage de mes cellules... Je navigue sur les forums désespérément en quète d'une méthode un peu clean pour faire ça... Le fait qu'Excel lors de l'insertion d'une ligne garde en sélection la ligne inséré créé une boucle sur la détection de cellule en gras dans la zone declencheur. En effet, je me retrouve à insérer une infinité de ligne devant ma première consolidation, amusant mais loin du résultat simple attendu ![]() Je crois comprendre que j'ai besoin de dire a excel, Quand tu trouve "LA PREMIERE FOIS UNE CONSOLIDATION" insères une ligne sinon skip :p mais jusque la je n'ai rien produit de très convaincant... |
|
![]() |
![]() ![]() |
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
Qui consulte actuellement ce sujet ?
3 Utilisateur(s) anonymes