[VBA]Affecter une valeur à un textbox en fonction d'une cellule Excel

Bonjour, ma demande n'est pas facile à expliquer mais je vais essayer d'être assez claire.

voici mon formulaire:

image

Les commentaires (vpninst & commfinal3) sont les noms des textbox et ne sont là que pour illustrer mon explication.

Je souhaite que lorsque le user choisis une valeur à VRF (liste déroulante qui récupère les valeurs de la colonne A du tableau structuré Spines_L3_new) ma textbox vpninst se remplisse avec la valeur de la colonne C et commfinal3 avec la valeur de la colonne E correspondant à la valeur de VRF (colonne A)

Si ma demande n'est pas assez explicite n'hésiter pas, je tacherai de faire mieux.

Merci à vous

Hello,

Comme expliqué dans ce tuto, (dernière ligne), la variable "i" te donne l'indice de ta valeur inscrite dans le cbx

Donc, un code genre :

If Me.ComboVRF <> "" Then
   i= Application.Match(Me.ComboVRF, TS.ListColumns(1).DataBodyRange, 0)
End if

Et ensuite remplir les Txt avec TS.DataBodyRange(i, "C") pour le premier....

Salut,

vu pour la syntaxe, cependant TS.DataBodyRange(i, "C") n'attend il pas en temps normal un égal derrière?

Non,

Tu peux, soit écrire dans cette cellule (dans ce cas, effectivement, =) soit y récupérer la valeur (Me.Txtbx=TS.Data....)

Ha d'accord, je comprends. Je tente et je reviens vers toi

En entrant ces commandes

Private Sub vrflan_Change()
descriplan = "V" & vrflan & "-LAN-0" & vlanlan
Dim i As Long
With TS_spine
If Me.vrflan <> "" Then
i = Application.Match(Me.vrflan, TS_spine.ListColumns(1).DataBodyRange, 0)
End If
End With
End Sub

et au niveau du textbox

Private Sub vpninst_Change()
Me.vpninst = TS_spine.DataBodyRange(i, "C")
End Sub

et en insérant le toggle, je vois bien que la variable "i" retourne le numéro de ligne. Cependant, le textbox ne se remplit pas.

Re-,

Ce n'est pas dans l'évènement du Txt box qu'il faut mettre cette instruction, mais dans la 1ère (le change du cbx)

Private Sub vrflan_Change()
descriplan = "V" & vrflan & "-LAN-0" & vlanlan
Dim i As Long
With TS_spine
   If Me.vrflan <> "" Then
      i = Application.Match(Me.vrflan, TS_spine.ListColumns(1).DataBodyRange, 0)
      Me.vpninst = TS_spine.DataBodyRange(i, "C")
   End If
End With
End Sub

Pfff, ce n'est pas comme si je ne l'avais pas déjà fait (définir la valeur d'un txtbox à partir d'un combox) sur d'autres parties de mon code.

Effectivement cela fonctionne mieux ainsi!

Merci

Sinon génial l'enregistreur de macro!!!

Sinon génial l'enregistreur de macro!!!

Quand je cherche à adapter le code à un autre objet

Private Sub BM_Change()
Dim i As Long
With t_TRAV
If Me.BM <> "" Then
i = Application.Match(Me.BM, t_TRAV("BM").DataBodyRange, 0)

Me.bm_comment = t_TRAV.DataBodyRange(i, "N")
End If
End With
End Sub

je veux que me.bm_comment soit la valeur de t-TRAV("BM"), mais la syntaxe n'est pas bonne à voir il me retourne une erreur à la ligne i=...

Re-,

"t_TRAV" correspond bien à un TS, dans un onglet quelconque, isn'it?
Tu n'as pas défini kekchose comme Set TS_TRAV = Range("t_TRAV")?
Si c'est le cas, ce n'est plus "With t_TRAV"...
Je ne sais pas trop où tu en es dans ton fichier, donc???

Après une perte d'accès au site je te réponds.

t_TRAV correspond à un tableau structuré avec les données (celui que tu m'as aidé à créer), effectivement il est déclaré en TS_TRAV

j'ai donc apporté la modification

With TS_Trav
If Me.BM <> "" Then

i = Application.Match(Me.BM, TS_Trav.ListColumns("BM").DataBodyRange, 0)

Me.bm_comment = TS_Trav.DataBodyRange(i, "N")
End If
End With

Et avec l'aide de la page du forum sur la syntaxe pour les TS j'ai donc réussi.

Merci

Et en bonus..

Comme tu "enveloppes" :

With TS_TRAV

Tu n'as plus besoin de le répéter avant le "End With"

Tu le remplaces par "rien" mais tu laisses le "." (point)

With TS_Trav
   If Me.BM <> "" Then
      i = Application.Match(Me.BM, .ListColumns("BM").DataBodyRange, 0)
      Me.bm_comment = .DataBodyRange(i, "N")
   End If
End With

Oh ben, j'en apprends... Merci mille fois encore

Rechercher des sujets similaires à "vba affecter valeur textbox fonction"