Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2011, 11h41   #1
Invité de passage
 
Femme
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 0
Points : 0
Par défaut Fonction de recherche améliorée

Bonjour à tous,

Je suis complètement débutante en VBA. Cependant, ma demande ne peut se résoudre qu'en VBa (me semble-t-il).

Voici ce que je cherche à créer :

Dans un premier classeur Excel, j'ai toute une série de données dont un tableau composé de 2 colonnes (une colonne reprenant la date, et une colonne reprenant des flux piétons).

Dans un second classeur, je crée un tableau qui reprend certaines données du premier fichier. J'ai une cellule qui va rechercher la valeur maximum de la colonne flux piétons du premier classeur. Dans une autre cellule, je veux afficher la date correspondant à cette valeur maximum.

Je dois donc passer par une fonction du style "Recherche".
Cependant, voilà où se trouve mon problème : la fonction recherche d'excel nécessite que les valeurs soit classée par ordre croissant. Or mes valeurs ne seront jamais triées!!

Je cherche donc à améliorer cette fonction.

Pouvez-vous m'aider?

Merci beaucoup
flo300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 12h12   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Les fonctions de recherche d'Excel ne demande pas forcément que les valeurs soient classées dans un nombre croissant, il suffit simplement de donner la valeur FAUX à l'argument "valeur_proche". Par contre, il est nécessaire que, pour la fonction RechercheV, la colonne où s'effectue la recherche soit la colonne la plus à gauche de la matrice donc, cette dernière doit être la colonne "flux piétons" (dans mon exemple, la colonne A).
Exemple :
en cellule C1 la formule =MAX(A1:A50)
en cellule D1 la formule de recherche =RECHERCHEV(C1;A1:B50;2;FAUX)
la matrice étant en colonne A et B -> A1:B50
il te faut donner le format Date à D1

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 12h24   #3
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 897
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 897
Points : 7 182
Points : 7 182
Bonjour,

Citation:
Dans un premier classeur Excel, j'ai toute une série de données dont un tableau composé de 2 colonnes (une colonne reprenant la date, et une colonne reprenant des flux piétons).
Si tu ne peux pas modifier l'ordre de tes colonnes, tu peux utiliser Index + equiv en matricielle
ici E3 étant le retour de la formule MAX proposé par Theze
Code :
=INDEX(A1:A22;EQUIV(1;(B1:B22=E3)*1;0))
Formule à valider par CTRL + MAJ + ENTREE
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 16h08   #4
Invité de passage
 
Femme
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 0
Points : 0
Tout d'abord, un tout grand merci pour vos réponses.

J'ai bêtement résolu mon problème en modifiant l'ordre des deux colonnes.

Maintenant, j'ai un autre problème du même type, mais cette fois-ci je travaille sur une plage de donnée (cf. fichier exemple en pièce jointe).

Je voudrai pouvoir afficher la tranche horaire dans une cellule, ainsi que le jour dans une autre cellule correspondant au flux maximum observé sur l'ensemble de la plage de données.

Dans l'exemple, le flux max étant 1848, je voudrais afficher le samedi entre 15h et 16h.

De plus, est-il possible d'afficher deux jours et/ou deux tranches horaires si la valeur maximum apparaît deux fois dans le tableau? Là, je crois que c'est du VBA...


Merci d'avance.
Fichiers attachés
Type de fichier : xls exemple.xls (15,5 Ko, 6 affichages)
flo300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 09h56   #5
Invité de passage
 
Femme
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par jfontaine Voir le message

Si tu ne peux pas modifier l'ordre de tes colonnes, tu peux utiliser Index + equiv en matricielle

Code :
=INDEX(A1:A22;EQUIV(1;(B1:B22=E3)*1;0))
Formule à valider par CTRL + MAJ + ENTREE
Cela fonctionne correctement lorsque je n'ai que deux colonnes. Maitenant, si je dois rechercher la valeur max dans un tableau (première colonne = heure ; colonnes 2 à 7 = flux piétons). Comment puis-je adapter la formule pour que cela fonctionne?

De plus, cela fonctionne-t-il si le résultat à afficher se trouve dans une celulle fusionnée?

Merci beaucoup.
flo300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 22h37   #6
Membre habitué
 
Avatar de Igloobel
 
Homme
Inscription : septembre 2005
Messages : 153
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2005
Messages : 153
Points : 102
Points : 102
Bonjour

Pour apporter de l'eau à ton moulin j'ai pense à certaine choses :

Tu dis :
Citation:
Dans un premier classeur Excel, j'ai toute une série de données dont un tableau composé de 2 colonnes (une colonne reprenant la date, et une colonne reprenant des flux piétons).

