Reporter valeurs tableau dans TextBox et ComboBox

maninwhite

XLDnaute Occasionnel
Bonjour à toutes et à tous

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.

Comment faire l'inverse?

Merci :)
 

Pièces jointes

  • Untitled.jpg
    Untitled.jpg
    31.6 KB · Affichages: 55
  • Untitled.jpg
    Untitled.jpg
    31.6 KB · Affichages: 58
  • Untitled.jpg
    Untitled.jpg
    31.6 KB · Affichages: 58

Chalafraiz

XLDnaute Nouveau
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...

Je précise que je ne suis pas experte en VBA.
 
Dernière édition:

Paf

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

Bonne suite
 

maninwhite

XLDnaute Occasionnel
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)

Merci
 

Paf

XLDnaute Barbatruc
Re : Reporter valeurs tableau dans TextBox et ComboBox

Re, ben oui ...!!

habituellement j'utilise des chiffres dans les Tag et la ça ne fonctionnait pas d'où le Val(..
(d'où l'importance de joindre un classeur !!)

Donc modifier comme ceci
Ctl.Value = .Cells(NumLig, Ctl.Tag)

A+
 

maninwhite

XLDnaute Occasionnel
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.

Code:
Ctl.Value = .Range("Ctl.Tag, NumLig")
 

Paf

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

Bonne suite
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa