Problème userform.show

Sub Ouvrir_user_prod_hm()

    ' Ouvre le formulaire utilisateur de manière modale
    UserForm_ajt_prod_hm.Show

End Sub

Bonjour j'ai créé un fichier de gestion des productions agro-alimentaires cependant après une mise à jour de code mon code VBA ne fonctionne plus et je n'arrive pas à trouver pourquoi ?
Quand je souhaite exécuter mon code, j'ai un message d'erreur 1004, la méthode Range de l'objet global a échoué

Salut,

Change la ligne comme ci-dessous : (Dans la méthode Initialize du formulaire)

    ' Définir la source du ComboBox ComboBox_num_lot
    ComboBox_num_lot.List = Range("Tableau_reception[N° de lot interne]").Value

Bonjour

Ci joint ma solution (comme tu fait Jean Paul (Salut), il y aura des doublons

A+ François

Ps: j'ai un doute sur la macro; CommandButton_valid_Click....

Super, merci de votre aide, mais je ne comprends pas trop d'où est venu le problème pourriez-vous m'expliquer ? De plus, pourquoi cela ferait un doublon désolé, je suis un peu curieux, mais j'aime comprendre mes erreurs pour ne plus les refaire Par contre il ne faut pas pré-remplir le cbx n° de lot car sinon cela ne met pas a jour les information

Dans ta colonne D, il y a plusieurs fois le même n° de lot. Donc si on aliment e le combobox avec la ligne on aura des doublons

Le problème venait de l'alimentation de la combobox....

Problème de date corrigé

A+ François

Re,

J'ai corriger comme suit par contre je n'arrive pas a enlever l'autoselection qui est faite sur le combo box

 Me.ComboBox_num_lot.Value = [Tableau_production_hm].Item(i, 2)

Cela est un risque d'erreur en interne

3solu.xlsm (83.23 Ko)

L'autoselection se fait en fonction de la valeur de tabindex

Excel va d'abord chercher tabindex 0, puis 1, etc...

il suffit de mettre tabindex à 0 sur le contrôle TextBox_Date_recolte... et ainsi de suite..

Cela ce fait dans les propriétes du contrôle

A+ François

Re,

Excusez-moi je me suis mal exprimé je fais référence aux faites que dès l'ouverture du fichier il y a le Cbx N° de lot interne qui est pré rempli je souhaite qu'il reste vide. Mais je n'arrive pas a comprendre quelle ligne vous avez rajouter pour qu'il se remplisse automatiquement

Bonjour

C'est corrigé

A+ François

Bonjour à tous,

@fanfan38

Edit : Je vois que depuis le premier post le tableau à changé, donc là évidemment il y a des doublons.

@theo18

Il nous faudrait des explications claires, car là j'en perds mon latin.

Qui doit faire quoi ?

Dans ton fichier original il y a ce code dans la méthode INITIALIZE du formulaire :

000444

Donc tu tentes bien de remplir la liste déroulante Num_Lot non ?

Maintenant tu dis ne pas vouloir quelle se remplisse. d'où mon incompréhension.

Donc décrit les étapes que tu veux et l'on verra si c'est possible.

Re,

Veuillez m'excuser, je pense que je me suis mal exprimé. La source de mon cbx box est bon cependant lord de l'ouverture de l'userfurm (donc pendant son initialisation) le CBX n° de lot interne est pré rempli et cela ne doit pas l'être, mais je n'arrive à trouver comment l'enlever

capture capture2

Bonjour à tous,

Comment rempli-tu la liste déroulante ?

Si tu utlises la méthode avec la propriété List : ComboBox_num_lot.List = Range("Tableau_reception[N° de lot interne]").Value

Alors tu ne dois pas avoir ce problème , si tu utilise une autre méthode à la fin de la procédure Initialize force la mise à zéro de la liste déroulante : ComboBox_num_lot.ListIndex = -1

J'utilise la deuxième méthode:

Private Sub UserForm_Initialize()    ' Cette procédure s'exécute lors de l'initialisation du formulaire
     ' Rendre certains labels invisibles
     ctrl = True
     Application.EnableEvents = False
    Label_poidslot.Visible = False
    Label_rendement.Visible = False
    TextBox_nlot.Visible = False
    Dim i As Long
    For i = 1 To [Tableau_production_hm].Rows.Count
      Me.ComboBox_num_lot.Value = [Tableau_production_hm].Item(i, 2)
      If Me.ComboBox_num_lot.ListIndex = -1 Then Me.ComboBox_num_lot.AddItem ([Tableau_production_hm].Item(i, 2))
    Next
    TextBox_nlot.Value = "N° de lot interne" ' Placeholder pour le TextBox N° de lot interne
    TextBox_Date_recolte.Value = "Date de récolte" ' Placeholder pour le TextBox Date de récolte
    ComboBox_type_produits.Value = "Sélectionnez produit" ' Placeholder pour le ComboBox_type_produits
   ' ComboBox_num_lot.List = Range("N°_de_lot_interne").Value ' Définir la source du ComboBox ComboBox_num_lot
    ComboBox_type_produits.List = Array("HM France", "HM Bio", "HM Baby") ' Remplir le ComboBox_type_produits avec des éléments
     Application.EnableEvents = True
     ctrl = False
End Sub

Malheureusement cella ne fonctionne pas meme avec -1

Re,

Dans ton code le ne vois pas la ligne où tu forces le ListIndex à -1

Cela doit-être juste après la boucle For Next:

Bonjour

Private Sub UserForm_Initialize()    ' Cette procédure s'exécute lors de l'initialisation du formulaire
     ' Rendre certains labels invisibles
     ctrl = True
     Application.EnableEvents = False
    Label_poidslot.Visible = False
    Label_rendement.Visible = False
    TextBox_nlot.Visible = False
    Dim i As Long
    For i = 1 To [Tableau_production_hm].Rows.Count
      Me.ComboBox_num_lot.Value = [Tableau_production_hm].Item(i, 2)
      If Me.ComboBox_num_lot.ListIndex = -1 Then Me.ComboBox_num_lot.AddItem ([Tableau_production_hm].Item(i, 2))
    Next
    me.combobox_num_lot.listindex=-1

A+ François

Cela fonctionne mer beaucoup

Rechercher des sujets similaires à "probleme userform show"