XL 2010 Sélection de colonnes et remplacement du titre de colonnes

KIM

XLDnaute Accro
Bonjour le forum, bonjour les ami(e)s,
Je reviens vers vous pour éviter, grâce à avec votre aide, les actions répétitives avec excel. Je reçois tous les mois une extraction de notre SI et la recopie dans l'onglet BaseO (Base origine). les titres des colonnes sont toujours les mêmes par contre l'ordre des colonnes ou le nombre de colonnes risque de changer d'une extraction à une autre. Je recopie manuellement les colonnes à traiter dans l'onglet BaseT et modifie les titres pour les rendre plus lisibles. C'est l'onglet BaseT qui est à l'origine de plusieurs tableaux de synthèse.
Est-il possible, en vba,
- de lister les titres des colonnes de l'onglet BaseO,
- d'attribuer un numéro d'ordre pour les colonnes sélectionnées, voir l'exemple Base_modèle ,
- remplacer les titres des colonnes sélectionnées
- et copier les données de ces colonnes sélectionnées dans l'ordre souhaité dans l'onglet BaseT?
Ci-joint le fichier de test.
Je vous remercie de votre aide.
KIM
 

Pièces jointes

  • KIM_SelectCol_v1.xlsm
    299.2 KB · Affichages: 28

KIM

XLDnaute Accro
Bonjour les amis,
Je reviens vers vous pour essayer de supprimer une étape dans le processus et de l'intégrer dans la création de BaseT.
Ce calcul est fait par une simple formule somme, soustraction ou ratio en rajoutant manuellement les colonnes à la suite des colonnes recopiées de BaseO.
Est-il possible d'intégrer ce travail manuel dans la macro, c-àd rajouter une ou plusieurs colonnes qui sont calculées à partir des colonnes de BaseO ?
Exemple :
1/ Je rajoute une colonne,
nouveau titre : Diff_SHOB
Colonne calculée à partir de BaseO : BAT.SHOB - BAT.SUB +BAT.SUN
A rechercher ces colonnes dans BaseO et appliquer le calcul
2/ Je rajoute une colonne,
nouveau titre : SUN/SUB
Colonne calculée à partir de BaseO : BAT.SUN / BAT.SUB avec format %
A rechercher ces colonnes dans BaseO et calculer le ratio
voir fichier ci-joint.
Merci d'avance pour votre aide
KIM
 

Pièces jointes

  • KIM_SelectCol_v3.xlsm
    309 KB · Affichages: 19

ChTi160

XLDnaute Barbatruc
Bonjour
Une approche
Bonne fin de Journée
Amicalement
Jean marie
PS : J'ai remarqué que la Macro de Vgendron ne prend pas en compte
les anomalies de la Ligne d’Entêtés de la feuille BaseO .( à voir )
 

Pièces jointes

  • KIM_SelectCol_v3 Chti160.xlsm
    295.3 KB · Affichages: 19
Dernière édition:

KIM

XLDnaute Accro
Bonjour les amis,
Merci Jean marie pour cette v4. Elle fonctionne mais les colonnes à traiter sont codées en dur :
.Value = "=BaseO!S" & (.Row - 3) & "-BaseO!M" & (.Row - 3) & "+BaseO!N" & (.Row - 3)
Or elles risquent de changer de place d'une extraction à une autre par contre les titres sont figés.
Est-il possible de rechercher les colonnes par leur titre dans BaseO, d'appliquer le traitement souhaité et de la coller à la suite du tableau Listcol avec un nouveau titre ?
Cela m'évite à chaque extraction mensuelle de contrôler non seulement les colonnes de BaseO mais également l'ordre de ces colonnes.
Merci de ton aide
Bien amicalement
KIM
 

KIM

