Tableau récapitulatif d'offres

Max29 -  
bouket Messages postés 147 Statut Membre -
Bonjour,

Je suis actuellement en stage et développe un outil sur excel pour permettre de réaliser plus rapidement des devis. Mais voilà, alors que mon fichier est presque terminé, je bloque sur un gros problème. En effet, afin que mon devis se remplisse automatiquement, il faut préalablement remplir une fiche de renseignements à la fin de laquelle se trouve un tableau dont le but est de récapituler les offres possibles en fonction des critères renseignés.

J'ai utilisé des fonctions SI imbriquées et des fonctions recherchev. Pourtant à chaque fois le résultat correspond systématiquement au dernier produit de ma liste alors qu'il y a des produits précédents qui répondent aux mêmes critères.

Y aurait-il quelqu'un qui pourrait m'aider ? Je pensais éventuellement construire une macro mais je suis novice dans ce domaine-ci...

30 réponses

bouket Messages postés 147 Statut Membre 22
 
Ah, je crois avoir trouvé !
vous avez fait la même erreur qu'avec le prix, sauf que cette fois la probabilité pour que le prix soit exactement trouvé est faible, enfin bref :

If (prix_rech <> "") Then

Cells.Find(what:="prix", after:=ActiveCell, LookIn:=xlFormulas, lookat _
:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:= _
False, searchformat:=False).Activate

colonne_prix_unitaire = ActiveCell.Column

While (j < 150) 



Une nouvelle fois, on cherche l'entête, au cas où on rajouterais des colonnes dans la base ;)
0
Max29
 
Malheureusement, une fois encore, ca ne fonctionne pas !

If (prix_rech <> "") Then

Cells.Find(what:="prix unitaire", after:=ActiveCell, LookIn:=xlFormulas, lookat _
:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:= _
False, searchformat:=False).Activate

colonne_prix_unitaire = ActiveCell.Column

While (j < 150)

If (table_resultat(j) <> 0) Then
prix_unitaire = Cells(table_resultat(j), colonne_prix_unitaire)
If ((prix_unitaire < (prix_rech * 0.9) And prix_unitaire > (prix_rech * 1.1)) Or prix_unitaire = "") Then
table_resultat(j) = 0
End If

End If

j = j + 1
Wend

End If
0
bouket Messages postés 147 Statut Membre 22
 
remplacer :
table_resultat(j) = 0 par table_resultat(j) = 1 et voir le résultat, normalement, on doit voir copier dans la zone de résultat le nombre d'offre correspondant à la marque
0
Max29
 
Toujours rien avec ce changement !

J'ai remodifié le code en remplaçant "cells.find(what:="marque")" par "cells.find(what:="marque_rech"), idem pour le prix (même si vous m'avait dit de modifier précédemment). Avec cette modif, le curseur se déplace dans ma feuille "base" en respectant les critères de marque et de prix de ma feuille "dimensionnement".

Par contre, la macro refuse de sélectionner (aucun message d'erreur). Le curseur se déplace uniquement sur les bonnes références mais ne les copie pas !
0
Max29 > Max29
 
Pour précisions, quand je copie votre macro et que je modifie uniquement les différents intitulés, le curseur se bloque sur l'entête de la colonne "prix unitaire" de la feuille "base".
0
bouket Messages postés 147 Statut Membre 22
 
désolé, je n'ai plus du tout d'idées! normalement, cela devrait fonctionner, je ne comprend pas
0
Max29
 
Pourriez-vous alors me transmettre votre adresse e-mail afin de vous envoyer une version très edulcorée du fichier. (Je n'ai pas envie de le poster sur la toile).

Merci pour votre aide.
0
bouket Messages postés 147 Statut Membre 22
 
vous pouvez m'envoyer le lien en mp :) ! sinon mon adresse mail c'est https://www.cjoint.com/?issMK7rRSK
0
Max29
 
Après une bonne demie heure de pause, j'ai réessayé la macro mais cette fois-ci avec le fichier que je vous avais préparé (cad uniquement les 2 feuilles concernées).

Et là magique, la macro fonctionne !!!

Maintenant la question est : pourquoi ne marche-t-elle pas sur le fichier qui comporte 11 feuilles ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bouket Messages postés 147 Statut Membre 22
 
ahah ! mdr ! vérifiez l'intitulé exact des feuilles (attention accents, espaces, majuscules ?) ! je ne vois que cela !
0
Max29
 
voici le lien de mon fichier (très simplifié) : https://www.cjoint.com/?ista3OaNs4
0
bouket Messages postés 147 Statut Membre 22
 
et bien il marche : https://www.cjoint.com/?istFFrZjpH

c'était, comme je l'ai déjà dit, la recherche : si vous mettez la variable prix_unitaire au lieu de l'intitulé de la colonne "prix unitaire", alors il définit la colonne 20 (avec la recherche"4") ... et alors il exclut tout !

maintenant cela fonctionne...
si vous voulez, on peut maintenant l'améliorer ?
0
Max29
 
Maintenant que la macro fonctionne, je constate quand même un petit problème : elle sélectionne l'ensemble des références d'une marque sans prendre en compte le critère "prix".

Sinon que me proposez-vous pour l'améliorer ?

- Peut-on créer une boîte de message avec une barre de progression pendant que la macro fait une recherche ?

- Comment faire pour que la macro remplisse uniquement les renseignements utiles pour la table résultat de la feuille "dimensionnement"?

En tout cas, merci beaucoup pour votre aide, elle m'est bien précieuse !
0
bouket Messages postés 147 Statut Membre 22
 
Je vais y travailler, pour la barre de progression, je sais en faire une intéressante, mais je n'ai plus le code sous la main. Mais, elle n'est utile que si votre macro mais plusieurs dizaines de secondes à s'exécuter.

Je vous redis demain ;)
0
Max29
 
Ok ! Merci beaucoup !

Pour indications, la macro met entre 5 et 10 secondes pour effectuer la recherche.

Je vais tenter de résoudre le problème de critère de prix....

Bonne soirée
0
bouket Messages postés 147 Statut Membre 22
 
Trouvé! Quel idiot je suis !

   If (table_resultat(j) <> 0) Then
        prix_unitaire = Cells(table_resultat(j), colonne_prix_unitaire)
        If ((prix_unitaire < (prix_rech * 0.5) Or prix_unitaire > (prix_rech * 1.5)) Or prix_unitaire = "") Then
            table_resultat(j) = 0
        End If
    
    End If


J'avais mis "And" au départ, bien sûr, le prix ne peut pas à la fois être en dessous de celui recherché et au dessus... donc le If n'était jamais vérifié...

Par ailleurs, attention au 0.5 et 1.5, ils correspondent à des zones trop grandes.
Ex: si vous entrez 4 € dans la recherche

Il prendra les offres de 0.5*4 = 2 € à 1.5 *4 = 6 € ... ce qui correspond peut-être à beaucoup d'offre ;)
Si vous avez des prix de 0.5 en 0.5 et que vous voulez associez le triplet (3.5,4,4.5) à la recherche... alors remplacez les * par des + et mettez 0.5 € de chaque côté ;)

bonne soirée
0
Max29
 
Un p'tit post juste pour vous remercier pour votre aide !!! grâce à vous j'ai pu résoudre mon problème de recherche et continuer à développer mon fichier !!! Merci beaucoup !!!
0
bouket Messages postés 147 Statut Membre 22
 
Mais, de rien, si vous avez des demandes plus précises, n'hésitez pas !!
0