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.
 

eddy51

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

Bonjour,
Quand tu est dans ta cellule d'affichage tu clique sur cette fameuse l14 , si c'est un vrai tableau il entera le nom tous seule , sinon tu rempli une cellule manuellement l18 et l100000 et tu l'etend

OU ALORS TU NOUS DONNES TON FICHIER
 

G_zu

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

Bonjour,
Merci de ta réponse cependant, ce n'est pas un vrai tableau, de plus je cherche à ne pas avoir à étendre cela génère un temps de la macro trop long pour toute les données. Disons que je cherche à sélectionner une plage (colonne) correspondant à un paramètre (régime,...), j'utilise les formules "nb.si.ens" qui me permettent de dénombrer les plage de fonctionnements qui m’intéressent (sur-régime / pression trop faible / ...) que cette colonne peut changer suivant l'évolution du nombre d’acquisitions (plus je rajouterai de paramètres, plus elle se décalera vers la droite et la macro ne suis logiquement pas ce décalage...
 

G_zu

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

ayayaye toujours pas une délictueuse solution miracle... :confused:
je me replonge actuellement sur ce problème. j'ai essayer d'automatiser la fonction recherche sans succès.
En résumé je cherche à placer dans une formule (par exemple: nb.si.ens(plage1;critère1;...)) une plage (une colonne) qui peut (malheureusement) changer de position. L'unique solution de reconnaître cette colonne est son nom situé juste au dessus.
Formules, VBA, matlab... je suis ouvert à toute proposition.
mil gracias
 

pierrejean

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

Bonjour G_zu

On ne te demande pas ton fichier entier mais un fichier exemple ayant la même structure et quelques lignes de données anonymes et representatives
Avec si possible une page d'explication specifiant d'ou on part et ou tu veux arriver
Je te garantis que ce petit travail portera ses fruits bien plus vite que tu peux l'imaginer
 

G_zu

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

Bonjour,

Merci pour la rapidité de la réponse. Ci-joint le fichier légèrement modifié:
- il y a beaucoup moins de ligne...
- seulement le régime est indiqué dans la macro

En cliquant sur le bouton on obtient le temps passé en zone de régime maxi.
Le problème c'est que la colonne "RPM" peut (suivant l'utilisation du logiciel d'acquisition) se décaler vers la droite.
Il serait donc intéressant de pouvoir repérer l'emplacement de la "RPM" par son nom et non pas une ligne et une colonne.


Je travail actuellement sur la fonction INDIRECT() je pense que c'est la solution la plus simple qui permet d'associer à une case une lettre (la lettre de la colonne tant désirée!!!)

Je ne suis peut-être pas très clair... :)
 

Pièces jointes

  • REPORTING.zip
    52 KB · Affichages: 34
  • REPORTING.zip
    52 KB · Affichages: 35
  • REPORTING.zip
    52 KB · Affichages: 37

Staple1600

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

Bonsoir à tous
______________
[EDITION: Bonjour PierreJean, plaisir réciproque]


G_zu
Par rapport à ceci
Le problème c'est que la colonne "RPM" peut (suivant l'utilisation du logiciel d'acquisition) se décaler vers la droite.
le code ci-dessous devrait pouvoir t’inspirer ;)
VB:
Sub a()
Dim test As Range
Rows(1).Clear
Randomize 290612
Cells(1, 1).Resize(, (Rnd * Columns.Count) + 1).Formula = "=COLUMN()"
Set test = Cells(1, Columns.Count).End(xlToLeft) 'seule cette ligne pourrait t'intéresser, je pense ;-)
Application.Goto test, True
MsgBox test.Address
End Sub
Testes-tu cette macro dans un classeur vierge plusieurs fois de suites, tu verras qu'elle te trouveras la dernière cellule non vide la plus à droite de la ligne 1.
 
Dernière édition:

pierrejean

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

Re

Salut Staple ;) ;)
Heureux de te croiser

@ G_zu

Vois si ceci peux t'aider:

En feuil1 tu cliques sur DEBUT puis modifie l'ordre d'arrivée Pour avoir le report dans l'ordre souhaité en Feuil2
 

G_zu

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

Bonjour,
Merci pour ta réponse Staple1600 cependant je ne vois pas comment retrouver la colonne "rpm" automatiquement avec ton code...
Merci également Pierre Jean néanmoins soit je ne trouve pas ce qui peut m'aider soit il n'y a pas la pièce jointe...
Bonne journée
 

pierrejean

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

Re
Avec toutes mes excuses
 

Pièces jointes

  • REPORTING_g_zu.xls
    422 KB · Affichages: 48
  • REPORTING_g_zu.xls
    422 KB · Affichages: 50
  • REPORTING_g_zu.xls
    422 KB · Affichages: 50

G_zu

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

Alors là mesdames et messieurs c'est du grand Mendès!!! Non seulement Pierre Jean à répondu à ma question mais en outre et non des moindres le programme est fait et parfait. Le problème que j'avais étais que je pouvais ajouter des channels et ces derniers s’intercalaient au début des colonnes et non à la fin...
La macro fonctionne très bien quel que soit le nombre de ligne. Cependant je vais continuer à travailler sur le fait d'associer à un nom de la plage, la lettre de la colonne en question pour la placer dans les formules. Car le fait de déplacer des des colonnes de plus de 60000 lignes est quel que peu chronophage (mon ordinateur y est surement pour quel que chose).
Merci beaucoup Pierre Jean je suis certain que ces infos pourront profiter à beaucoup de monde. Si je trouve quelque chose d’intéressant je ferai de même.
Bon dimanche.
 

pierrejean

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

Re

Avec cette version , on obtient la lettre de colonne relative a chaque titre dans la feuille 1 apres avoir cliqué sur le bouton REPORT
 

Pièces jointes

  • REPORTING_g_zu.xls
    433 KB · Affichages: 60
  • REPORTING_g_zu.xls
    433 KB · Affichages: 57
  • REPORTING_g_zu.xls
    433 KB · Affichages: 54

G_zu

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

OK maintenant que je suis un peu plus réveillé mon problème n'est pas tout à fait résolu :p...

J'ai trouvé cela pour pouvoir retrouver la référence de la colonne associée à un mot:

Il faut indiquer en L1 toutes les lettres correspondant aux colonnes et ensuite placer cette formule où vous le désirez
=INDIRECT(ADRESSE(1;SOMMEPROD(("plage où se trouve le mot"="RPM")*COLONNE("plage où se trouve le mot"))))

Il me reste désormais à inclure cela dans les formules... Je vous tiens au courant.


Pour que ton programme me convienne parfaitement Pierre Jean, il serait nécessaire de pouvoir choisir la position des titres dans la feuil1 indépendamment de la position des colonnes.
Si je rajoute un channel sur ton programme il se place en 3ème positions (je ne sais pas pourquoi???) donc colonne C. C'est cela qui décale toute la macro.
Avec ton programme je peux le déplacer à la fin mais avec des milliers de lignes cela prend trop de temps.
J'ai donc supprimé la 1ère partie pour ne conserver que le placement des lettres. Je peux donc placer le nouveau channel à la fin grâce au numéro de position cependant je souhaiterais qu'il conserve sa lettre de colonne initial.
Et je ne maîtrise pas du tout VBA avec les "N" Je ne sais pas si tu connais quelques pages web qui pourrais m'aider dans ce domaine car c'est très intéressant?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 899
Membres
103 024
dernier inscrit
rdge