XLDnaute Accro
Bonjour Jean marie, bonjour vgendron,
Merci pour la v4. J'ai regardé la macro. Tu as introduit un nouveau tableau Tab_Colonne pour l'utiliser pour les nouvelles colonnes calculées. Je peux l'utiliser telle quelle. Elle fonctionne. Merci encore. C'est déjà beaucoup de temps gagné.
Si le temps te permet et disponible encore pour ce fil, est-il possible d'optimiser la macro ?
1/ pour éviter de rechercher 2 fois les col BAT.SUB et BAT.SUN dans BaseO. avec ListCol et Tab_colonne
2/ rajouter 2 variables au début de la macro pour le num de ligne de l'entête des col BaseO et une autre pour BaseT,
3/ Intégrer dans la fonction Recup_Tab le tableau des entêtes et toutes les colonnes prédéfinis. Cela permet de mettre à jour seulement la fonction Recup_Tab. Ainsi la macro Extract se base sur les définitions dans Recup_Tab.
4/ Calcul du ratio SUN/SUB : Je n'ai pas réussi à rajouter une condition pour ce calcul. Si BAT.SHON > 2000 alors je calcule le ratio sinon rien ou 0.
Merci encore pour votre soutien et votre aide.
Amicalement
KIM
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour KIM
Bonjour le fil,le forum
Je ne suis pas à la maison,mais ce matin avant de partir ,j ai pensé comme toi et j ai commencé à modifier la macro pour n utiliser que le tableau ListCol .
Je regarde ca et le reste des que possible.
Bonne journée
Amicalement
Jean Marie
 

ChTi160

XLDnaute Barbatruc
Bonsoir KIM
Bonsoir Le Fil ,Le Forum
Une autre version qui répond je crois aux demandes (a tester car beaucoup d'erreurs possibles , si par exemple les Références aux colonnes nécessaires aux Formules ne sont pas trouvées .)
par contre , je n'ai pas compris ceci :
3/ Intégrer dans la fonction Recup_Tab le tableau des entêtes et toutes les colonnes prédéfinis. Cela permet de mettre à jour seulement la fonction Recup_Tab. Ainsi la macro Extract se base sur les définitions dans Recup_Tab.
Peux tu , m'expliquer avec exemples Lol
Merci Par avance
Bonne fin de Soirée
Amicalement
Jean marie
 

Pièces jointes

  • KIM_SelectCol_v4.2 Chti160.xlsm
    294.1 KB · Affichages: 20

KIM

XLDnaute Accro
Bonjour Jean marie, le fil & le forum,
J'ai testé ta v4.2. Merci pour ce travail. Le choix des col OK, le calcul OK.
1/ Peux-tu stp m'expliquer les "BaseO!R[-3]C16>2000" dans la formule du calcul du ration SUN/SUB
Est-il possible de la remplacer par : =IF(BaseO!R[-3]C" & Col_BAT_SHON & ">2000,

2/ Gestion des erreurs :
Pour toute col définie dans le tableau ListCol de la fonction Recup_Tab, Si erreur, message OK. Après correction tout est OK.
Par contre s'il y a erreur dans le titre d'une col recherchée dans la macro extract et n'existe pas dans le tableau ListCol, par exemple BAT.SHOB, le calcul ne sera pas fait. C'est normal. Mais suite à la correction demandée, la macro extract ne s'exécute plus. Je m'e'xplique :
a- Dans la macro extract je saisi "BAT.SH OB"
If Tab_Entetes(1, C) = "BAT.SH OB" Then Col_BAT_SHOB = C
A l'exécution de la macro, aucun message d'erreur mais la col calculée "Diff_SHOB" dans BaseT est vide.
b- Je corrige l'erreur :
If Tab_Entetes(1, C) = "BAT.SHOB" Then Col_BAT_SHOB = C
c- Je réexécute plusieurs fois la macro, rien ne se passe.
d- Je modifie un titre de BaseO d'une col définie dans ListCol, un message d'erreur apparait.
Je corrige et la macro s'exécute normalement.

3/ Concernant mon paragraphe 3 de ma discussion #22 : Ne t'embête pas. Avec les 2 points ci-dessus la macro fonctionne et son adaptation n'est pas compliquée.

Merci encore
Amicalement
KIM
 

KIM

XLDnaute Accro
Bonsoir Jean marie,
Avec cette nouvelle version, la gestion des erreurs OK, gestion des appels des colonnes selon leurs titres OK. Méthode très pratique que j'appliquerai dans d'autres macros.
Merci encore Jean marie, merci pour ta disponibilité et ta patience.
Merci le fil et le forum
Amicalement
KIM
 

Discussions similaires