Dans un second classeur, je crée un tableau qui reprend certaines données du premier fichier. J'ai une cellule qui va rechercher la valeur maximum de la colonne flux piétons du premier classeur. Dans une autre cellule, je veux afficher la date correspondant à cette valeur maximum.
Je pense que tu peux tout mettre dans un seul classeur cela simplifiera

Ensuite les fonctions recherchev, index, Equiv et les fonctions BD (BDSOMME; BDMAX ...) peuvent résoudre ton problème.

Attention les formules n'aime pas les cellules fusionnées donc à éviter si possible

tu dis :
Citation:
De plus, est-il possible d'afficher deux jours et/ou deux tranches horaires si la valeur maximum apparaît deux fois dans le tableau? Là, je crois que c'est du VBA...
Effectivement si tu veux ressortir le ou les résultats il faut du VBA et ce n'est pas très compliqué puisqu'il suffit de faire deux boucle imbriquées.

Une pour gérer les colonnes et une pour gérer les lignes. Je te conseille pour cela d'utiliser l'objet Cells qui à un adressage numérique pour les colonnes et les lignes (c'est plus facile pour se déplacer en colonnes).

Mais il me semble possible que tout puisse se gérer en formules (sans cellules fusionnées bien sur)
même si je pense qu'il serait plus simple de le faire en VBA, c'est à toi de voir

Igloobel
__________________
C'est en forgeant que l'on devient forgeron, c'est en programmant que l'on devient ... chauve.
Igloobel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 10h57   #7
Invité de passage
 
Femme
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 0
Points : 0
Bonjour Igloobel, le forum,

Tout d'abord, merci de t'être penché sur mon problème.

Concernant les données sur un seul classeur, c'est impossible. En effet, ici j'ai simplifier le bazar en disant que dans un premier classeur j'avais un tableau.
Dans ce premier classeur, appelons-le "Mois1Année1", j'ai déjà plein de données, et une vingtaine d'onglets... qui génère un rapport automatique ; j'entre mes données et j'ai tous mes graphiques et calculs qui se font automatiquement, il n'y a plus qu'à imprimer

Ce classeur n'est pas unique, vous pouvez vous en douter car j'ai un classeur par mois par année. Cela fait déjà une bonne déclinaison de classeurs.

Mon but ultime serait donc d'avoir un classeur récapitulatif présentant certaines données de ces classeurs, pour en faire un rapport annuel, trimestriel,...

Enfin... je vais peut-être me simplifier la vie, car ça commence à être vachement compliqué...
flo300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h25   #8
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Je crois que tu ferais bien de te tourner vers un SGBD comme Access. C'est sûr,ça promet quelques heures de saisie (voir plusieurs jours) mais ensuite le travail de rapports et autre requêtes serait plus simple et la maintenance grandement simplifiée, enfin, c'est mon avis, Excel n'étant pas un SGBD c'est pour cette raison que ça devient compliqué quand il faut gérer un grand nombre de données.

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/09/2011, 21h40   #9
Membre habitué
 
Avatar de Igloobel
 
Homme
Inscription : septembre 2005
Messages : 153
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2005
Messages : 153
Points : 102
Points : 102
Bonjour,

Tu dis :
Citation:
Mon but ultime serait donc d'avoir un classeur récapitulatif présentant certaines données de ces classeurs, pour en faire un rapport annuel, trimestriel,...
Pour faire cela il y a la fonction Consolider dans l'onglet donnée. Je dis bien fonction pas macro même si on peut développer tout en VBA.

Theze à raison quand il dit :
Citation:
Excel n'étant pas un SGBD c'est pour cette raison que ça devient compliqué quand il faut gérer un grand nombre de données.
Pour la maintenance il a raison mais à première vue ton n'échapera pas au VBA dans ACCESS et là c'est plus coton que dans Excel

Un Conseil ; Quand on peut faire des actions sans macros et que l'on débute
Citation:
Je suis complètement débutante en VBA.
alors il faut le faire.

Plus c'est simple mieux c'est ! Moi même quand je peut utiliser les fonctions deXcel et les formules je le fait. Ce qui veut pas dire qu'il faut abandonner les macros !!!! et que je te déconseille d'en faire Non non...

Je suis prêt à t'aider en fonctions, en formules et en macros si tu veux, mais vu que c'est relativement complexe il faire au plus simple.

@ bient¤t

Igloobel
__________________
C'est en forgeant que l'on devient forgeron, c'est en programmant que l'on devient ... chauve.
Igloobel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h53.


 
 
 
 
Partenaires

Hébergement Web