Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
RechercheV sur 2 critères avec recherche selon nom d'une colonne
Voici mon problème : je cherche a récupérer une valeur selon 2 critères ("année/mois" et "zone géographique"). J'arrive à le faire en utilisant la fonction Index(), mais je ne suis pas tout à fait satisfait puisqu'en premier argument de cette fonction je dois spécifier la colonne qui m'intéresse, or je souhaiterais que cela soit "automatisé" selon le nom de la colonne, et non pas son numéro.
Re : RechercheV sur 2 critères avec recherche selon nom d'une colonne
Bonjour juju,
Je viens de t'ecrire une fonction rapide pour remplir le tableau du bas dans l'omglet "rapport".
Je l'ai testee, elle marche.
Code:
Sub rapport_test()
Dim annee As String
Dim mois As String
Dim date_select As String
Dim zone As String
Dim volume As String
For i = 21 To 40
Sheets("rapport").Activate
annee = Cells(i, 1).Value
mois = Cells(i, 2).Value
date_select = annee & mois
zone_min = Cells(6, 2).Value
zone = UCase(zone_min)
Sheets("HIST_TOTAL").Activate
For j = 2 To 1000
If Cells(j, 2) = "" Then Exit For
If Cells(j, 2) = date_select Then
zone_tmp = Cells(j, 4).Value
Cells(j, 4).Value = UCase(zone_tmp)
If Cells(j, 4) = zone Then
volume = Cells(j, 6).Value
Cells(j, 4).Value = zone_tmp
Exit For
End If
Cells(j, 4).Value = zone_tmp
End If
Next j
Sheets("rapport").Activate
Cells(i, 3).Value = volume
Next i
End Sub
Par contre il me reste une question pour le remplissage du nombre de personnes en haut : j'ai bien compris que tu souhaite sortir le volume pour le mois et la zone voulue, mais ta condition de date va t'elle être changée a chaque fois a la main en L4C2 ??
Re : RechercheV sur 2 critères avec recherche selon nom d'une colonne
Merci Jocelyn et Thomasson.
Je ne souhaite pas utiliser de macro pour cette partie, mais merci tout de même. Et je compte rajouter par la suite un combobox pour le choix des dates.
En ce qui concerne ta solution Jocelyn, peux-tu m'expliquer comment cela fonctionne ? Notamment la fonction décaler et choisir.
Dans l'absolu, ce que je souhaiterai, c'est que si je remplace dans mon tableau sur la feuille rapport, le libellé "Hommes" par le libellé "femmes"par exemple (ou par n'importe quel autre nom de colonne de la feuille "hist_total"), la valeur se mette à jour automatiquement. Or je vois que dans la formule proposée, apparait le libellé "hommes".
Re : RechercheV sur 2 critères avec recherche selon nom d'une colonne
re,
Je te remet un fichier qui de permet de choisir en B12 et C12 par liste de validation une des 5 valeurs ,hommes, femmes, jeunes, adultes et séniors, alors testes et si cela correspond a ton besoin je t'explique la formule choisir.
Re : RechercheV sur 2 critères avec recherche selon nom d'une colonne
Merci Jocelyn,
Ta solution répond en partie à mon besoin, cependant comme je dois fournir plusieurs tableaux différents (selon le sexe, puis selon l'age), je ne pense pas avoir besoin d'une liste déroulante à ce niveau. Mais je vais utiliser ta formule qui doit facilement s'adapter à mes besoins.
homme correspond à une plage nommée défini de cette facon =DECALER(HIST_TOTAL!$F$2;;;NBVAL(HIST_TOTAL!$F:$F)-1) cette façon de définir une plage la rend dynamique si tu ajoutes des donnée dans la colonne F de la feuille HIST_TOTAL, la plage s'agrandira toute seule. cette plage représente donc la colonne F soit celle intitulée hommes.
maintenant suivant la valeur de la cellule B12 on ne veut pas forcément trouver des information dans cette colonne.
on peut la décaler
la fonction decaler generique : DECALER(reférence de la cellule ou plage a décaler;nombre de ligne décalage;nombre de colonne décalage;hauteur a prendre en compte (utiliser par exemple dans la façon dont j'ai nommé la plage homme);largeur à prendre en compte (si les donnée sont en ligne))
ici le besoin sera de savoir de combien de colonne il faut décaler suivant la valeur de B12 pour cela on utilise la fonction choisir
la fonction choisir générique : CHOISIR(index du choix a faire (doit être le renvoi d'un chiffre entre 1 et 29);choix1;choix2;choix3;......jusqu'a 29)
nous avons besoin de 5 choix pour hommes, femmes, jeunes, adultes et séniors pour déterminer un nombre entre 1 et 5 on utilise EQUIV(B$12;HIST_TOTAL!$F$1:$J$1;0) qui donne la position de la valeur de B12 dans la plage HIST_TOTAL!$F$1:$J$1
pour l'instant nous avons donc ECALER(homme;;CHOISIR(EQUIV(B$12;HIST_TOTAL!$F$1:$J$1;0)
par contre il y a ensuite 3 type de valeur suivant que l'on soit sur la ligne volume B13, poids B14 ou Evolution annuelle B15 donc la encore choisir , se qui donne si B12 = homme pour le volume il faut rester sur la plage homme par contre si nous somme sur la plage poids il faut aller 5 colonne plus loin et si 'l'on est sur la ligne évolution il faut aller 6 colonne plus loin.
sachant que le début de choisir doit être un chiffre et qu'ici il y aura 3 choix on met en place choisir de cette facon
avec ligne()-12 cette fonction placée en ligne 13 renvoie ligne()= 13 et -12 = 1
maintenant si b12= femme pour le volume il faut aller 1 colonne plus loin par contre si nous somme sur la plage poids il faut aller 8 colonne plus loin et si 'l'on est sur la ligne évolution il faut aller 9 colonne plus long.
Re : RechercheV sur 2 critères avec recherche selon nom d'une colonne
Merci pour ces explications très claires.
Si j'ai bien compris, il faut que je connaisse précisément l'emplacement des colonnes. Et admettons que j'en rajoute une au milieu des autres, les formules ne seront plus valables ?
Cependant, logiquement les colonnes devraient rester dans cette configuration.
Merci beaucoup !
Edit : je me rend compte que cette solution est assez fastidieuse...Quand on a quelques colonnes cela n'est pas trop gênant, comme dans l'échantillon de fichier que je vous ai envoyé, mais avec une quarantaine de colonnes...Il suffit de se tromper d'un chiffre pour que le résultat ne soit pas celui attendu, sans forcement qu'on puisse s'en rendre compte. Mais si c'est la seule solution.
Dans mon esprit, l'idée est de remplacer dans cette formule la lettre F faisant référence à la colonne "hommes", par une formule me permettant de récupérer à partir de l'index de la colonne "hommes", le numéro de de la colonne.
pour obtenir l'index de la colonne "hommes" :
Code:
=EQUIV(B$12;HIST_TOTAL!$F$1:$BL$1;0)
pour obtenir la lettre de la colonne correspond à l'index trouvé :
Si j'ai bien compris, il faut que je connaisse précisément l'emplacement des colonnes. Et admettons que j'en rajoute une au milieu des autres, les formules ne seront plus valables ?
Cependant, logiquement les colonnes devraient rester dans cette configuration.
Merci beaucoup !
Edit : je me rend compte que cette solution est assez fastidieuse...Quand on a quelques colonnes cela n'est pas trop gênant, comme dans l'échantillon de fichier que je vous ai envoyé, mais avec une quarantaine de colonnes...Il suffit de se tromper d'un chiffre pour que le résultat ne soit pas celui attendu, sans forcement qu'on puisse s'en rendre compte. Mais si c'est la seule solution.
pour éviter de compter les colonnes, j'ai mis en exemple dans le fichier uniquement sur B13, B14, B15 une formule ou tous les chiffre des fonctions choisir sont remplacés par des équiv qui règlent le soucis de connaitre a l'avance les colonnes, mais pour cela il faut changer les valeurs des cellules A13, A14, A15 comme dans l'exemple
cette solution permet en plus d'alléger la formule
regardes et dis nous
EDIT :
cette solution la aussi fonctionne même si persionnellement je ne la pense pas plus simple mais chacun voit les choses a sa façon
Re : RechercheV sur 2 critères avec recherche selon nom d'une colonne
Parfait Jocelyn !
Voila la solution qui me convient parfaitement !
Pour ce qui est des valeurs des cellules A13, A14, A15 je vais les dissimuler et écrire conserver des libellés plus explicites à coté, histoire d'avoir un tableau plus présentable.
Merci pour tout le mal que tu t'es donné, c'est très appréciable !
Re : RechercheV sur 2 critères avec recherche selon nom d'une colonne
Bonjour,
je revient vers mon problème d'origine.
Les temps de calculs étant, à la longue, beaucoup trop importants avec la solution proposée par Jocelyn, j'ai décidé de créer une "clé" en concaténant mes critères de recherche : "Mois/année_zonegéo".
Cette solution permet d'utiliser la fonction rechercheV() classique et moins gourmande.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.