Modification fonctionnalité UserForm

Bonjour à tous,

Petite question sur du code VBA.

Je souhaiterais modifier un élément de mon userform et passé d'un case de saisie manuelle à une ListBox.

En PJ le fichier en question.

Le code de mon Userform :

Public ws As Worksheet
Dim lgn As Long

Private Sub cbOK_Click()
    Dim i%
    Me.Hide
    With ws
        lgn = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        .Cells(lgn, 1) = Now
        For i = 2 To 5
            .Cells(lgn, i) = Controls("tb" & i).Value
        Next i
    End With
    UserForm1.Hide
End Sub

Private Sub CommandButton1_Click()

End Sub

Private Sub UserForm_Activate()
    Dim i%
    For i = 2 To 5
        Controls("tb" & i).Value = ""
    Next i
End Sub

Une vue de l'userform en PJ également.

Enfaite je ne parviens pas à réadapter les consignes de saisies dans les tableaux respectifs une fois les modifs réalisées.

D'avance, merci aux contributeurs !

2016 09 14 12h02 26

Bonjour,

Aucune modif. dans ton fichier ! sauf esquinter un peu le code qui t'avait été fourni...

Oui, puisque j'avais systématiquement le débogage qui me sautait à la figure.

J'ai préféré fournir le fichier encore fonctionnel plutôt que n'importe quoi


Je voyais quelque chose dans ce style :

Private Sub ListBox1_Click()

With Sheets("productlist")
    ComboBox1.List = .Range('productlist!"A1:A50" & .Range("A65536").End(xlUp).Row).Value
End With

End Sub

Au moins 4 erreurs dans ton bout de code !

MFerrand a écrit :

Au moins 4 erreurs dans ton bout de code !

C'est vrai que ton commentaire est super constructif...

Merci de ne pas intervenir si c'est pour de tels propos.

Je ne pense pas avoir d'ordre à recevoir sur le Forum...

En outre, oui ! Je fournis une information constructive ! A partir de laquelle tu peux entamer quelque recherche (à moins que tu ne soies allergique à ce type d'effort, mais il est hors de ma compétence de pallier ce genre de problèmes !)

En outre (encore), cette détection d'erreurs n'a vraiment rien de sorcier ! Il suffit de lire !

1) ListBox ou ComboBox ? Il faut savoir... ! Tu parles de ListBox et tu tentes de coder l'alimentation d'une ComboBox.

Sais-tu bien ce que tu veux faire ?

2) Tu déclenches ta procédure d'alimentation sur l'évènement Click sur une ListBox ! Ce n'est en principe jamais un évènement adéquat pour alimenter un contrôle ListBox ou ComboBox.

Il n'est pas besoin de réfléchir pour savoir que si tu déclenches l'alimentation par un clic sur un objet du Userform concerné, cela suppose que cette alimentation n'intervient qu'après ouverture du Userform, ce dont tu n'as pas fait état dans tes explications préalables, qui laissaient penser à une alimentation classiquement faite lors de l'initialisation du userform, avant son ouverture.

Là encore, il convient que tu t'interroges pour définir ce que tu veux exactement faire.

3) productlist!"A1:A50" est une syntaxe de formulation Excel, non une syntaxe VBA.

L'aide sur les façons de renvoyer un objet Range en VBA est suffisamment fournie et explicite pour que tu puisses t'y référer.

4) ...!"A1:A50" & .Range("A65536").End(xlUp).Row).Value Si la syntaxe de définition d'un objet Range (partie vue ci-dessus) avait été correcte, la concaténation d'un numéro de ligne à un objet Range n'a pas de sens et ne peut que déclencher une erreur.

Si la définition du numéro de ligne avait été intégré à la définition de la plage (dans une syntaxe correcte), on aurait alors concaténé 50 suivi d'un numéro de ligne : soit selon le renvoi de ce numéro, 1 à 9 donnait une plage de 501 à 509 lignes, de 10 à 99, plage de 5010 à 5099 lignes, de 100 à 999, plage de 50100 à 50999 lignes, de 1000 à 9999, plage de 501000 à 509999 lignes, au delà erreur car on dépasse le nombre de lignes d'une feuille...

Voilà un peu de matière à réfléchir !

Merci pour ces pistes de reflexions. Je vais m'y atteler.

Question

Est-il plus simple de créer une listbox ou de faire de l’auto complétion lorsque l'on saisit une lettre (ou plusieurs..)

PS : Je suis dans de sujets que je ne maitrise absolument pas... xD mais bon, mon envie de vouloir faire quelque chose de bien passe au delà de mes difficultés.

Merci.

Public ws As Worksheet
Dim lgn As Long

Private Sub cbOK_Click()
    Dim i%
    Me.Hide
    With ws
        lgn = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        .Cells(lgn, 1) = Now
        For i = 2 To 5
            .Cells(lgn, i) = Controls("tb" & i).Value
        Next i
    End With
    UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()

      Me.ComboBox1.RowSource = "SourceModeles!A1:A50" & Sheets("SourceModeles").Cells(1, 1).End(xlDown).Row
End Sub

Private Sub UserForm_Activate()
    Dim i%
    For i = 2 To 5
        Controls("tb" & i).Value = ""
    Next i
End Sub

Voici mon code actuel. J'ai une erreur sur :

Controls("tb" & i).Value = ""

d'après le débogeur

En supprimant cet élement, ca me donne une autre erreur, celle-ci :

            .Cells(lgn, i) = Controls("tb" & i).Value

En la supprimant également, ca passe, mais rien ne s'inscrit dans mon tableau

Si tu réfléchissais à ce que tu fais ! et le vérifiais ! Tu ne supprimerais pas de contrôle sans modifier le code afférent...

Et définir la liste de ta Combo sur la plage A1:A5024... !

Encore une de tes réponses absolument [in]utile.

Bref, je change de forum, ça commence à sérieusement me gonfler cette mentalité où l'on prend les débutants pour des idiots.

Je remercie juste les autres contributeurs ayant un QI un peu plus élevé et ayant toujours eu la patience de me donner un coup de main !

Pour info, les explications t'ont toutes été données ! Il faut les lire !

Si tu ne parviens pas à voir qu'en supprimant une TextBox dans une série traitée en boucle, il va manquer dans la série et donc déclencher une erreur... !

Si tu ne vois pas non plus qu'en concaténant 50 et 24 tu obtiens 5024 et que par là tu insères dans ta liste quelques milliers d'éléments vides... !

Là, je n'y peux pas grand chose !

Comportement signalé à la modération.

Je ne peux pas envisager un tel comportement sur un forum d'entraide...

La pédagogie, ça s'apprend

Au lieu de faire l’intéressant en pointant du doigt des erreurs visibles comme le nez au milieu du visage pour un utilisateur expert comme toi, contente toi de fournir une explication détaillée, des solutions à envisager et des cas concrets !

S'pas compliqué quand même....

S'pas compliqué quand même....

Non ! pas compliqué du tout !

J'ai relu mes explications, et il ne m'apparaît pas avoir été avare sur les détails !

Rechercher des sujets similaires à "modification fonctionnalite userform"