Ayant crée un UserForm me permettant de reporter des valeurs dans un tableau via le code ci dessous, j'aimerai à présent faire l'inverse, à savoir, reporter les valeurs du tableau dans cet UserForm.
Code:
With Sheets("report")
For Each Ctl In Me.Controls
If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.ComboBox Then .Cells(.Cells(Rows.Count, Ctl.Tag).End(xlUp).Row + 1, Ctl.Tag) = IIf(Ctl.Value = "", "non applicable", Ctl.Value)
Next
End With
Ce code permet de reporter les valeurs entrées dans chaque TextBox et ComboBox et si un des champ est vide, la valeur reportée sera automatiquement "Non applicable"
J'ai mis en pj un screenshot de l'UserForm car le fichier est trop volumineux et contient trop d'informations confidentielles à effacer.
Re : Reporter valeurs tableau dans TextBox et ComboBox
Bonjour,
Quand tu parles de récupérer les valeurs de ton tableau, c'est à dire ? Ton tableau à des dimensions fixes ? Ton UserForm se lance sous quelle action ? J'aurais personnellement du mal à t'aider car je ne vois pas comment tu localises la/les lignes à afficher dans ton UF.
Es-tu sûr de ne pas pouvoir faire de fichier exemple ?
Sinon, pour ce qui est de l'affichage précis d'une ligne dans un Combobox, essaie de voir mon post en fin de sujet ICI, c'est pour une Listbox mais cela ne doit pas être différent (si ?). Je ne sais pas si cela t'aide...
Re : Reporter valeurs tableau dans TextBox et ComboBox
Bonjour à tous,
comme le souligne Chalafraiz , le soucis est de savoir quelle ligne faire afficher !
Si c'est la dernière:
Code:
With Sheets("report")
For Each Ctl In Me.Controls
If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.ComboBox Then
Ctl.Value = .Cells(.Cells(Rows.Count, Val(Ctl.Tag)).End(xlUp).Row, Val(Ctl.Tag))
End If
Next
End With
Si c'est une ligne déterminée NumLig:
Code:
With Sheets("report")
For Each Ctl In Me.Controls
If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.ComboBox Then
Ctl.Value = .Cells(NumLig , Val(Ctl.Tag))
End If
Next
End With
Re : Reporter valeurs tableau dans TextBox et ComboBox
Effectivement, je n'ai pas précisé comment je trouve le num de ligne.
Le nm de ligne est trouvé par une valeur dans une TextBox
Code:
NumLig = edit.TextBox_num.Value + 2
J'ai donc utilisé le code :
Code:
Private Sub UserForm_Initialize()
Dim NumLig As Long, Ctl As Control
NumLig = edit.TextBox_num.Value + 2
With Sheets("report")
For Each Ctl In Me.Controls
If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.ComboBox Then
Ctl.Value = .Cells(NumLig, Val(Ctl.Tag))
End If
Next
End With
End Sub
Mais j'ai toujours une erreur
Apllication defined or object defined error
Les variables sont bien déclarées et NumLigne prend bien une valeur numérique (7) et Val(Ctl.Tag) une valeur texte (AH)
Re : Reporter valeurs tableau dans TextBox et ComboBox
Merci mais problème de type Mismatch.
Le problème vient du fait que lorsque l'on utilise. Cells, les valeurs doivent être numériques car il s'agit de l'index de la ligne puis de la colonne et dans mon cas l'index colonne est en lettre et non pas en chiffre.
J'ai essayé un . Range, mais je n'arrive pas à l'écrire correctement.
Re : Reporter valeurs tableau dans TextBox et ComboBox
Re,
si le code de votre post #1 fonctionne .Cells(.Cells(Rows.Count, Ctl.Tag).End(xlUp).Row + 1, Ctl.Tag) = IIf(Ctl.Value = "", "non applicable", Ctl.Value)
le code proposé au post #5 devrait fonctionner, à moins que NumLig soit considéré comme texte. et à ce moment il faudrait:
Ctl.Value = .Cells(Val(NumLig), Ctl.Tag)
toujours pas facile de faire des tests sans le document concerné !!