Trouver une valeur en utilisant recherche multiple

Bonjour,

Je cherche une macro qui me permet de trouver une valeur dans un tableau à partir de 2 critères différents afin de pouvoir l'appliquer et l'utiliser sur plusieurs fichiers excel au besoin:

1er critère un mot clé dans les colonnes A:C

2ème critère un mot clé dans la ligne 1 (intitulé de colonne)

sachant que ces mots clés ne se trouvent pas toujours au même endroit

Si on prend le fichier joint comme exemple j'aurai besoin de chercher la valeur dans la case qui correspond au Total intermarché et qui se trouve sous Qarter et la coller dans une case vide.

Dans la 2ème feuille on voit que Total intermarché et quarter ne sont plus dans le même ordre et case d'où le besoin de chercher par mot clé...

Des idées?

74exemple-test.xlsx (9.70 Ko)

Bonjour,

pourquoi une macro ? une formule suffit.

En B18 :

=INDEX($A$1:$E$13;EQUIV($A18;$A$1:$A$13;0);EQUIV(B$17;$A$1:$E$1;0))

eric

J'ai besoin d'une macro car il y a beaucoup de fichiers à retraiter et différents mots clés à rechercher et ce que vous voyez sous résultat recherché en réalité ne figure pas dans les fichiers c'est moi qui l'a rentré à la main pour afficher l'exemple. J'ai besoin de l'automatiser également parce que je dois copier (automatiser un copier coller"vers un autre fichier excel avec des résultats.... mais merci quand même

A ce moment là il faudrait un fichier réel anonymisé pour mieux voir les contraintes.

Et expliquer comment la macro trouvera les cellules à modifier, les plages de données, et si tu y veux le résultat brut ou une formule.

eric

Voilà 3 fichiers type. J'ai mis dans un autre fichier les resultats que je voudrais extraire/automatiser de ces 3 premiers fichiers

J'ai besoin de chaque fichier de copier le budget qui se trouve sur la ligne carrefour et auchan et qui est sous la colonne mois d'avril

Pour conclure je cherche une macro qui trouve l'intersection d'une ligne et d'une colonne en fournissant le texte contenu en entête de colonne et celui contenu en entête de ligne et que cela peut être répété pour autant de entête de ligne que j'ai besoin.

D'avance merci

23budgetbrut.xlsx (9.03 Ko)
17budgetnet.xlsx (9.02 Ko)
18budgetautre.xlsx (9.02 Ko)

Désolé mais tes fichiers de données ne se ressemblent pas, faits à la va vite sans contrôle j'ai l'impression.

Un fichier de données c'est :

  • pas de lignes vide
  • pas de colonnes vide
  • pas de titre de champs absents
Tu ne respectes aucun de ces critères...

Résultat que j veux obtenir du fichier budget brut

AUCHAN 8053

CARREFOUR 211

Ou est le 2nd paramètres dont tu parlais ?

D'ou sort 8053 ?

Et des résultats posés comme ça n'importe ou dans la feuille ?

Et la macro doit deviner les noms des fichiers ?

Ce n'est pas à nous de perdre du temps à essayer de comprendre (souvent mal) et à essayer de deviner ce qui n'est pas dit mais à toi de prendre du temps pour fournir des explications claires, complètes et précises.

Pas assez rigoureux pour moi, je suis sur le point d'abandonner.

eric

Les fichiers ne se ressemblent pas et il y a des lignes vides mais c'est comme ça parce que les fichiers que je dois retraiter sont comme ça... je sais que c'est compliqué mais justement j'ai beaucoup de fichiers comme ca avec des tableaux qui commencent pas à A1 et qui ont des cases vides ....

Je ne respecte pas les criteres parce que en réalité je reçois des fichiers qui ne respectent pas ces criteres...

... ok disons que je retraite des fichiers où il n'y a pas de ligne/colonne vide comme les fichiers budgetbrut et budgetnet:

