[Résolu ] recherchev avec no_index_col variable

learning code

XLDnaute Nouveau
Bonjour,

Je suis en stage et je débute en VBA
Je dois mettre à jour un fichier en rajoutant dans un nouvel export certaines données de l'ancien export automatiquement car le fichier est mise à jour toute les semaines.
Voici à quoi ressemble les exports (c'est juste un exemple le document comporte plus de 30 colonnes)

Ancien
Référence......Nom............Prénom.............Email......... Poste...........Sexe.........Age
..........0.............Dupond...........Jacques.......dj@mail.com.....apprenti...........M..........22
..........1.............Dubois.............Pierre.........dp@mail.com.......salarié...........M..........40
..........2.............DuMoulin........Charles........dc@mail.com.......stagiaire........M..........20

Nouveau
Référence......Nom.......Sexe........Prénom..........Email.............Age
.......0..............Dupond........M.........Jacques.......dj@mail.com.........22
.......1..............Dubois........ M.........Pierre..........dp@mail.com.........40
.......2..............DuMoulin......M........Charles........dc@mail.com.........20


Le problème que je rencontre est que les colonnes des fichiers ne sont pas forcement au même endroit du coup pour ma RECHERCHEV je n'ai pas de numéro de colonne fixe.
Par exemple si j'effectue ma rechercheV dans l'ancien fichier l'âge se situe à la colonne 7 alors que le nouveau à la colonne 6 donc à la prochaine mise à jour la macro ne marche plus.
J'ai réussi à récupérer le numéro de la colonne mais je n'arrive pas à l'utiliser dans la RECHERCHEV à la place de no_index_col

Voici mon code
Code:
Dim Col As Integer
 
Windows("ancien_export").Activate
Col = Sheets("ancien_export").Rows(1).Find("Age", , , , xlByColumns, xlPrevious).Column    'récupérer le numéro de la colonne
 
 Windows("nouveau_export").Activate
Range("TableauBMIR[Age]").Select
    ActiveCell.FormulaR1C1 =VLOOKUP([Référence],ancien_export.xlsx!Tableau,Col,FALSE)"

Utiliser "Col" à la place du numéro de colonne ne marche pas je ne vois pas trop comme faire

Merci d'avance pour votre aide
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : [Résolu ] recherchev avec no_index_col variable

Bonsoir learning code,

Si tu repasses par ici, pourquoi la discussion a-t-elle comme préfixe [Résolu]? Tu as trouvé une solution? Si oui, indique-le ici (pour que d'autres ne se posent pas la même question que moi et parce que la solution pourrait en intéresser d'autres!?)

Si tu es toujours en recherche de solution, rien n'empêche -théoriquement- d'utiliser le n° de colonne dans une RECHERCHEV ... si ça ne fonctionne pas, il y a plein de raisons envisageables. Rien de tel qu'un petit bout de fichier représentant la structure de ton vrai fichier de travail (mais sans données confidentielles!), pour nous aider à comprendre d'où pourrait venir le souci!

La question subsidiaire étant: pourquoi une macro, si une formule donne le résultat!?

[Edit:] merci pour le retour :)
 
Dernière édition:

learning code

XLDnaute Nouveau
Re : [Résolu ] recherchev avec no_index_col variable

Bonjour,

oui j'ai trouvé une solution. Il suffit d'utiliser un equiV dans la rechercheV :
rechercheV([Reference];ancien_export.xlsx!Tableau;equiV("Age";ancien_export.xlsx!Tableau;0);faux)

mon "problème" était justement que je ne pouvais pas utiliser le numéro de la colonne car l'emplacement de cette colonne peut varier de ficher en fichier.

Une personne de l'équipe effectue un export d'un document qu'il met à jour toutes les semaines et est utilisé par plusieurs personnes.
Je travaille en parallèle sur le même fichier pour un autre projet. Je dois donc mettre en plus les données de mon projet sauf qu'il y en a pour environ 15 colonnes.
Donc ça serait plus simple de le faire via une macro au lieu de faire 15 rechercheV toutes les semaines
 

merinos

XLDnaute Accro
Re : [Résolu ] recherchev avec no_index_col variable

salut ,

c'est un problème que j'ai depuis longtemps: les export ne sont pas toujours les mêmes, mais je veux employer les mêmes tableaux...

Voici un exemple... la seule donnée importante doit être en première position... et les noms de colonnes doivent être différents.

Dans la page de recherche, tu dois juste sélectionner la colonne a retrouver.
 

Pièces jointes

  • recherche dynamique.xlsm
    22.2 KB · Affichages: 34
  • recherche dynamique.xlsm
    22.2 KB · Affichages: 48
  • recherche dynamique.xlsm
    22.2 KB · Affichages: 52

Modeste

XLDnaute Barbatruc
Re : [Résolu ] recherchev avec no_index_col variable

Bonjour merinos (bonjour à Bruxelles :))

Sans devoir utiliser ta colonne "Position", ni les numéros de lignes en C5:E5, on obtiendrait le même résultat avec une formule comme
Code:
=INDEX(Data!$B$8:$E$45;EQUIV($A7;Data!$A$8:$A$45;0);EQUIV(G$6;Data!$B$7:$E$7;0))
en C7 de la feuille Recherche ... ou quelque chose m'échappe?
 

merinos

XLDnaute Accro
Re : [Résolu ] recherchev avec no_index_col variable

Salut Modeste,
(et le petit coin de Belgique ensoleillé aujourd'hui, c'est pas tous les jours)

La raison pour laquelle je place la colonne position est de réduire le nombre de recherches.
Si tu recherche 5 colonnes, et 1000 lignes, cela commence a compter comme temps de calcul.

Dans ce cas tu as 10.000 EQUIV... et moi 1.005

Si tu passe a 6 colonnes, tu a 12.000 EQUIV et moi 1.006...

Bref, comme je suis paresseux, de fais calculer excel, et comme je suis impatient, je cherche une solution la plus rapide possible.

c'est pas encore tout a ait au point: Ma macro dynarangev ne travaille encore qu'en vertical.
(elle crée un range à longueur variable dynamiquement. )

A noter mon système fonctionne même si à l'export suivant, les colonnes changent de position. (un peu marre des automaticiens qui changent les export sans avertir)
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 329
Membres
103 517
dernier inscrit
hbenaoun63