1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| Sub Macro1()
Dim K As Worksheet 'déclare la variable K (onglet)
Dim T As Worksheet 'déclare la variable T (onglet)
Dim TBK As Variant 'déclare la variable TBK (TaBleau de K)
Dim TBT As Variant 'déclare la variable TBT (TaBleu de B)
Dim TC() As Variant 'déclare la variable TC (Tableau des Codes)
Set K = Worksheets("KEYWORD") 'définit l'onglet K
Set T = Worksheets("TABLEAU") 'définit l'onglet T
T.Columns(4).ClearContents 'efface d'éventuelles anciennes données
TBK = K.Range("B2").CurrentRegion 'définit le tableau TBK de l'onglet K
TBT = T.Range("C3").CurrentRegion 'définit le tableau TBT de l'onglet T
ReDim TC(UBound(TBT, 1) - 1) 'redimensionne le tableau des codes TV
For I = 2 To UBound(TBT, 1) 'boucle 1 : sur toutes les lignes I du tableau TBT (en partant de la seconde)
For J = 2 To UBound(TBK, 1) 'boucle 2 : sur toutes les lignes J du tableau TBK (en partant de la seconde)
For L = 2 To UBound(TBK, 2) 'boucle 2 : sur toutes les colonnes L du tableau TBK (en partant de la seconde)
'Debug.Print TBT(I, 1), TBK(J, L)
If InStr(1, TBT(I, 1), TBK(J, L), vbTextCompare) <> 0 _
And TBK(J, L) <> "" Then 'condition 1 : si le texte du code (ligne J colonne L) est contenu dans le libellé (ligne I colonne 1) et le Keyword n'est pas vide
If TC(I - 2) <> "" Then 'condition 2 : si le code I-2 n'est pas vide
'si le code existe déja dans la liste des code, va à l'étiquette "la"
If InStr(1, TC(I - 2), TBK(J, 1), vbTextCompare) <> 0 Then GoTo la
End If 'fin de la condition 2
TC(I - 2) = IIf(TC(I - 2) = "", TBK(J, 1), TC(I - 2) & ", " & TBK(J, 1)) 'recupère ou ajoute le code (ligne J, colonne 1 de TBK)
la: 'étiquette
End If 'fin de la condition
Next L 'prochaine colonne de la boucle 3
Next J 'prochaine ligne de la boucle 2
'Debug.Print TC(I - 2), I - 2
Next I 'prochaine ligne de la boucle 1
T.Range("D4").Resize(UBound(TC, 1)).Value = Application.Transpose(TC) 'renvoie dans D4 de l'onglet T le tableau TC transposé
End Sub |
Partager