Création VBA
Bonjours a tous ,
Voila je viens de découvrir ce forum qui ma l'aire hyper sympa
Moi je suis grand débutant ^^ , alors ne pas m'en vouloir si je pose des questions bête
Donc voila ma ptit demande
A1 - Dans USERFORM ( Gestion ) j'ai réussi a faire une listbox pour les techniciens , mes je n'arrive pas a faire une listbox pour les produits depuis la feuille BD , je voudrais que l'on n'es que la Référence a mettre et que la désignation ce mette tout seul et que l'on puisse pas la modifier
A2 - Dans USERFORM ( Gestion ) j'aimerai que la date ce mette automatiquement dans le TextBox et que l'on puisse pas la modifier
A3 - Je voudrais une fois remplis USERFORM ( Gestion ) remplis et lorsque l'on Valide , que les info soie stock dans la feuille MVTS
B1- Dans USERFORM ( Liste ) , j'aimerai pourvoir choisir le Technicien et en fonction choisir les Chantier de celui-ci
B2- Que une fois tout sélectionné que cela s'affiche dans une ListBox et que si je Double-clic sur une ligne je puisse la modifier
B3- Et pour terminé je voudrai pour imprimé en PDF la Listbox ( selection en B1 )
Voila j’espère avoir été clair car pas facile a expliqué ^^
Je vous remercie d'avance pour votre aide sur ce ptit projet
Bonsoir,
Pas très malin de vouloir mettre des instructions telles With... End With sur une seule ligne, surtout quand cette ligne devient longue et sort du champ ! Sans doute pour empêcher de travailler trop vite sur le code !
De toute façon passer par une variable Range et un tableau, c'est au moins un transit inutile, et on peut sans doute se passer des 2.
Je conseille de nommer ta 1re colonne de BD en dynamique. Par exemple RefArt que tu définis par :
=DECALER(BD!$A$2;;;NBVAL(BD!$A:$A)-1)et tu fais la même chose pour les Techniciens, après avoir mis un intitulé en E1, ça sert toujours à s'y retrouver plus vite. Avec Tech :
=DECALER(BD!$E$2;;;NBVAL(BD!$E:$E)-1)et ça va te raccourcir diablement...
Private Sub UserForm_Initialize()
ComboTech.List = [Tech].Value
ComboBox1.List = [RefArt].Value
End SubPrivate Sub ComboBox1_Change()
Dim n%
n = ComboBox1.ListIndex + 1
If n > 0 Then TextBox51.Value = [RefArt].Cells(n, 2)
End SubIl faudra aussi prévoir d'effacer si la Combo est vidée (mais le code ci-dessus est juste pour donner l'orientation...)
Il faudrait renommer ComboBox1 et TextBox51 et quelques autres...
Et je conseille fortement de supprimer les 11 lignes de Combo et TextBox qui suivent !
On opère une saisie, on valide, elle est insérée dans la feuille, on efface pour la suivante, et on continue... Ce sera plus simple, plus sûr et plus rapide.
Je conseille également de nommer la 1re colonne de ta feuille MVTS de la même façon. Un nom te dispensera d'avoir à faire une quelconque référence à une feuille. Et te réduira les calculs de ligne d'insertion, ce sera [NomPlage].Rows.Count + 1.
Pour les TextBox dans lesquels l'utilisateur ne doit pas saisir, il faut mettre la propriété Locked à True.
Il faudrait cesser de confondre ComboBox et ListBox, ce sont deux contrôles différents !
Pour ton B, il manque trop d'informations pour ébaucher une réponse, et tu aurais intérêt à boucler complètement ton Userform Gestion avant, cela t'évitera de te disperser en oubliant de finaliser ce que tu as commencé...
Chantiers : pas de traces !
La ListBox : on ne connait pas son contenu (et on ne peut modifier les éléments d'une ListBox, on les modifie ailleurs, on les supprime et réintroduit...)
Imprimer la ListBox en pdf : d'une part, elle n'est pas dissociable du Userform, d'autre part pour le faire il faut faire une copie de la fenêtre du Userform et la coller en image sur une feuille (ce qui passe par l'utilisation d'une API), le résultat risque de ne pas être fameux et il sera préférable de transférer le contenu de la ListBox sur feuille pour en créer un pdf).
Cordialement.
Hello
Merci pour toute ces info
J'ai essayer ce que tu ma dit mes malheureusement mes compétence ne sont pas encore asse forte ^^ et cela ne fonction pas du tout
Bonjour,
J'espère que tu as compris mes premières explications, ainsi que les conseils pour poursuivre. L'ensemble repose sur des choses qui s'apprennent, si tu butes sur une difficulté, tu demandes, ce que tu ne comprends pas tu demandes également.
Je te fais remarquer que tu ne dis pas ce que tu essaies et comment, ni en quoi celane fonctionne pas.
Cordialement.
Bonjour
voila déjà un début pour charger tes combobox
Private Sub UserForm_Initialize()
With Feuil3
ComboTech.List = .Range("E1:E" & .Range("E" & Rows.Count).End(xlUp).Row).Value
For L = 1 To 12
Controls("ComboBox" & L).List = .Range("A2:B" & .Range("A" & Rows.Count).End(xlUp).Row).Value
Next L
End With
End Sub
Private Sub ComboBox1_Change()
TextBox3.Value = ComboBox1.Column(1)
End SubA+
Maurice
Bonjour,
Voici une illustration des orientations que j'avais préconisées. Je n'ai codé que le Userform Gestion. Etudie le code et demande des explications sur ce que tu ne comprendrais pas, ou sur les choix méthodologiques si tu t'interroges à leur sujet.
Cordialement.