BDD Affichage d'une cellule dans une Textbox
Bonjour ,
Je travaille sur l'interface d'une base de donnée qui a pour but d'afficher la désignation d'un appareil suite au choix d'un code qui lui correspond .
Je suis bloqué sur le code qui correspond qu changement de la Combobox dans lequel j'ai mis les différents choix de code présent sur le tableau .
J'avais l'idée de faire une fonction recherche mais j'ai pas réussie .
Voila , si quelqu'un peut me débloquer , merci d'avance .
Bonjour et bienvenue sur le forum
Joins le fichier sur lequel tu travailles et on verra ce qu'on peut faire..K
Bye !
Bonsoir,
Sans doute ça que tu veux faire :
Private Sub ComboBox_Appareil_Change()
Dim lid%
lid = ComboBox_Appareil.ListIndex + 2
If lid > 1 Then
With Worksheets("Turbine ")
TextBox_Designation.Value = .Cells(lid, 2)
TextBox_Schema.Value = .Cells(lid, 3)
End With
Else
TextBox_Designation.Value = ""
TextBox_Schema.Value = ""
End If
End SubCordialement
Ferrand
Re ,
Effectivement , ta solution marche , merci Ferrand .
Tu aurais pas une idée pour coder le bouton ajouter ?
Merci d'avance .
Voilà seulement une trame...
Private Sub CommandButton1_Click()
Dim n%
If TextBox_Designation.Value <> "" And TextBox_Schema.Value <> "" Then
n = ComboBox_Appareil.ListCount + 2
With Worksheets("Turbine ")
.Cells(n, 1) = ComboBox_Appareil.Value
.Cells(n, 2) = TextBox_Designation.Value
.Cells(n, 3) = TextBox_Schema.Value
End With
End If
End SubTrame parce que ça te donne idée, si tu ne l'avais pas de ce qui est à faire ! Mais c'est très insuffisant.
Déjà, utilisant le même ComboBox pour la consultation et la saisie, tu mets la propriété MatchEntry sur fmMatchEntryNone, pour éviter divers soucis.
Ensuite, rien n'est vraiment fiabilisé. Telle qu'est écrite ta procédure Initialize, il suffira qu'à moment (au fil des développements) qu'à un moment ta feuille Turbine ne soit plus la feuille active au lancement, et tu chercheras ta liste dans le ComboBox.
D'autre part, si tu dois en ajouter, ta constitution de liste étant "en dur", les éléments ajoutés ne seront jamais dans la liste.
Je conseillerais donc que tu penses l'ensemble de tes procédures avant de te lancer dans des bouts de code, pour avoir à les reprendre un plus grand nombre de fois que nécessaire par la suite.
Quelques pistes (dont certaines n'engagent que moi, je te l'accorde) :
- Ta plage-liste, nommée de façon dynamique, éviterait d'avoir à chaque fois à chercher la dernière ligne, tu peux l'affecter à la propriété RowSource et ainsi éviter sa constitution en initialisation du Userform. Et à la suite d'un ajout sa mise à jour dans le Combo n'exige qu'une réactivation de la propriété (une petite ligne de code).
- Si tu ne sépares pas les diverses fonctionnalités (nous avons déjà consultation et ajout, modification sera aussi à prévoir, de même que suppression), tu risques d'avoir des interférences un jour ou l'autre, ajouter un élément qui y est déjà... D'où l'utilité de prévoir, éventuellement des OptionButton pour sélectionner un mode, assortis avec une signalisation qui te l'indique (+ s'il y a lieu boutons dédiés qui n'apparaissent ou ne sont actifs que dans le mode adéquat, et sans oublier les vérifications préalables à la réalisation ou le cas échéant une confirmation à donner...) Tout ça est à penser globalement avec un souci de fiabilité et d'ergonomie.
- Je trouve très bien de renommer les contrôles qu'on utilise, ce qui permet une identification plus facile, mais pour ma part j'ai deux autres soucis non moins important à mon sens quand je le fais : raccourcir les noms, plutôt que les allonger (ça VBA s'en fout, moi pas quand il faut les écrire !) et pouvoir les utiliser dans des boucles (nom commun avec un indice numérique pour les contrôles qui s'utiliseront conjointement).
- Plus généralement, lorsqu'on passe à la pratique, ne pas négliger l'aide de VBA, souvent fort utile, et penser que VBA ne travaille pas à la souris et que vouloir calquer les instructions sur les gestes d'un utilisateur n'est que très rarement la meilleure utilisation qu'on peut en faire...
Cordialement
Ferrand
Au fait, ton classeur a été enregistré en classeur modèle avec macro.
Il te faut le réenregistrer en .xlsm.
Salut !
Je te remercie pour ta réponse complète .
Je n'ai jamais eu de formation concernant le VBA , et ce n'est pas du tout mon domaine , mais grâce a un stage que j'effectue en ce moment j'ai été amener a faire ce travail , c'est pour cette raison que je suis venu a la recherche d'une solution qui soit si l'on peut dire simple et rapide sans ce casser la tête , parce que je doute que je serai ramener a utiliser VBA ultérieurement .
Cela ne m’empêche pas d’apprécier le VBA que je trouve assez amusant a l'usage , même si le codage pose des soucis des fois si on a jamais été formé pour son usage et que l'on a aucune idée sur la syntaxe de programmation .
Merci encore pour ton aide , je vais essayer de me débrouiller pour ce dernier point .
A bientôt .
Bonjour,
J'ai voulu surtout mettre l'accent sur l'importance de la conception du projet avant d'en arriver à la programmation. Ce qui n'a pas été pensé et intégré dans les préoccupations au départ sera toujours plus difficile à raccorder harmonieusement par la suite et sera souvent un greffon plus ou moins bancal.
Bien évidemment, il est utile d'avoir quelques idées sur les techniques de réalisation que tu pourras utiliser lorsque tu en viendras à la phase programmation. Cela permet de prévoir une organisation des éléments que tu auras à manipuler propre à faciliter les opérations suivantes. De fait un bon nombre de questions posées sur les forums tomberaient si l'on avait agi en amont pour que le problème n'ait pas à se poser...
Certes une formation préalable n'est jamais inutile, mais la grande majorité des intervenants qui répondent n'ont pas eu le loisir d'en avoir et se sont auto-formés. Les choses se sont un peu complexifiées depuis les débuts il y a 20 ou 30 ans, mais l'acquisition de l'essentiel n'est pas plus difficile.
A une prochaine occasion.
Ferrand