XL 2010 Me.Controls("TextBox & i").Value = Cells(k, 3)

Bob O' Deville

XLDnaute Junior
Bonjour,

J'ai rédigé les 2 boucles for imbriquées suivantes:

_______________________________________________________________________________________________
Dim collect As Collection
Dim Obj1 As Object
Dim NbArticle As Integer
Dim i As Integer
Dim j As Integer

Sheets("PARAMETRE").Range("B32").Value = ComboBox59.Value
NbArticle = Sheets("PARAMETRE").Range("B33").Value

Set collect = New Collection

'--------------------------------------------------------------------------------------------------------
Première boucle
'**********Créer nombre de Textbox en fonction de la valeur de la variable NbArticle************
'--------------------------------------------------------------------------------------------------------
For i = 1 To NbArticle

Set Obj1 = Me.MultiPage1.Pages(1).Controls.Add("forms.textbox.1", "Obj1", True)
With Obj1
.Name = "Designation" & i 'nom de la textbox (toto1, toto2, toto3, ...)
.Left = 15 'position par rapport au rebord gauche de l'UserForm
.Top = 20 * i + 65 'position par rapport au haut de l'UserForm
.Width = 160 'largeur de la zone d'écriture
.Height = 15 'hauteur de la zone d'écriture
'.Text = "je suis : " & Obj1.Name
'.Object.Value =
End With
'-------------------------------------------------------------------------------------------------------
Deuxième Boucle (imbriquée)
*****************Alimenter les textBox avec leur valeur respectives******************************
'-------------------------------------------------------------------------------------------------------
j = Sheets("MERCURIALE").Range("B65536").End(xlUp).Row
Sheets("MERCURIALE").Activate

For k = 2 To j

If Cells(k, 2).Value = ComboBox59.Value Then
Me.Controls("Designation & i").Value = Cells(k, 3)
'-------------------------------------------------------------------------------------------------------
Ce qui ne marche pas
************** Me.Controls("Designation & i").Value = Cells(k, 3)*********************

La même valeur alimente toutes les TextBox alors qu'elle devrait être différente
Ainsi, si je remplace Me.Controls("Designation & i").Value = Cells(k, 3)
par Cells(k, 4).Value = Cells(k, 3) La boucle fait le job
'-------------------------------------------------------------------------------------------------------
End If

Next k

Next i

Set Obj1 = Nothing

End Sub
__________________________________________________________________________________________________________
J'ai essayé plein de truc, sans résultat. En gros je sèche. Je pense qu'il s'agit d'un problème de syntaxe.
Merci pour vos éclairages
 

Pièces jointes

  • Fichier test.xlsm
    77.1 KB · Affichages: 25
Solution
Re
un fichier modifié !
je ne sélectionnais pas la feuille source donc comme tu as codé Cells(k, 2) par exemple, sans référence a la feuille ou setrouve la Cellule .
c'est la feuille active qui était prise en compte ,donc toute les cellules étaient vides !enfin .
regarde le Code et adapte le
jean marie

Bob O' Deville

XLDnaute Junior
hello,
Peut être à cause de ça ?

Si tu essayais Me.Controls("Designation" & i).Value = Cells(k, 3) ?
A +
Bien vue ! Mais malheureusement, ce n'est pas ça.. Déjà corrigé depuis ma demande.
Si ça peut donner un éclairage supplémentaire,
La valeur incrémentée dans les textBox, est la dernière parmi celles qui sont sélectionnées.

Nouvelle vérification avec une ligne :
Me.Controls("Designation" & 1).Value = Cells(3, 3)
Ca match !
avec plusieurs lignes...
Me.Controls("Designation" & 1).Value = Cells(3, 3)
Me.Controls("Designation" & 2).Value = Cells(4, 3)
Me.Controls("Designation" & 3).Value = Cells(5, 3)
Me.Controls("Designation" & 4).Value = Cells(6, 3)
... Ca ne match plus. Bug dès la deuxième
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour
Bonjour le Fil ,le Forum
ce que j'ai mis (pas compris la démarche!) Lol
VB:
Private Sub ComboBox59_Change()

