Aide boucle FOR et USERFORMS

Bonjour a tous,

C'est mon premier post, je vais tenter d'etre clair!

Je debute sur vba, mais j'apprends. (par avance, desole pour les accents, je me trouve en estonie…)

Je vais essayer de vous expliquer mon fichier.

Un utilisateur remplit un userform (nomme add_ref) . Apres avoir marque une reference de piece (dans une textbox), il doit indiquer les process utilises dans des ComboBox.

20 combobox sont presentes et affichees de maniere vertical. Leur nom est au format ComboBox(de 1 a 20)

A cote de ces box, j'ai indique un label qui a pour caption une valeur allant de 1 a 20.

Je voudrais, pour chaque combobox remplie, qu'il cree une ligne dans mon tableau avec le numero du label correspondant et la ref.

Pas de soucis avec le tableau en lui-meme, mon soucis est que:

  • Lorsque ma macro tourne, la colonne correspond a l'ordre, se remplie bien.
  • la colonne avec l'ID du process se remplie bien pour le premier process mais il conserve l'id du premier process pour les lignes suivantes au lieu de les actualisees!

je vais vous donner un exemple:

Dans ma table (sheet6):

ID process

1 ouvrir la porte

2 ranger la vaisselle

3 nourrir le chien

4 faire le vidange

Dans mon userform si je dis:

Label_1 (donc etape 1) -> Nourir le chien

Label_2 ( etape 2) -> ouvrir la porte

J'attend deux lignes supplementaires dans mon tableau:

Ordre IDProcess

1 3

2 1

Actuellement, il m'affiche:

Ordre IDProcess

1 3

2 3

Dim I as integer
Dim IDprox as integer

'idprox correspond a l'ID du process selectionne dans la combobox (chaque etape est associee a un chiffre dans une feuille database excel)

IDprox = Application.WorksheetFunction.Index(Range("A:F"), WorksheetFunction.Match(Add_ref.Controls("ComboBox" & i), Range("b:b"), 0), 1)

        For i = 1 To 3

        If (Add_ref.Controls("ComboBox" & i)) <> "" Then

            Sheet5.Activate

        '= line to fill

            Newlinepro = Cells(1, 4).End(xlDown).Row + 1             
            Cells(Newlinepro, 3).Value = IDprox
            Cells(Newlinepro, 4).Value = Add_ref.Controls("Label_" & i).Caption

        Else
        End If

Je pense avoir ete tout ce qu'il y a de plus incomprehensible mais j'espere que l'exemple est assez clair!

Merci de me venir en aide! Bonne journee a tous!

Bonjour et sur le forum,

Si ton ID ne change pas, c'est parce que sa valeur est affectée en dehors de la boucle, il reste donc le même pour toutes tes combobox, il faut mettre la ligne

IDprox = Application.WorksheetFunction.Index(Range("A:F"), WorksheetFunction.Match(Add_ref.Controls("ComboBox" & i), Range("b:b"), 0), 1)

pile après :

For i = 1 To 3

Bonjour Arthur, bonjour le forum,

Malgré tes explications claires, sans le fichier qui va bien je ne me risquerais même pas...

[b]

[Édition][/b]

De plus il semblerait que Ausecour ait trouvé la solution...

Tout d'abord, merci pour les reponses!

j'ai fais la modif, pas de differences...

22pfmea.xlsm (86.94 Ko)

je vous laisse le fichier… je suis dessus depuis 48h, je pleure du sang!!

desole par avance pour mon codage plus que novice! Ca doit vous piquer les yeux!

Re-bonjour!

j'ai horreur de faire ce, mais je up mon post.

Je n'ai toujours pas trouve de solutions, malgre des recherche dur les forums aides excel... quelque chose cloche mais je ne sais pas ou, j'ai tente d'utiliser une boucle differente (While) mais exactement meme resultat!

Voila ou j'en suis, merci d'avance!

Bonjour,

J'ai trouvé une erreur en plus dans ton code:

Application.WorksheetFunction.Index(Range("A:F"), WorksheetFunction.Match(Add_ref("ComboBox" & i), Range("b:b"), 0), 1)

dans worksheetfunction.match, tu recherches Add_ref("combobox" & i), ce qui n'est pas exact, car il faut mettre Controls("combobox" & i)

ce qui donne:

IDprox = Application.WorksheetFunction.Index(Range("A:F"), WorksheetFunction.Match(Controls("ComboBox" & i), Range("b:b"), 0), 1)

j'ai testé et ça met le bon ID

merci pour la correction, j'ai repris ta ligne mais ca ne fonctionne pas...

   On Error Resume Next

        Sheet6.Activate

        For i = 1 To 3

        If (Add_ref.Controls("ComboBox" & i)) <> "" Then

            IDprox = Application.WorksheetFunction.Index(Range("A:F"), WorksheetFunction.Match(Controls("ComboBox" & i), Range("b:b"), 0), 1)

            IDREF = Application.WorksheetFunction.Index(Range("A:F"), WorksheetFunction.Match(TextBox_ref, Range("D:D"), 0), 1)

            Sheet5.Activate

            Newlinepro = Cells(1, 4).End(xlDown).Row + 1 '= line to fill

            Cells(Newlinepro, 2).Value = IDREF
            Cells(Newlinepro, 3).Value = IDprox
            Cells(Newlinepro, 4).Value = Add_ref.Controls("Label_" & i).Caption
            Cells(Newlinepro, 5).Value = TextBox_new

        Else
        End If

        Next

je te remets mon code, avec ta function corrigee!

je seche totalement la...

Re,

ce que tu me dis est bizarre, je l'avais testé de mon côté, en écrivant come toi, et ça me mettait bien un IDprox de 2

Je te joins la version qui chez moi met bien IDpro à 2 si je sélectionnes "store in the warhouse" ou quelque chose qui ressemble à ça:

13pfmea.xlsm (80.57 Ko)

Bon.. je pense que le probleme doit etre ailleur…

j'ai donc utilise un moyen detourne pour le faire (beaucoup moins propre)

Merci de votre aide

Rechercher des sujets similaires à "aide boucle userforms"