Le premier parametre c'est bien le nom de cette ligne: carrefour, auchan etc

Le deuxième parametre est la colonne Avril 2012

Le 8053 est le budget brut d'Auchan pour Avril 2012

Donc le besoin est le suivant:

-une macro qui trouve l'intersection de la ligne qui commence par Auchan et de la colonne qui commence par Avril 2012

ensuite qui trouve l'intersection de la ligne qui commence par Carrefour et de la colonne qui commence par Avril 2012

ensuite l'intersection de la ligne qui commence par Intermarché et de la colonne qui commence par Avril 2012

etc.

En ce qui concerne les résultats je tiens pas que ca soit dans une nouvelle feuille excel. J'ai joint ce fichier comme exemple...

J'ai juste besoin de faire une liste avec les "magasins" qui m'interessent et de ne pas les chercher à chaque fois parmi une liste longue dans chaque fichier mais juste de lancer la macro qui va m'extraire les données.

Les données ca peut etre mis à la premiere ligne vide de la meme feuille par exemple comme ca j'aurai que à les selectionner et copier...

J'espere avior ete plus clair cette fois

Est-ce que les noms peuvent réellement être dans une autre colonne que A ?

Si oui, un nom peut-il être présent plusieurs fois sur les feuilles datas ? Si oui comment reconnaitre le bon sinon c'est mort.

Ou bien tu supprimes les colonnes pour que les noms soient toujours en colonne A ce qui serait le plus fiable...

eric

Je viens d'imaginer une autre solution qui me paraît plus simple:

Pour réopndre à votre question un nom peut etre present sur une feille une seule fois

Et oui ça peut etre dans une autre colonne

Donc est-il possible de:

chercher d'abord le nom qui détermine ma ligne et récuperer l'adresse de sa cellule

chercher le nom qui détermine ma colonne et récuperer l'adresse de sa cellule

Sub test()

Dim SonAdresse As String

Dim LaCellule As Range

Set LaCellule = Cells.Find(what:="Carrefour")

SonAdresse = LaCellule.Address

Cells(20, 1).Value = SonAdresse

End Sub

Sub test2()

Dim SonAdresse As String

Dim LaCellule As Range

Set LaCellule = Cells.Find(what:="Avril 2012")

SonAdresse = LaCellule.Address

Cells(20, 2).Value = SonAdresse

End Sub

Avec ces 2 macros je sais que l'un se trouve dans la cellule A4 et l'autre dans la cellule F1 (cf fichier joint)

Comment faire maintenant pour récupérer le 4 de "A4" et le F de "F1" et ensuite crééer une nouvelle adresse de cellule qui est F4 et recuperer la valeur qu'elle contient? Comme çé j'évite le pb avec les lignes/colonne vides dans le tableau?

35budgetautre.xlsm (14.80 Ko)

Bonjour

Une idée

Bon, pas la peine qu'on soit 2 pour ça, je te laisse avec banzaï (salut).

eric

Bonjour

eriiic a écrit :

Bon, pas la peine qu'on soit 2 pour ça, je te laisse avec banzaï (salut).

Cela veut dire que tu ne sais pas le faire ou tu ne veux pas le faire

Il n'y a qu'une personne que cela va gêner c'est direct3822, il va pas profiter de ton point de vue

Dommage

J'attendais sa réponse pour finir et pas de difficultés particulières non si ce n'est lever les dernières ambiguïtés.

Lui-même a le principe, après ce qui change c'est l'ergonomie.

eric

Bonjour

Ne le prends pas mal mais cela ressemble plutôt à un claquage de porte

Ce n'est pas parce qu'il y déjà une réponse, que cela empêche d'en apporter une autre

Amicalement

Disons que je ne trouve pas nécessaire de faire 2 fois la même chose même si j'avais fais d'autres choix au niveau de l'ergonomie du choix de fichier.

