Extraire des données via un userform

Bonjour à tous, j'ai crée un userfom qui me permet d'avoir un suivi des ventes. Toutes les données vont sur une feuille excel, je souhaite maintenant pouvoir récupérer ses données via un autre userform, je voudrai pouvoir le faire en utilisant des critères. Par exemple les résulats d'une équipe ou d'une personne sur un trimestre bien précis et sur un produit déterminé. Je ne sais pas trop comment monter l'Userform "Consultation".

J'ai conscience d'en demander beaucoup, mais si quelqu'un veux bien m'apporter son aide ca serait super sympa.

En PJ mon exemple.

Merci d'avance

François.

193projet-de-suivi2.xlsm (281.17 Ko)

Re bonjour,

Une nouvelle version avec l'userform "CONSULTATION" crée. Le plus compliqué maintenant est d'etre capable d'extraire les données.

François

259projet-de-suivi2.xlsm (286.48 Ko)

Bonjour

J'ai regardé un peu ton fichier et il y a un truc qui m'étonne

Dans l'userform "SAISIE" tu peux renseigner les 3 produits, mais dans l'userform "CONSULTATION" tu as mis des optionButtons

Comment gérer cela

Si en saisie tu renseignes seulement 2 produits (Produit A et Produit B), comment tu le retrouves en consultation

Si en saisie tu renseignes 3 produits mais 1 seulement avec le type "PSE" et les autres produits avec le type "Autres", comment le retrouver en consultation

J'ai mis des optionButtons parce que je pensai que la recherche en serait facilité, je ne sais pas s il s'agit de la bonne méthode. Je cherche à pouvoir faire plusieurs types d'extraction.

En fait le produit A peut etre du PSE ou autres, également pour les produits B et C.

Je voudrai pouvoir par exemple faire une extraction du produit A de type PSE sur un période donnée. Mais aussi par exemple simultanemen une extraction des Produits A et B de type autres.

Exemple:

Le produit A pourrait etre une table, le B une Chaise, le C un meuble

les types PSE : Bois et autres : Plastique.

Je souhaiterai alors extraire le nombre de chaise et de table en plastique , ou le nombre de meuble en bois. (les possibilités sont multiples).

J'espere etre clair.

Merci

François

effectivement l'idée des optionButtons ne semble pas etre la bonne puisque je ne peut seletionner qu'un seul produit et qu'un seul type. Je ne sais pas quoi utiliser à la place.

François


La solution semble etre les CheckBox

Bonjour

Dans l'userform "CONSULTATION" je t'ai mis des TextBox

Merci Banzai,

Je vais essayé de modifier ton fichier en y mettant des ChekBox à la place des optionButtons, par contre dans le fichier que tu m'as envoyé la recherche sous entend que l'on connait deja les produits à rechercher. Par exemple si je prend je le NOM de la personne je voudrai avoir tous son historique.

C'est tres complexe le VBA, je le decouvre au fur et à mesure.

François

Bonjour

Le nom est unique ?

Il ne peut y avoir 2 noms avec un prénom différent ?

C'est quoi l'historique (juste sa ligne de données) ?

On pourrait effectivement envisager qu' il y ai 2 prenoms differents pour le meme nom.

L'historique d'une personne serait l'ensemble de ses ligne de données.

Je veux effectuer une saisie chaque jour ou à chaque vente. Donc qd je fais une recap l'ideal serait d'avoir toutes les ventes pour une meme personne, en fonction du ou des produits recherchés et de la période.

Bonjour

francois9595 a écrit :

On pourrait effectivement envisager qu' il y ai 2 prenoms differents pour le meme nom.

Donc il faut avoir tous les éléments de recherche

francois9595 a écrit :

L'historique d'une personne serait l'ensemble de ses ligne de données.

Tu vas les afficher où ?

La base de données est très légère

Prépares un vrai fichier avec une base de données conséquentes (un bonne dizaine de lignes) pour savoir ce qu'il faut faire

J'ai remis en PJ le fichier tel que j'aimerai l'avoir.

Bien evidement j'ai gardé le tiens et les lignes de codes qui vont avec.

J'ai enlevé la notion de trimestre qui au final ne sert a rien vu qu'on a la possibilitée de choisir une période entre 2 dates.

Par exemple je veux pouvoir faire une extraction en entrant juste le nom d'une équipe ou d'un service ou d'une personne. et en cochant les ou les produits et type souhaité dans une période donnée bien evidement.


Nos messages viennent de se croiser.

La base de données est effectivement très légère mais vu ou j'en suis à l'heure actuelle dans le VBA c'est la seule que je suis capable de monter. Dans mon idée la base de données allait juste servir a reporter les données saisies dans l'Userf SAISIE.

Mais d'apres toi ma base ne semnle pas appropriée, mais je ne vois pas comment faire autrement .

En tout cs merci pour le temps que tu me onsacre c'est tres appreciable.

françois

Bonjour

Je ne crois pas que tu saches ce que tu veux exactement

En saisie tu récupères des montants et en consultation tu veux des quantités

Je ne donne seulement que mon avis, ce n'est en aucune manière ce que tu dois faire, c'est ton programme (pas le mien)

Il faut refaire ta base de données

Séparer la base de données et les paramètres des contrôles

Dans chaque ligne n'avoir qu'un produit (Nom du produit quantité, matière et toutes informations supplémentaires que tu veux y inscrire)

Actuellement si tu dois ajouter un produit, ou rajouter une matière : Bonjour la mise à jour

Pour la saisie définir des champs obligatoires

Pour la consultation quels sont les critères de recherche ?

Où afficher les résultats ?

Je répète ce n'est qu'un avis

A toi de voir et dires ce que tu en pense

