Tableau structuré
Bonjour,
J’ai bien compris l’utilité des tableaux structurés, mais cela reste pour moi un vrai chemin de croix.
Mon problème :
Je dispose de 2 bases de données dans un même workbook.
- une contenant les données CP et commune,
- l’autre les noms de rue de chaque commune.
-
Pour extraire CP et commune je ne rencontre pas de problème
Pour isoler les rues correspondant aux CP souhaité, j’ai créé une table T_Datas contenant les données que je souhaitais exploiter dans l’immédiat.
Voici une partie du code utilisé.
Private Sub rue_Change()
Dim ligne As Long
Dim f2 As ListObject
Dim lcs As ListColumn
Dim row As ListRow
Dim r As Range
Dim rg As Range
Dim trouv
Set f2 = Sheets("BDD_rues").ListObjects(1)
Set lcs = f2.ListColumns(1)
Set row = f2.ListRows
ligne = lcs.DataBodyRange.Find(what:=CP).row
trouv = False
Do While Cells(ligne, 3).text <> ""
If Cells(ligne, 3).text = CP Then trouv = True
If trouv Then
If Cells(ligne, 3).text <> CP Then Exit Do
Me.rue.AddItem Cells(ligne, 3).text
End If
ligne = ligne + 1
Loop
Me.rue.DropDown
Set f2 = Nothing
Set lcs = Nothing
End SubSi je parviens à trouver la première position du CP souhaité dans la colonne » PKANCODE » impossible pour moi de récupérer le nom de la rue situé dans la colonne « STRAATNM » ainsi que toutes les autres rues liées au même code postal.
Merci d’avance pour votre aide
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
ci-dessous un code qui devrait fonctionner
Private Sub rue_Change()
Dim f2 As ListObject
Dim lcs As ListColumn
Dim i As Long
Dim cell As Range, cell1 As Range
Set f2 = [T_Datas].ListObject
Set lcs = f2.ListColumns("PKANCODE")
Set cell = lcs.DataBodyRange.Find(what:=CP)
If Not cell Is Nothing Then
Set cell1 = cell
Do
With f2
i = cell.row - .HeaderRowRange.row
Me.Rue.AddItem .ListColumns("STRAATNM").DataBodyRange(i)
End With
Set cell = lcs.DataBodyRange.FindNext(cell)
Loop Until cell.Address = cell1.Address
End If
Me.Rue.DropDown
Set f2 = Nothing
Set lcs = Nothing
End SubNB : avec un tableau structuré, utiliser les noms de colonne afin de rendre le code invariant en cas de déplacement ou d'ajout de colonne.
Je ne sais comment vous remercier pour ce coup de main vraiment précieux.
Vu le temps que je cherche c'est vraiment appréciable.
Encore une question pour mon "éducation" personnelle
i = cell.row -
Comment faut-il comprendre cette ligne de code ? Je suis loin de maîtriser VBA mais ceci je ne l'ai jamais vu dans toutes mes recherches.
Encore merci.
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
"i = cell.row - .HeaderRowRange.row"
i = cell.row donne à partir de la première ligne de la feuille, le numéro de ligne de la cellule trouvée par l'instruction Find. Pour trouver le numéro de ligne correspondant au tableau structuré, il faut y retirer le numéro de ligne de son entête (=1 si le tableau structuré est situé à partir de la première ligne de la feuille).