VBA "Recherche" ne fonctionne pas

Bonjour à tous,

J'ai créé un formulaire permettant de remplir une base de données et qui permettra aussi de remplir des contrat ou des fiches missions sur word. Toutes les macros fonctionnent sauf recherche, j'ai bien conscience que la programmation n'est pas top mais elle est relative à mon niveau pas très élevé dans le domaine. Si quelqu'un pouvait avoir la gentillesse de m'aider cela me ferait gagner du temps car cela fait deux jours que je me casse les dents dessus.

Je laisse en pièce jointe le formulaire.

Merci encore une fois pour votre aide.

Fredbenoit

Bonjour,

Ton bouton cherche sur le ListIndex de Combo2 :

Tu ne peux pas faire de recherche avec ListIndex d'un combo filtré puisque qu'il ne comprend qu'un nombre réduit de ligne.

Idéalement il est préférable de faire la recherche sur un combo défini avec RowSource ou avec un Dictionnary trié.

Si la base de donnée n'est pas trop importante, tu peux aussi boucler directement sur la colonne de recherche avec pour argument la valeur "Text" de ton combo ou avec Find...

Dans le premier cas ça "casse" ta conception de combo en cascade mais c'est (beaucoup) plus rapide.

Dans la seconde hypothèse c'est un petit peux plus "brouette" surtout si la base de donnée est très importante.

A+

Bonjour,

merci pour toutes ces informations, je vais essayer de faire quelque chose.

fredbenoit

Re bonjour,

Et si je ne passe pas par un bouton de recherche mais simplement en mettant la référence du code mission il me met tous ce qui a été sauvé dans la base de données.

Fredbenoit

Désolé de te répondre avec un peu de retard mais je suis en train de bricoler un peu sur ton foutoir et j'enrage ma vie...

Je me rend compte que suivant l'opération les contrôles ne se rapportent pas aux mêmes colonnes... Ce qui est somme toute un peu curieux :

Ainsi dans la procédure de recherche ComboBox17 prend la value de la colonne 40

ComboBox17.Value = Cells(ligne, 40).Value

Par contre dans la Sub CommandButton5_Click (modifier) le même combo modifie la colonne 38...

Cells(modif, 38) = ComboBox17.Value

Enfin dans la procédure de nouvelle saisie la même colonne 40 (AN...) reçoit les données de :

Range("an" & l) = ComboBox17.Value

Si j'ajoute qu'il y a encore une belle salade avec le combo23 qui normalement correspond à la colonne 71 mais qui dans le CommandButton5_Click correspond à

Cells(modif, 61) = ComboBox23.Value

C'est d'ailleurs la dernière colonne qui est censé subir des modifications puisque tu ne vas pas au delà de la colonne 61 !

C'est pas bien grave mais toussa pour te dire je suis dans le kk jusqu'au cou !

Donc il faudra attendre encore un petit peu pour avoir un fichier corrigé et un petit peu plus crédible... mais je suis quand même un peu dubitatif sur ta capacité à terminer ce que je te corrige...

Bon maintenant, je commence à avoir un peu sommeil...

A+

Désolé de te donner tout ce fil à retordre mais je comprends parfaitement et je vais vérifier les correspondance mais je n'y arriverai pas sans aide ce soir j'ai repris le fichier justement en vérifiant que chaque colonne correspond.

Voilà mon dernier fichier d'ailleurs si tu appuies plusieurs fois sur recherche tu verras que toutes les colonnes sont correctement remplies. Mais je ne suis pas un pro c'est vrai et je m'en excuse.

Fredbenoit

Bonjour,

Bon je te donne l'état actuel de ma réflexion sur ce projet :

Il y a de nombreuses incohérences !

Ces incohérences ne sont pas dues à ce que j'ai fait mais à la manière dont tu as organisé ton truc :

Pour ne prendre qu'un exemple, il semble que le code analytique et le titre de projet soient liés.

Dans ce cas il n'est pas possible de leur attribuer un combo chacun sauf à créer une situation ambiguë ou toute saisie dans l'un modifierait discrètement ce qui est déjà saisie dans l'autre.

De même si tu saisies le nom de l'assistante logistique dans un combo et que l'évènement "Change" du combo modifie les N° de téléphone, ceux ci ne doivent plus être modifiable dans les TextBox. (en tout cas moi je ne sais pas faire...)

Cela crée une situation ingérable avec Excel ou un seul UserForm devrait gérer la cohérence des données entre plusieurs base de données : La BD Mission et en plus une multitude de mini BD (les listes) ou le départ d'un employé ou son changement de N° de téléphone ou d'email créeraient un bordel monstre...

Pour ce genre de gymnastique seul ACCESS est capable d'assurer l'intégrité relationnelle entre les différentes données...

Néanmoins je te donne le contenu de mon travail, je pense qu'il devrait pouvoir alimenter ta réflexion

Ainsi j'ai isolé le Combo de recherche qui alimente à lui seul tout le UserForm en se basant sur l'iD JCI dont j'ai cru comprendre qu'elle constituait un index sans doublon : A ce titre je l'ai déplacé dans la colonne. C'est la vocation habituelle de ces clefs d'index...

Bon : Je n'ai travaillé que la gestion normale de la base de donnée Recherche, Lecture, Modification, Création.

Après je ne sais pas si ça te sera très utile dans la réalisation de ton projet mébon, si ça ne te va pas tu jettes...

Tout le reste pour moi relève de l'utopie. Donc j'ai même pas cherché à comprendre : j'ai inhibé. Y compris le code de cmdPrintPDF_Click() que je n'ai pas testé car il ne fonctionnerait sans doute pas sur ma machine.

EDIT : Ah oui j'allais oublier : Le UserForm est dédié à la feuille à laquelle il est lié : Pas la peine d'y faire référence si le UserForm est lancé à partir de cette feuille.

Mais il n'est pas question d'aller Activer une autre feuille : Ça tu peux oublier !

A+

Bonjour,

Et merci infiniment pour ton aide, désolé de tout le fil à retordre que cela t'a donné, mais comme tu peux le voir la tâche n'était pas aisée. En plus j'étais parti sur quelque chose de très simple sauf que chacun est venu me voir avec son petit bout de demande et à la fin cela à donné quelque chose de confus.

Merci.

Fredbenoit

Rechercher des sujets similaires à "vba recherche fonctionne pas"