Rechercher dans Excel

Bonjour tout le monde !

voilà je m'appelle ludovic, je vis en suisse et j'aime la moto.

il y a quelques années j'ai commencé une fomation d'informaticien mais malheureusement, cela ne s'est pas passé comme prévu. Voilà une petite présentation de moi !

Et aujourd'hui je me retrouve sur ce forum car j'ai un petit problème de mémoire.

je suis sur le point de faire une petite base de données avec Xls pour un petit magasin.

Pour tout vous dire, nous avions une base de donnée ou nous y avions inseré tout les articles avec nom, informations general, création d'un code-bar, lieu de stockage...Et voilà, cette BDD a rendu l'âme la semaine passé.

Nous avons juste pu faire une sauvegarde au format Xls avec nom, n° d'article, fournisseur, lieu de stockage, quantité et lien internet, etc...

Mon projet est donc de faire un genre "d'interface" de recherche pour que mes collègues se repèrent plus facilement et ne suppriment pas tout. P. exemple une liste défilante avec le choix de la colonne que "où voulon nous chercher" (Nom;n°Art.;Supplier;...) une place pour écrire la recherche et en dessous le résultat ou l'on pourra modifier JUSTE la bonne ligne. Mais comme je vous l'ai dis...j'ai quelques peines a me souvenir des bases de Excel.

ALORS PLEASE EXCEL-PRATIQUE, PIMP MY BDD !

joins ton fichier (allégé)

malheureusement je ne peux pas, ce fichier est confidentiel mais au pire je vous fais un exemple.

Depuis ce matin, j'ai vraiment fais des recherches petit a petit sur internet et j'ai retrouvé quelques petites habitudes !

maintenant j'ai créé une macro, fait l'userForm, avec une listBox, un TxtBox et un bouton.

Le but maintenant est de programmer la listbox/combobox de facon a pouvoir choisir sur quel colone va-t-elle chercher l'information.

par exemple. j'ai numéro d'article seulement, il est court et peut avoir plusieurs autres produits avec ce numéro, mais dans d'autres cases.

je choisis seulement le numéro d'article et j'ai plus de chance de cibler mon article...

Par contre maintenant je suis encore embeté avec ça ! ^^

Bonjour,

mais au pire je vous fais un exemple

Et ben, allons au pire...

Dans ton fichier initial, tu ne gardes qu'une vingtaine de lignes, tu remplaces les noms par des noms lambda, les valeurs par d'autres, les numéros de téléphone par 00 00 00 00 00, ainsi de suite

N'oublie pas de mettre ton userform

on regardera pour le code

Re bonjour

Faute d'exemple, une méthode de recherche si plusieurs articles correspondent au N°cherché

Cordialement

voilà !

Re-,

dans ton exemple, sur quelle colonne veux-tu faire la recherche, et en fonction du choix, que veux-tu renvoyer dans l'userform (quelle colonne)?

@ te relire

Pour réstreindre la recherche, j'aimerais pouvoir choisir la colonne dans laquel la recherche sera effectuer. donc les colonnes "Name; CAS number; BarCode; Supplier; art. Supplier" et enfin "storage place"

Re-,

OK, mais quelles valeurs met-on dans le combobox?

Je ne comprends pas trop ta recherche....

Si on charge les valeurs de la colonne C, par exemple, dans le combobox, quelle valeur de quelle colonne tu désires?

Pour moi, tes explications ne sont pas assez claires...

Bien, les titres de BDDChemicals qui sont situé dans la ligne 1 (Name; CAS number; Supplier;...)

-- 29 Juin 2010, 16:24 --

cousinhub a écrit :

Pour moi, tes explications ne sont pas assez claires...

Ok...

Alors ce fichier excel est comporte plus de 1600 lignes.

Sur une feuille j'aimerais pouvoir faire une recherche d'article, C-A-D http://www.google.com

Avec la listBox on pourrait dire que c'est comme une recherche avancée.

c'est tout.

Ce serait utile de pouvoir faire celà étant donné que l'on a plus rien pour suivre les produits, par la suite je compliquerai un peu mon propre exercice.

-- 29 Juin 2010, 16:28 --

Excuse moi pour le lien mais je peu pas expliquer mieux

Bonjour,