Dim Obj1 As Object
Dim NbArticle As Integer
Dim i As Integer, x As Byte
Dim j As Integer
Dim Tablo()
Sheets("PARAMETRE").Range("B18").Value = ComboBox59.Value
Erase Tablo
  j = Sheets("MERCURIALE").Range("B65536").End(xlUp).Row
 x = 0
 On Error Resume Next
 For Each Obj1 In Me.MultiPage1.Pages(1).Controls
        If Obj1.Name Like "Désignation#" Then
    Obj1.Visible = False
        End If
        Err.Clear
 Next
  For k = 2 To j
        If Cells(k, 2) = ComboBox59.Value Then
        x = x + 1
           ReDim Preserve Tablo(1 To 2, 1 To x)
           Tablo(1, x) = Cells(k, 2)
           Tablo(2, x) = Cells(k, 3)
        End If
    Next k
    If x = 0 Then Exit Sub
    For i = 1 To UBound(Tablo, 2)  
    Set Obj1 = Me.MultiPage1.Pages(1).Controls.Add("forms.textbox.1")
    With Obj1
    .Name = "Désignation" & i 'nom de la textbox (toto1, toto2, toto3, ...)
    .Left = 15 'position par rapport au rebord gauche de l'UserForm
    .Top = 20 * i + 65 'position par rapport au haut de l'UserForm
    .Width = 160 'largeur de la zone d'écriture
    .Height = 15 'hauteur de la zone d'écriture
    .Visible = True
    .Text = Tablo(2, i)
    End With
    Next i
End Sub

Combien de TextBox Désignation peux tu avoir au Maximun ?
jean marie
 

Bob O' Deville

XLDnaute Junior
A
Bonjour
Bonjour le Fil ,le Forum
ce que j'ai mis (pas compris la démarche!) Lol
VB:
Private Sub ComboBox59_Change()

Dim Obj1 As Object
Dim NbArticle As Integer
Dim i As Integer, x As Byte
Dim j As Integer
Dim Tablo()
Sheets("PARAMETRE").Range("B18").Value = ComboBox59.Value
Erase Tablo
  j = Sheets("MERCURIALE").Range("B65536").End(xlUp).Row
 x = 0
 On Error Resume Next
 For Each Obj1 In Me.MultiPage1.Pages(1).Controls
        If Obj1.Name Like "Désignation#" Then
    Obj1.Visible = False
        End If
        Err.Clear
 Next
  For k = 2 To j
        If Cells(k, 2) = ComboBox59.Value Then
        x = x + 1
           ReDim Preserve Tablo(1 To 2, 1 To x)
           Tablo(1, x) = Cells(k, 2)
           Tablo(2, x) = Cells(k, 3)
        End If
    Next k
    If x = 0 Then Exit Sub
    For i = 1 To UBound(Tablo, 2) 
    Set Obj1 = Me.MultiPage1.Pages(1).Controls.Add("forms.textbox.1")
    With Obj1
    .Name = "Désignation" & i 'nom de la textbox (toto1, toto2, toto3, ...)
    .Left = 15 'position par rapport au rebord gauche de l'UserForm
    .Top = 20 * i + 65 'position par rapport au haut de l'UserForm
    .Width = 160 'largeur de la zone d'écriture
    .Height = 15 'hauteur de la zone d'écriture
    .Visible = True
    .Text = Tablo(2, i)
    End With
    Next i
End Sub

Combien de TextBox Désignation peux tu avoir au Maximun ?
jean marie
Bonsoir Ch'ti:
A-priori pas de maximum, mais probablement jamais au delà de trente.
 

Bob O' Deville

XLDnaute Junior
Pour l'ajout d'une listBox. L'idée est déjà mis en oeuvre. Mais je l'ai fait avec mon code. Je reconnais que le tien, au delà du fait qu'il ne marche pas chez moi, mais il doit y avoir une raison, c'est un peu du chinois et je craints me mélanger les pédales en ajoutant des textbox annexes
 

ChTi160

XLDnaute Barbatruc
Re
rien de compliqué
il te suffit de mettre en lieu et place de la Procédure "ComboBox59_Change" de ton fichier
Le texte du Post #4
Pourquoi : " des textbox annexes "??????????????????????????????
tu me diras , je ne sais pas a quoi tout ca dois servir Lol .....
jean marie
 

Bob O' Deville

XLDnaute Junior
Bonsoir Jean Marie,
Merci de me répondre.
Je suppose que c'est pas forcément compliqué.
S'agissant des textbox annexes. J'admet que l'expression n'est pas académique pour désigner les textbox
qui sont à coté des textbox "Désignation" et qui renseignent sur le contenu des colonne Référence Colissage et qté, comme tu a pu le supposer en voyant les labels sur l'userform.
Mais ce qui me préoccupe depuis un moment, est que le code que tu m'a adressé ne s'exécute pas chez moi.
Je l'ai copié collé, retranscrit manuellement, changer de comboxbox, détruit le fichier test... Rien y fait.
Je suis désemparé
 

Discussions similaires

Réponses
4
Affichages
418

Statistiques des forums

Discussions
314 635
Messages
2 111 453
Membres
111 144
dernier inscrit
shura_77