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
| Option Explicit
Sub UneCombinaisonDePlus()
Dim NbreLignes As Long, NoLigne As Long, NoCol As Byte
NbreLignes = 9 'N° dernière ligne de la plage à vérifier
NoCol = 1 'données placées sur la colonne A
For NoLigne = 1 To NbreLignes 'on parcours la plage et on colle ...
'... le résultat sur la colonne suivante
Cells(NoLigne, NoCol + 1).Value = Analyse(NoLigne, NoCol) 'VRAI ou FAUX
Next
End Sub
Function Analyse(LaLigne, NoCol) As Boolean
Dim LeMot As String
Dim LeTableau
Dim Tableau
Dim i As Integer, cebon As Byte
' pour prendre LeMot dans une cellule :
' LeMot = Cells(NoLigne1,NoColonne1).value
LeMot = "0.1 & 0.3 & 0.4"
LeTableau = Split(Cells(LaLigne, NoCol).Value, " & ") 'la donnée lue
Tableau = NettoyageDoublons(LeTableau) 'suppression des doublons
For i = 0 To UBound(Tableau)
If LeMot Like "*" & Tableau(i) & "*" Then cebon = cebon + 1
Next
Analyse = cebon = UBound(Split(LeMot, " & ")) + 1
End Function
Function NettoyageDoublons(LeTableau)
Dim DonneeOk()
Dim trouvé As Boolean, n As Byte, i As Byte, j As Byte
ReDim Preserve DonneeOk(0)
DonneeOk(0) = LeTableau(0)
j = 0
For i = 0 To UBound(LeTableau)
For n = 0 To j 'Vérif donnée pas déjà stockée
trouvé = trouvé Or LeTableau(i) = DonneeOk(n)
Next n
If Not trouvé Then 'on stocke la nouvelle donnée
j = j + 1
ReDim Preserve DonneeOk(j)
DonneeOk(j) = LeTableau(i)
End If
trouvé = False
Next
NettoyageDoublons = DonneeOk
End Function |
Partager