Regarde le fichier joint, tu as un peu de tout ce qui peut se faire, avec un userform

  • ListView
  • Combobox sans doublons
  • Option Buttons associés à un module de classe (ceci afin d'éviter une foultitude de codes)

Un double-clic sur un élément de la ListView te donne le numéro de la ligne concernée

(restera à faire une autre interface, afin de modifier les données....)

Pour choisir ton élément de recherche, sélectionne une des options, puis ton choix dans la combobox...

Si cela t'intéresse, bien évidemment...

@ te relire

81exportforum-v1.zip (33.67 Ko)

Oui c'est impec ! J'ai trouvé aussi le moyen (plus simple mais pas autant mieux) de faire ce que je voulais. mais c'est super ! je vais le laisser comme ca et continuer le reste ! Merci Cousinhub !

-- 30 Juin 2010, 10:56 --

Par contre je n'arrive pas a comprendre comment tu as appelé une "feuille" dans le form...

Tu pourrai m'expliquer ?

Re Bonjour CousinHub,

lors de la dernière version que tu m'as envoyé, je n'ai pas comris quelques petits sujets au niveau code.

Comment as-tu fais pour inserer les données de la listview1 dans les textbox de corrections ?

re-,

Lorsque tu es sur l'userform "SearchDialog", fais un double clic sur la ListView

tu tombes alors sur le code :

Private Sub ListView1_DblClick()
LaLigne = Me.ListView1.SelectedItem.SubItems(8)
Me.Hide
Corrections.Show
End Sub

Comme j'ai déclaré :

Public LaLigne As Long

dans un module standard, Excel conserve donc en mémoire cette variable, qui correspond à la ligne sur laquelle tu as double cliqué....

Edit, j'ai oublié de préciser, mais dans la ListView, il y a 8 colonnes, mais seulement 7 de visibles...

        .Add , , FSource.Cells(1, 1), 0

Le 0, à la fin, signifie sa largeur...

Lorsque tu changes la valeur du combobox, tu entres le numéro de ligne dans cette colonne invisible

                .ListItems(Lig).ListSubItems.Add , , C.Row

et cette colonne s'appelle 8 (Me.ListView1.SelectedItem.SubItems(8), plus haut)

Dans l'userform "Corrections", à l'initialisation, tu as ce code :

For I = 1 To 8
    Me.Controls("TextBox" & I).Value = Sheets("BDDChemicals").Cells(LaLigne, I + 1).Value
Next I

comme on connaît le numéro de ligne, on remplit les textboxs de 1 à 8 avec les numéros de colonne (I +1) car tu commences en colonne B

wouah !

ok, mais pour ceci:

For I = 1 To 8
Me.Controls("TextBox" & I).Value = Sheets("BDDChemicals").Cells(LaLigne, I + 1).Value
Next I

si tu change de nom au textboxs est ce qu'il faut changer aussi de nom sur le code ?

Re-,

Oui...

Me.Controls("TextBox" & I) correspond à Me.TextBox1 si I = 1

Tu peux charger ainsi :

Me.TbxName.Value = Sheets("BDDChemicals").Cells(LaLigne, 2).Value
Me.TbxSurName.Value = Sheets("BDDChemicals").Cells(LaLigne, 3).Value
....

Regarde le numéro de colonne (LaLigne, 2)

impec, là je me suis remis dans le jus !

Donc tout ceci est écris dans le USF c'est juste ?

Re-,

Regarde le code de l'USF...(soit en cliquant sur la première icône "Afficher le projet", sous "Projet - VBA Project", soit en double-cliquant sur l'USF...)

Voilà ou j'en suis...:

46exportforum.zip (61.34 Ko)

Malheureusement le programme bug a une certaine place (au moment de l'ouverture de ChangeArticle) et je ne sais pas ou il faut que je cherche pour pouvoir le débuguer.

Quelqu'un peu m'aider ?

Re-,

Tu n'as pas bien lu, ce que je t'ai écrit....

Me.TbxName.Value

et non :

Me.Controls("TbxName" & I).Value

Tu peux donc supprimer :

For I = 1 to 8
....
....
Next I

cela donne :

Private Sub UserForm_Initialize()
    Me.TbxName.Value = Sheets("BDDChemicals").Cells(LaLigne, 2).Value
    Me.TbxCAS.Value = Sheets("BDDChemicals").Cells(LaLigne, 3).Value
    Me.TbxBC.Value = Sheets("BDDChemicals").Cells(LaLigne, 4).Value
    Me.TbxSupplier.Value = Sheets("BDDChemicals").Cells(LaLigne, 5).Value
    Me.TbxNSupplier.Value = Sheets("BDDChemicals").Cells(LaLigne, 6).Value
    Me.TbxStoPlace.Value = Sheets("BDDChemicals").Cells(LaLigne, 7).Value
    Me.TbxStock.Value = Sheets("BDDChemicals").Cells(LaLigne, 8).Value
    Me.TbxURL.Value = Sheets("BDDChemicals").Cells(LaLigne, 9).Value
End Sub

de plus, dans l'usf "ChoiceForm", change de couleur à tes boutons, et met plutôt ceci pour le bouton "No" :

Private Sub BtnNo_Click()
Unload Me
SearchDialog.Show
End Sub

En règle générale, si tu ne veux pas conserver tes données dans un Userform, tu utilises la commande "Unload Me", afin de décharger l'usf de la mémoire

Si tu veux les retrouver (les données), tu masques l'usf par "Me.Hide"

Heu, et lis tout, cette fois-ci!,,,,

Rechercher des sujets similaires à "rechercher"