Repérer des données en fonction du nom d'une cellule situé au dessus de la plage.

G_zu

XLDnaute Nouveau
Bonjour à tous et tout d'abord merci pour les informations reçues avant mon inscription.

Je cherche à automatiser un fichier d’acquisition de données (taille:100000*100) à l'aide de l’enregistreur de macros et de formules.
J'ai réussi avec l'aide de votre forum à récupérer toutes les informations qui m’intéressent cependant je bloque sur un point que je ne trouve expliqué nul part (peut-être dû à de mauvais mots clés)...

Le tableau fonctionne parfaitement jusqu'au moment au dans le logiciel d'acquisition on ajoute un "Channel". La conséquence est que lors de l'extraction dans excel, ce channel se place dans les premières colonnes du tableau et cela décale toute la macro...

Je ne trouve donc pas comment remplacer le nom de la colonne par le titre de la plage de données (Régime, vitesse, pression, ...,)

J'ai essayé de bricoler une macro qui coupe toute la colonne du nouveau channel, qui la colle à la fin du tableau et qui décalle toutes les colonnes pour retrouver la position d'origine des anciennes colonnes mais avec la quantité de ligne, cela prend un temps monstrueux... :p

J'ai également trouvé une astuce pour faire correspondre à un mot une lettre située en l1 qui correspond à la lettre de colonne mais j'aimerais quelque-chose de plus direct, même en VBA de toute façon il faut bien se lancer un jour.

J'ai aussi vu que l'on pouvait donner un nom à une plage mais cela se base sur le nom des lignes et des colonnes et non sur le nom de la cellule correspondant au titre de la plage de données.

Je ne sais pas si j'ai été très clair?

pour info, les titres sont situés sur la l14
et le données, de la l18 à la l100000

merci d'avance.
 

pierrejean

XLDnaute Barbatruc
Re : Repérer des données en fonction du nom d'une cellule situé au dessus de la plage

Re

Je ne comprends pas !!
Si un Channel est rajouté l'appui sur le bouton debut le fera apparaitre dans la liste
Il faudra ensuite lui affecter un nouvel ordre et cliquer sur report
La 1ere partie ne doit donc en aucun cas etre supprimée
Par ailleurs je ne comprends pas non plus comment on peut changer de colonne en conservant la lettre initiale !!!
 

G_zu

XLDnaute Nouveau
Re : Repérer des données en fonction du nom d'une cellule situé au dessus de la plage

En fait lorsque j'ai supprimer la partie qui change les colonnes car avec plus de 40000lignes cela prends plus de 15min pour décaler 1 colonne. Je ne souhaite donc pas les décalé les colonnes (cela prend trop de temps) je souhaites connaitre la référence d'une colonne (lettre) correspondant à une série de données. Mais même si la lettre peut-changer, puisque les colonnes peuvent se décaler, je souhaite que l'emplacement reste identique pour que la macro correspondent toujours à la même série de donnée (Colonne;Ligne).
Donc avec votre programme il est possible de placer le nouveau channel à la fin (feuil1)(afin de conserver le bon emplacement des autres paramètres), cependant il ne conservera pas la lettre de la bonne colonne (si jamais on souhaite utiliser ce paramètre avec la lettre indiquée) puisque la colonne n'aura pas été décalée... il suffit je pense d'appeler les lettres avant le repositionnement des lettres dans l'ordre chronologique modifié...

Wouu c'est pas simple d'expliquer tout ça.
 

pierrejean

XLDnaute Barbatruc
Re : Repérer des données en fonction du nom d'une cellule situé au dessus de la plage

Re

Un essai: une formule personnalisée permettant d'obtenir la future colonne relative a un des elements de la cellule A14 de la feuille TC1
Noter les triples cotes encadrant le nom de l'element
La fonction est utilisable aussi bien sur une feuille que dans le corps d'une macro
Le terme Time etant un mot resevé d'Excel aboutit à une erreur
 

Pièces jointes

  • REPORTING_g_zu.xls
    429 KB · Affichages: 32
  • REPORTING_g_zu.xls
    429 KB · Affichages: 36
  • REPORTING_g_zu.xls
    429 KB · Affichages: 33

G_zu

XLDnaute Nouveau
Re : Repérer des données en fonction du nom d'une cellule situé au dessus de la plage

Yep j'ai failli dire excellent...
Cependant votre formule (je n'ai d'ailleurs pas réussi à voir le détail) fonctionne uniquement lorsque les acquis ne sont pas convertis... dès que l'on déroule le tout, cela ne marche plus. Il faudrait la même fonction mais pour la feuil2...

Je travail toujours avec la fonction "=INDIRECT(ADRESSE(1;SOMMEPROD(("plage où se trouve le mot"="RPM")*COLONNE("plage où se trouve le mot"))))" cela fonctionne bien sauf dans le cas ou j'insère une colonne pour placer un calcul intermédiaire. N'ayant pas réussi à trouver une liste déroulante pour écrire les lettres de l'alphabet j'ai fait une petite macro que me les places cependant quand j'insère une colonne les suivantes ne correspondent plus concernant les lettres des colonnes et celles de la première ligne (!!!logique!!!)... il faut que je travail dessus mais c'est surement un autre fil de discussion à créer.
La première solution est d'enregistrer un macro à la mano avec la fonction enregistrer qui me corrige cela qui j'insère une nouvelle colonne.

Merci pour le temps et l’intérêt que vous portez à ce petit programme.
 

pierrejean

XLDnaute Barbatruc
Re : Repérer des données en fonction du nom d'une cellule situé au dessus de la plage

Re

Voila pour la feuille 2
 

Pièces jointes

  • REPORTING_g_zu.xls
    444.5 KB · Affichages: 15
  • REPORTING_g_zu.xls
    444.5 KB · Affichages: 14
  • REPORTING_g_zu.xls
    444.5 KB · Affichages: 13

G_zu

XLDnaute Nouveau
Re : Repérer des données en fonction du nom d'une cellule situé au dessus de la plage

yes cependant...

J'ai besoin d'une quinzaine de paramètres sur tout ceux présent et une fonction avec la mise en forme de la feuille TC1 serait plus adéquat pour utilisé plusieurs éléments dans une même formule...
Mais ne vous décarcassez plus pour cela comme je vous l'ai dis la fonction indirect(.......) fonctionne plutôt bien...

Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50