L'important est que le résultat soit là.

eric

Banzai64 a écrit :

Bonjour

Une idée

Merci Banzai64! Effectivement c'est une solution... dans mon cas il y a quelques contraintes: le nom de chaque fichier à chaque fois est différent. Voilà pourquoi j'avais donné le fichier avec les résultats à titre d'exemple juste pour montrer ce que je cherche comme résultat final.

Pourrais-tu regarder mon dernier message et me dire ce que t'en penses? je pense que cette solution sera plus pratique pour moi mais je sais pas comment optimiser et finir le code....

D'avance merci

Bonjour

Je ne comprends pas à quoi servent tes macros dans la réalisation de ton problème

Il faudrait redéfinir les bases de ta demande

Je pense, que suivant les fichiers que tu as fournis, la solution que je propose est adaptée

Si maintenant les règles ont changées, il faudrait les énoncer et voir ce que l'on peut faire avec (pas sur qu'avec les nouvelles règles j'ai une solution)

Alors tu indiques ce que tu as et ce que tu veux et surtout où tu veux le résultat

C'est vrai que là c'est devenu un peu compliqué mais comme eriic m'a dit que c'était pas possible avec ce que j'avais fourni en premier et peut etre j'ai mal explqué certaines choses si vous me permettez je vais commencer de 0!

Donc ci-joint 2 fichiers:

Fichier 2 est un fichier type qui ressemble à tous les autres fichiers

Fichier 3 est le fichier dont à la fin j'ai mis le résultat final dont j'ai besoin

Le souci et le besoin d'avoir une macro est dans le fait que les cases à copier ne sont toujours pas au même endroit.

Dans le fichier 2 par exemple le budget total carrefour se trouve dans la case "I33" mais dans un autre fichier il peut etre dans la case "J45" par exemple ou autre . Idem pour le buget total auchan intermarché etc.

Mon besoin est d'extraire et de recuperer de tout ce fichier que les "budget total" de carrefour, auchan intermarché etc.... donc la case qui est l'intersection entre Total Carrefour et budget total, coller ce budget quelquepart sur le fichier 'par exemple sur la feuille 2 du fichier

ensuite aller rechercher l'intersection entre Total Intermarché et budget total, la coller sous celui de carrefour etc etc

La solution que j'ai trouvé mais que je ne peux pas finaliser en code :

Sub test()

Dim SonAdresse As String

Dim LaCellule As Range

Set LaCellule = Cells.Find(what:="TOTAL Carrefour")

SonAdresse = LaCellule.Address

Cells(50, 1).Value = SonAdresse

End Sub

Sub test2()

Dim SonAdresse As String

Dim LaCellule As Range

Set LaCellule = Cells.Find(what:="Budget total")

SonAdresse = LaCellule.Address

Cells(50, 2).Value = SonAdresse

End Sub

Je m'explique:

Avec ces deux macros je récupère l'adresse du budget total de carrefour (donc pour cette partie j'ai besoin d'une petite optimisation qui va me permettre de faire la même chose pour auchan intermarché etc.)

Une fois l'adresse de la case du budget total de carrefour trouvé je l'ai dans les cases A50 et B50.

Maintenant ma question est comment transformer la valeur de ces cases qui sont B33 et I1 afin d'obtenir I de I1 et 33 de B33 => I33 et ensuite comment aller chercher la valeur qui se trouve dans cette case? Et bien sur idem pour Budget total Auchan intermarhé etc...

J'espere avoir ete clair cette fois ci

et encore merci

28fichier-2.xlsm (18.65 Ko)
16fichier-3.xlsx (13.17 Ko)

Bonjour

Bien le gag

2 fois le même fichier

Pourquoi ouvrir le résultat tu ouvres la source et tu as le résultat

le résultat se trouve dans le fichier 3 en rouge en dessous du tableau

Rechercher des sujets similaires à "trouver valeur utilisant recherche multiple"