Moi je ne continue pas dans l'état actuel du programme, quelqu'un d'autre peut le faire (je ne suis pas seul sur ce forum)

En saisie ou en consultation on y inscrit des montants.

Pourrais tu me montrer comment tu monterais ta base de données?

En saisie seul les criteres , NOM, PRENOM, SERVICE et EQUIPE et DATE sont obligatoires.

Pour la consultation , soit afficher le résultat en bas de l'userform comme dans ton exemple soit pourquoi pas ouvrir une feuille excel.

Je veux pouvoir extraire par exemple:

  • Le montant des ventes totales du vendeur X sur une période donnée
  • Le montant des ventes des chaises en bois sur un service précis et toujours sur une période
  • Le montant des ventes total d'un service (tous produits et toutes matieres ) et période

Etc...

il y a des multitudes de combinaison possible.

Effectivement tu as raison si je dois ajouter une matière ou un produit je suis effectivement trés embétté.

Bonjour

Voici un exemple

A toi de voir

Merci beaucoup,

Mais quand je l'ouvre j'ai un message ; Erreur de compilation: Projet ou Bibliothèque introuvable

François

Bonjour

Quand tu as ce message d'erreur

Dans l'éditeur VB

Menu Exécution -->Réinitialiser

Menu Outils ---> Références tu décoches toutes les références qui sont notées "MANQUANT'

references manquantes v003

Tu sauves et tu relances le programme

C'est exactement ce que je voulais merci infiniment, par contre quand je rentre des données elle vont dans la feuille excel Menu et non dans celle Recap, le numéro de ligne est bon, ca prend bien compte de la prochaine ligne vide de la feuille recap , mais ca va se positionner dans cette bonne ligne mais dans la feuille Menu.

Bonsoir

Désolé

Modifies la fin de la macro CommandButton1_Click dans l'userform "SAISIE"

  Num = WsR.Range("A" & Rows.Count).End(xlUp).Row + 1     'on part du bas de la colonne, on cherche

  WsR.Range("A" & Num).Value = Me.DTPicker1.Value                       ' La date
  WsR.Range("B" & Num).Value = Me.ComboBox1.Value                       ' Nom
  WsR.Range("C" & Num).Value = Me.ComboBox2.Value                       ' Prénom
  WsR.Range("D" & Num).Value = Me.ComboBox3.Value                       ' Equipe
  WsR.Range("E" & Num).Value = Me.ComboBox4.Value                       ' Service
  WsR.Range("F" & Num).Value = Me.ComboBox5.Value                       ' Produit
  WsR.Range("G" & Num).Value = Me.ComboBox6.Value                       ' Matière
  WsR.Range("H" & Num).Value = Val(Replace(Me.TextBox1, ",", "."))      ' Montant
  WsR.Range("I" & Num).Value = Val(Replace(Me.TextBox2, ",", "."))      ' Quantité
  WsR.Range("J" & Num).Value = Me.TextBox3                              ' Renseignement 1
  WsR.Range("K" & Num).Value = Me.TextBox4                              ' Renseignement 2
  WsR.Range("L" & Num).Value = Me.TextBox4                              ' Renseignement 3
  WsR.Range("M" & Num).Value = Me.TextBox5                              ' Renseignement 4
  WsR.Range("N" & Num) = Year(Me.DTPicker1)                             ' Année

Merci Banzai,

J'ai encore une question mais je ne voudrais pas trop abuser. Comment faire pour imposer un format , par exemple obliger à écrire en majuscule ou que même si on écrit en minuscule ça bascule automatiquement en majuscule.

François

Bonsoir

Utiliser un jeu de caractère qui n'a que des majuscules (exemple Perpetua Tiling MT), cela oblige de l'installer partout où le programme est utilisé

Mais sinon le moyen le plus simple

Tu laisses tel quel

Lors de la sauvegarde (bouton valider) tu mets en majuscules toutes tes entrées

en reprenant le code précédent

  Num = WsR.Range("A" & Rows.Count).End(xlUp).Row + 1     'on part du bas de la colonne, on cherche

  WsR.Range("A" & Num).Value = Me.DTPicker1.Value                       ' La date
  WsR.Range("B" & Num).Value = UCase(Me.ComboBox1.Value)                       ' Nom
  WsR.Range("C" & Num).Value = UCase(Me.ComboBox2.Value)                       ' Prénom
  WsR.Range("D" & Num).Value = UCase(Me.ComboBox3.Value)                       ' Equipe
  WsR.Range("E" & Num).Value = UCase(Me.ComboBox4.Value)                       ' Service
  WsR.Range("F" & Num).Value = UCase(Me.ComboBox5.Value)                       ' Produit
  WsR.Range("G" & Num).Value = UCase(Me.ComboBox6.Value)                       ' Matière
  WsR.Range("H" & Num).Value = Val(Replace(Me.TextBox1, ",", "."))      ' Montant
  WsR.Range("I" & Num).Value = Val(Replace(Me.TextBox2, ",", "."))      ' Quantité
  WsR.Range("J" & Num).Value = UCase(Me.TextBox3)                              ' Renseignement 1
  WsR.Range("K" & Num).Value = UCase(Me.TextBox4)                              ' Renseignement 2
  WsR.Range("L" & Num).Value = UCase(Me.TextBox4)                              ' Renseignement 3
  WsR.Range("M" & Num).Value = UCase(Me.TextBox5)                              ' Renseignement 4
  WsR.Range("N" & Num) = Year(Me.DTPicker1)                             ' Année

Une autre solution (plus compliquée à mettre en oeuvre) c'est de gérer toutes les entrées (dans les ComboBox, TextBox)

Rechercher des sujets similaires à "extraire donnees via userform"