[USF] Récupérer la valeur d'une cellule d'un tableau auto dans une TextBox

peper_eliot

XLDnaute Junior
Bonjour à tous,

J'ai un petit souci qui va se terminer par une bonne baffe de votre part, je le sens ;)

Je souhaite activer un USF et le renseigner avec les données stockée sur une ligne précise.
Jusque là, rien de bien sorcier, sauf que, je me plante lamentablement sur la façon de sélectionner la bonne ligne en faisant référence à un tableau automatique.

Donc, en gros,
Code:
Dim L As Byte

L = ActiveCell.Row 'ligne active
MsgBox (L)
test0 = Range("F6").Value
MsgBox (test0)
test1 = Range("F" & L).Value
MsgBox (test1)
ça, ça marche... et je peux donc alimenter une textbox par
textbox1 = Range("F" & L).Value
Mais comment faire quand je fait référence à un tableau automatique ??
Code:
test = Range("tableau2[Num]" & L).Value '????????
'ne marche pas WHY ??
'Range("tableau2[Numéro]")(L) = test 'rien
'test = Range("tableau2[Num]" & L).Value 'pas bon
'test = Range("tableau2[Num]", L).Value 'flute zut crotte

MsgBox (test)

Je joins mon classeur de travail, mais, pour l'instant, c'est du brouillon ;) je vous tiendrais au courant des évolutions ;)
D'avance merci pour vos pistes, liens et suggestions ;)
 

Pièces jointes

  • MSPEtudiants.xlsm
    39.9 KB · Affichages: 129
Dernière édition:

peper_eliot

XLDnaute Junior
Re : [USF] Récupérer la valeur d'une cellule d'un tableau auto dans une TextBox

Merci a toi paritec pour ta réponse.
Non, pour moi, un tableau automatique, c'est l'option dispo sous l'onglet ACCUEIL : groupe STYLE > mettre sous forme de tableau
ça génère des zones nommées automatiquement "Tableau1", "Tableau2"... que je retrouvent et peut gérer dans l'onglet FORMULES : Groupe NOM DEFINIS : Gestionnaire de noms
Voici un petit lien pour des détails supplémentaires Les tableaux dans Excel 2007
Je ne peux plus m'en passer ;)

Du coup, avec ça, en faisant référence dans une macro d'un "Tableau1[nom_de_l'en-tête]", si je déplace mon tableau ou que je lui rajoute une colonne auto ou même 10 lignes, mes ref VBA ne bougent pas... mon "Tableau1[nom_de_l'en-tête]" comprend toutes mes lignes de ma colonne sélectionnées, sans savoir a chercher la dernière ligne vide comme on faisait avant, ni même a chercher la première ligne située sous l'en-tête.

Mon premier essai concluant de la manipulation des tableaux auto en VBA, avec l'aide de JNP était dans ce fil https://www.excel-downloads.com/thr...-frais-reels-en-comptant-les-cellules.165223/
 
Dernière édition:

peper_eliot

XLDnaute Junior
Re : [USF] Récupérer la valeur d'une cellule d'un tableau auto dans une TextBox

Bonjour Peper eliot le forum
merci de l'info
a+
papou:)
you're welcome ;)

Sinon, pour info, voici mes derniers tests...
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim L As Byte

'En cliquant sur une cellule de la colonne "Macro" du "Tableau1"
If Not Application.Intersect(Target, Range("Tableau1[Macro]")) Is Nothing Then
'Je récupère l'adresse de la cellule active
L = ActiveCell.Row 'ligne active
'L2 =
MsgBox (L)
'===AVANTAGE===
'Cela ne fonctionne QUE pour les cellules intégrées au tableau

'Je vais pouvoir récupérer la valeur de la colonne [ET_2] du "Tableau1"
V1 = Range("D" & L).Value
MsgBox (V1)
'Mais, au lieu de coder en dur la colonne "D", je souhaiterai
'utiliser la référence dynamique de la colonne du "Tableau1[ET_2]"
'V2 = Range("Tableau1[@ET_2]" & L) 'échec de la méthode Range
'V2 = Range("Tableau1[ET_2]" & L) 'échec de la méthode Range
V2 = Range("Tableau1[ET_2]")(L) 'me renvoit une sélection vide
MsgBox (V2) '===???===
'PAS TOUT A FAIT... me renvoit la Xème Ligne de la colonne!!!
'du coup, il faut que je récupère le numéro de la ligne
'non pas de la feuille 'mais de mon "tableau1"!!!
End If
End Sub
Donc je suis à la recherche de mon numéro de ligne du "Tableau1" :rolleyes:
 

peper_eliot

XLDnaute Junior
Re : [USF] Récupérer la valeur d'une cellule d'un tableau auto dans une TextBox

ça y est...
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
Dim L As Byte, L1 As Byte
 

'En cliquant sur une cellule de la colonne "Macro" du "Tableau1"
 If Not Application.Intersect(Target, Range("Tableau1[Macro]")) Is Nothing Then
 'Je récupère le numéro de ligne de la cellule active
 L = ActiveCell.Row 'ligne active
 
'Je récupère le numéro de ligne des en-têtes de mon Tableau1
 
L1 = Range("Tableau1[#Headers]").Row
 'ET VOILA
 MsgBox ("Le N° de la ligne active dans la colonne [Macro] par rapport aux N° de la Feuil est : " & L)
 MsgBox ("Le N° de la première ligne d'en-tête du 'Tableau1' par rapport aux N° de la Feuil est : " & L1)
 MsgBox ("Le N° de la ligne active DANS MON TABLEAU1 est : " & L - L1)
 'Donc...
 V3 = Range("Tableau1[ET_2]")(L - L1) 'me renvoit bien la valeur de la colonne [ET_2]
 MsgBox (V3)
Le lien vers mon petit classeur de travail ;)
https://skydrive.live.com/redir.aspx?cid=ded8104e81ccfdba&resid=DED8104E81CCFDBA!201

Bon, ben on va pouvoir continuer... je reste sur ce fil pour la suite des opétrations, histoire de ne pas encombrer le fofo
Et serais toujours attentifs a vos remarques ou suggestions ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 164
Membres
103 149
dernier inscrit
Deepkneec