Rechercher cellule d'un tableau structuré

Bonjour,

Aujourd"hui dans mon code VBA j'ai :

[T_Data].Item(1, 3).Value = Me.thematique.Value

pour remplir la cellule de la 1ère ligne et de la 3ème colonne de mon tableau structuré T_Data avec la valeur de ma liste déroulante thematique de mon userform.

Je souhaiterais remplacer le numéro de ligne par le nom de la colonne (ici Thématique) de mon tableau car nous ajouterons au fil de l'eau des colonnes dans ce tableau qui pourront être entre 2 colonnes déjà existantes et cela demanderait des modifications sur les numéros de colonnes de toutes mes lignes de code...

J'ai consulté plusieurs sujets du forum ainsi que d'autres pages web sur le sujet mais je n'arrive pas à l'appliquer sur mon code.

Merci par avance !

bonjour Aurianelm,
peut-être vous pouvez utiliser des "With...End With" ou de variables, mais ceci est possible

range("T_Data").listobject.listcolumns("Thématique").databodyrange.cells(1,1).Value = Me.thematique.Value

si vous voulez savoir la colonne

iCol=range("T_Data").listobject.listcolumns("Thématique").index

Bonjour Bart,

Je vais essayer ça !

Merci :)

excusez moi, pour un userform, il faut peut-être aussi ajouter la feuille, donc

sheets("nom de la feuille").range("T_Data").listobject.listcolumns("Thématique").databodyrange.cells(1,1).Value = Me.thematique.Value

Ca fonctionne très bien sans ajouter le nom de la feuille, merci beaucoup ! :)

Autre question, je me sers de cela également dans des Application.Match mais il n'a pas l'air de le prendre en compte...

i = Application.Match(nom_projet_a_modifier.Value, Range("T_Data").ListObject.ListColumns("Nom du dossier"), False)

As-tu une idée du problème ?

Merci !

re,

Range("T_Data").ListObject.ListColumns("Nom du dossier"), ce n'est que le "ListColumn", il fau ajouter ".range" ou ".databodyrange" pour assigner la plage (le premier est avec entête, le 2eme sans entête), Donc

i = Application.Match(nom_projet_a_modifier.Value, Range("T_Data").ListObject.ListColumns("Nom du dossier").DatabodyRange, False)

Super merci !

Encore une problématique...

Ce bout de code permettant d'afficher une liste si la condition est respectée ne fonctionne plus...

  If Me.CPM_Modif.ListIndex = -1 Then Exit Sub
  Me.nom_projet_a_modifier.Clear
  For i = 1 To [T_Data].Rows.Count
   If Me.Type_Campagne_modif = "Sujets Transverses" Or Me.Type_Campagne_modif.ListIndex = -1 Then
    cond = Range("T_Data").ListObject.ListColumns("CPM").DataBodyRange.Cells(i, i).Value = Me.CPM_Modif.Value
   Else
    cond = Range("T_Data").ListObject.ListColumns("CPM").DataBodyRange.Cells(i, i).Value = Me.CPM_Modif.Value And Range("T_Data").ListObject.ListColumns("Type Campagne").DataBodyRange.Cells(i, i).Value = Me.Type_Campagne_modif.Value
   End If
    If cond Then
       Me.nom_projet_a_modifier.AddItem Range("T_Data").ListObject.ListColumns("Nom du dossier").DataBodyRange.Cells(i, i).Value
    End If
  Next
  Me.nom_projet_a_modifier.ListIndex = -1

As-tu là encore une idée du problème ?

C'est bon j'ai trouvé mon erreur !

 If Me.CPM_Modif.ListIndex = -1 Then Exit Sub
  Me.nom_projet_a_modifier.Clear
  For i = 1 To [T_Data].Rows.Count
   If Me.Type_Campagne_modif = "Sujets Transverses" Or Me.Type_Campagne_modif.ListIndex = -1 Then
    cond = Range("T_Data").ListObject.ListColumns("CPM").DataBodyRange.Cells(i, 1).Value = Me.CPM_Modif.Value
   Else
    cond = Range("T_Data").ListObject.ListColumns("CPM").DataBodyRange.Cells(i, 1).Value = Me.CPM_Modif.Value And Range("T_Data").ListObject.ListColumns("Type Campagne").DataBodyRange.Cells(i, 1).Value = Me.Type_Campagne_modif.Value
   End If
    If cond Then
       Me.nom_projet_a_modifier.AddItem Range("T_Data").ListObject.ListColumns("Nom du dossier").DataBodyRange.Cells(i, 1).Value
    End If
  Next
  Me.nom_projet_a_modifier.ListIndex = -1

re, je ne sais pas si vous aimez utiliser des variables ?

     Dim LO, LC_CPM, LC_Campagne
     Set LO = Range("T_Data").ListObject 'le tableau
     With LO
          Set LC_CPM = .ListColumns("CPM") 'ce "Listcolumn"
          Set LC_Campagne = .ListColumns("Type Campagne") 'ce listcolumn
     End With

     If Me.CPM_Modif.ListIndex = -1 Then Exit Sub
     Me.nom_projet_a_modifier.Clear
     For i = 1 To LO.ListRows.Count
          If Me.Type_Campagne_modif = "Sujets Transverses" Or Me.Type_Campagne_modif.ListIndex = -1 Then
               cond = LC_CPM.DataBodyRange.Cells(i, 1).Value = Me.CPM_Modif.Value
          Else
               cond = LC_CPM.DataBodyRange.Cells(i, 1).Value = Me.CPM_Modif.Value And LC_Campagne.DataBodyRange.Cells(i, 1).Value = Me.Type_Campagne_modif.Value
          End If
          If cond Then
               Me.nom_projet_a_modifier.AddItem LO.ListColumns("Nom du dossier").DataBodyRange.Cells(i, 1).Value
          End If
     Next
     Me.nom_projet_a_modifier.ListIndex = -1
Rechercher des sujets similaires à "rechercher tableau structure"