RecherceV dans un Userform

Signaler
Messages postés
7
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
28 janvier 2011
-
Messages postés
181
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 février 2011
-
Bonjour à tous,

Dans le cadre de mon boulot, je souhaite me faire un programme excel via VBA de façon à gérer mon travail quotidien (nouveaux enregistrements, suivi des enregistrements, indicateurs...). Pour ce qui est de l'insertion de nouveaux enregistrementx, j'ai pu trouver mon bonheur sur le forum.


Par contre, je suis bloqué pour faire le suivi de mes enregistrements. Je souhaiterais rappeler un enregistrement (ligne d'une feuille excel) dans un userform à l'aide de son numéro (composé de la façon suivante : 2 chiffre - 3 lettres / 3 lettres - 3 chiffres) de la même façon que "RechercheV" dans excel.
Et ensuite compléter les champs de mon enregistrement suivant son état d'avancement.

Voici les données de ma feuille excel : 1 ligne par enregistrement
Colonne A : Année (2 chiffres)
Colonne B : Projet (3 lettres)
Colonne C : Produit (3 lettres)
Colonne D : n° ordre (3 chiffres)
Colonne E : Désignation
Colonne F : Date 1
Colonne G : Date 2
Colonne H : Temps estimé en heure
Colonne I : Temps passé en heure
Colonne K : Avancement 25%
Colonne L : Avancement 50%
Colonne M : Avancement 75%
Colonne N : Avancement 100%

J'ai trouvé un code sur le forum, mais ça ne fonctionne pas. Il y a une erreur de compilation au niveau de "ComboBox1".
Voici le code que j'ai entré pour mon bouton "Rechercher" :

Private Sub Rechercher_Click()


Dim Ligne As Long


Sheets("Suivi - Interne").Activate
Ligne = Recherche(TextBox1.Text, 1)
If Ligne = 0 Then Exit Sub
Ligne = Recherche(TextBox2.Text, 2)
If Ligne = 0 Then Exit Sub
Ligne = Recherche(TextBox3.Text, 3)
If Ligne = 0 Then Exit Sub
Ligne = Recherche(TextBox4.Text, 4)
If Ligne = 0 Then Exit Sub


TextBox5 = Range("E" & Ligne)
TextBox6 = Range("F" & Ligne)
TextBox7 = Range("G" & Ligne)
TextBox8 = Range("H" & Ligne)
TextBox9 = Range("I" & Ligne)
TextBox10 = Range("J" & Ligne)
TextBox11 = Range("L" & Ligne)
TextBox12 = Range("N" & Ligne)
TextBox13 = Range("K" & Ligne)
TextBox14 = Range("M" & Ligne)
TextBox15 = Range("O" & Ligne)
TextBox16 = Range("P" & Ligne)
TextBox17 = Range("Q" & Ligne)
TextBox18 = Range("R" & Ligne)
TextBox19 = Range("S" & Ligne)
End Sub

Merci d'avance pour votre aide.


@+


Duch9

4 réponses

Messages postés
7
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
28 janvier 2011

Bonjour,

Pour faciliter la résolution de mon problème, vous trouverez ci-dessous mon fichier test :

http://www.cijoint.fr/cjlink.php?file=cj200903/cijYAGcvv4.xls

Je rappèle mes objectifs concernant cette épure.

<li>Je souhaite que lorsque je rentre le code de mon enregistrement et que je clic sur "Rechercher", les textbox se remplissent automatiquement suivant les infos présentent sur la ligne de l'enregistrement en question.
</li><li>Pouvoir remplir les champs (textbox) vident suivant l'état d'avancement de mon enregistrement (date de réalisation, temps passé...).
</li><li>Lorsque je clic sur "Valider", que la ligne de mon enregistrement se mette à jour. </li>J'espère que se sera plus clair cette fois-ci.

Merci d'avance pour votre aide.

@+
Messages postés
181
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 février 2011

Hello,

Pour commencer j'aurais juste quelques questions par rapport à ton code d'enregistrement  :
Le dernier élément "n° d'ordre" peut-il être commun à plusieurs lignes ?
br
USERRRQI115
Simple user
Great brain
Messages postés
7
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
28 janvier 2011

Salut userrrqi115,

Oui, le n° d'ordre peut être commun à plusieurs lignes.
Pour 2 raisons :  

- Mes n° d'ordre sont mis à 000 à chaque début d'année,
- Ayant une gestion par projet, le n° d'ordre démarre à 001 pour chaque nouveau projet.

C'est pourquoi je souhaite faire une recherche avec l'année, le projet, le type d'essai et le n° d'ordre.
Par contre, si cela pose soucis dans la programmation je peux peut-être m'arranger pour avoir un n° d'ordre unique par enregistrement.

Merci
 
@+
Messages postés
181
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 février 2011

Re,

Dans ton cas j'opterai pour un ajout de colonne dans ta feuille Suivi Interne : une colonne ID (par exemple la conne D) qui sera le concatener des colonnes A B C et D, dont on ne conservera que la valeur

Pour que cela fonctionne il faut préférer des formats texte pour les nombre contenus dans la colonne A et D (la valeur de D2 est 1 mais apparait 001, si on recherche 001 rien n'est trouvé).

Ensuite, au début du code tu créé une variable string = Textbox1.value & textbox2.value &textbox3.value & textbox4.value.
Ensuite tu peux utiliser Cells.find(...).select
Et déduire les valeur des autres textebox par rapport à la position relative des cellule (offset).

Dans le code qui existe je pense qu'il n'est pas normal d'avoir des combobox alors qu'ils n'existe pas dans l'userform.
Et je ne crois pas que la fonction Recherche existe sous VB à moins de la créer...

BR

USERRRQI115
Simple user
Great brain