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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
Option Explicit
Public Function exclu(lecode As String) As Boolean
Dim t As Range
'Recherche du code dans le champ nommé liste_excu
Set t = Worksheets("EXCLUSIONS").Range("liste_exclu").Find(lecode, LookIn:=xlValues)
'Si le code n'est pas rien, - i.e. est trouvé -, alors il est exclu
exclu = (Not t Is Nothing)
'Libération de la variable
Set t = Nothing
End Function
Public Sub laconcat()
Dim laplage As Range
Dim c As Range, cod As Range
Dim lachaine As String
Dim dernl As Integer
Dim compteur As Long
With Worksheets("FICHIER TEST TRANSFORME")
dernl = .Cells(.Rows.Count, 1).End(xlUp).Row
'Définition du champ vertical des cellules à concaténer
'1ère cellule = G2, dernière = la dernière cellule en partant du bas de la feuille
Set laplage = .Range("BI2:BI" & dernl)
For Each c In laplage
'Initialisation de la chaine de caractères de concaténation à vide
lachaine = ""
compteur = 1
'Booucle sur les codes de la 1ère (AY) à la 6ème colonne (BH)
'sur la ligne de la cellule de concaténation
For Each cod In .Range(.Cells(c.Row, 51), .Cells(c.Row, 60))
If compteur = 1 Then
'Test 1 : code informé, Test 2 : code non exclu
If Len(cod) > 0 And exclu(cod.Value) = False Then
lachaine = lachaine & cod.Value
End If
Else
If Len(cod) > 0 And exclu(cod.Value) = False Then
lachaine = lachaine & ", " & cod.Value
End If
End If
compteur = compteur + 1
Next cod
'Suppression du dernier blanc
lachaine = TriCellule(RTrim(lachaine))
'concaténation sur la cellule
'c.Value = (lachaine)
c.Value = Application.WorksheetFunction.Clean(Application.WorksheetFunction.Trim(UCase(Replace(Replace(Replace(lachaine, Chr(9), ""), Chr(10), ""), Chr(160), ""))))
Next c
'Libération de la variable
Set laplage = Nothing
End With
End Sub
Public Function TriCellule(c) As String
Dim Temp
Dim Sauv As String
Dim i As Long, j As Long
If IsEmpty(c) Then Exit Function
Temp = Split(c, ",")
'---- tri
For i = LBound(Temp) To UBound(Temp)
For j = i To UBound(Temp)
If Temp(j) < Temp(i) Then
Sauv = Temp(j)
Temp(j) = Temp(i)
Temp(i) = Sauv
End If
Next j
Next i
TriCellule = Join(Temp, " ")
End Function |
Partager