Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Voici le code que j'ai intégré dans mon codage. C'est en principe le mêm que celui que tu m'a adressé. Juste que la comboxbox s'appelle maintenant combobox61. J'ai retiré la ligne sheets("PARAMETRE").Range("B32").Value = ComboBox59.Value, vue qu'elle n'avait que pour action de renseignée la ligne NbArticle = Sheets("PARAMETRE").Range("B33").Value que tu n'as pas exploité dans ton code.
______________________________________________________________________________________________
Private Sub ComboBox61_Change()
Dim Obj1 As Object
Dim NbArticle As Integer
Dim i As Integer, x As Byte
Dim j As Integer
Dim Tablo()

Erase Tablo
j = Sheets("MERCURIALE").Range("B65536").End(xlUp).Row
x = 1

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) = ComboBox61.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 + 80 '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
 

ChTi160

XLDnaute Barbatruc
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
 

Pièces jointes

  • Fichier test Chti160.xlsm
    71 KB · Affichages: 5

Bob O' Deville

XLDnaute Junior
Ok, ceci explique certainement cela. Je vérifié et te tien au jus. Merci encore
 

Bob O' Deville

XLDnaute Junior
Re
ok
quand je parlais de ListBox
celle ci pourrait contenir l'ensemble des données de la Sélection
a savoir ce que tu veux en faire !
jean marie
Non je ne l'envisage pas.
Et j'ai rempli mon userforms tout marche.
Par contre j'ai un nouveau chalenge Multiplier deux textbox issue du code précédent.
En l'occurence : Textbox " Soiti6" = "Colissagei3"*"Qtéi5"
Si tu as une idée je suis preneur

Avec pour macri Sub Qti5-change() Autrement dit la variable est dans le titre.
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
le code précédent ?
comment sont remplies ces TextBox Colissagei3 * Qtéi5 ?
comme celà je ne peux rien pour toi
met un fichier exemple de ce que tu as et ce tu veux !
jean marie
 

Bob O' Deville

XLDnaute Junior
Re
le code précédent ?
comment sont remplies ces TextBox Colissagei3 * Qtéi5 ?
comme celà je ne peux rien pour toi
met un fichier exemple de ce que tu as et ce tu veux !
jean marie
Le colissagei3 est rempli automatiquement comme pour le textbox Désignationi issu de ton code. Et le TextBox Qtéi5 est rempli manuellement. ET le but est lorsque je met une valeur dans l'un des Textbox Qtéi5 Le Textbox Soiti6 correspondant reçoit la valeur du produit de Qtéi5 et Colissagei3 également correspondant sur la même ligne.
C'est chaud ! Non ?
 

Bob O' Deville

XLDnaute Junior
Re
Chaud Non !
Mais , je ne vais pas refaire tout le Code pour générer les TextBox ........ pour ensuite pouvoir répondre à la demande!
Bonne continuation
jean marie
Les code est fait et grâce à toi. Toutes les textbox sont générés. Je n'imaginais pas qui fallait le refaire. Je pensai sans doute naïvement qu'il pouvait exister une formule qui s'ajouterait au code déjà écrit. Je pense qu'une boucle pourrait faire l'affaire. Mais ce qui me manque c'est la connaissance des expression typique VBA pour la réaliser dans ce cadre là
 

Pièces jointes

  • Fichier test Chti160.xlsm
    77.7 KB · Affichages: 4

Discussions similaires

Réponses
4
Affichages
451
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…