Je viens de tout relire et tu ne sais pas, je crois que je n'ai rien compris :cry:
Je vais me coucher
A+
Version imprimable
Je viens de tout relire et tu ne sais pas, je crois que je n'ai rien compris :cry:
Je vais me coucher
A+
grrrr...:evilred: :? :aie: :( ¤¤¤
euh si c'est ca, ok, ma methode ne fonctionnera pas...
je m'incline et je vais me coucher pour la peine...
titeZ, tu es entre de bonnes mains.
juste manière d'y voir clair comme dans le jus de boudin, je suis de l'avis de daavy, si les deux chaines sont de longueur differentes, et même si une chaine contient l'autre, elle ne doivent pas etre considérée comme égales. mais bon, peut etre que l'interéssée pourrait se manifester pour nous le dire.
bonjour
Tu peux tester cette adaptation:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Dim Cell As Range Dim Tableau As Variant Dim i As Integer, x As Integer Dim Cible As Boolean 'Boucle sur les cellules de la colonne A qui contiennent les données For Each Cell In Range("A1:A" & Range("A65536").End(xlUp).Row) Cible = True Tableau = Split(Cell, " & ") For i = 0 To UBound(Tableau) If InStr(1, Cell.Offset(0, 1), Tableau(i)) = 0 Or _ InStr(1, Cell.Offset(0, 2), Tableau(i)) = 0 Then Cell.Offset(0, 3) = "Faux" Cible = False Exit For End If Next i If Cible = True Then Cell.Offset(0, 3) = "Vrai" Next Cell
il restera à valider le type de séparateur:
ouCode:Tableau = Split(Cell, " & ")
Code:Tableau = Split(Cell, "&")
michel
Voici quand même la solution que je proposais :
1/ si le split donne des tailles différentes => faux
2/ prend en compte également les doublons dans les chaines. exemple : 0.5&0.4&0.5
3/ fais un Trim après le split, pour que ca fonctionne que ce soit en séparateur "&" ou " & "
Fonction de tri d'un tableau de String (la casse est prise en compte) :
Fonction de comparaison qui se base sur cette fonction de tri :Code:
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 Function trie_tablo(liste) On Error GoTo errHandler Dim tabl(), bool As Boolean ReDim tabl(0) tabl(0) = Trim(liste(0)) If UBound(liste) < 1 Then trie_tabl = tabl: Exit Function For i = 1 To UBound(liste) bool = True ReDim Preserve tabl(i) For j = 0 To UBound(tabl) If Trim(liste(i)) < tabl(j) Then For k = i To j + 1 Step -1 tabl(k) = tabl(k - 1) Next k tabl(j) = Trim(liste(i)) bool = False Exit For End If Next j If bool Then tabl(i) = Trim(liste(i)) Next i trie_tablo = tabl Exit Function errHandler: trie_tablo = liste End Function
Reste plus qu'à parcourir la feuille Excel :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Function comparaison(str1, str2) As Boolean On Error Goto errHandler Dim bool, temp1, temp2 temp1 = Split(str1, "&", , vbTextCompare) temp2 = Split(str2, "&", , vbTextCompare) If Ubound(temp1) = Ubound(temp2) Then temp1 = trie_tablo(temp1) temp2 = trie_tablo(temp2) For i = 0 to Ubound(temp1) If temp1(i) <> temp2(i) Then Goto errHandler Next i Else: Goto errHandler End If comparaison = True Exit Function errHandler: comparaison = False End Function
La fonction de tri est bien sûr à paufiner...Code:
1
2
3
4
5 Sub test() For i = 2 To ActiveSheet.UsedRange.Rows.Count cells(i,3) = comparaison(cells(i,1), cells(i,2)) Next i End Sub
Re -bonjour, l'interessée est là :D
Merci enormement a tous de vous etes pris la tete sur ça...
Bon oui j'avoue que je n'avais pas été trés claire !
J'ai pas encore bien lu la 2eme page! mais :
Les chaines ont toutes la meme longueurs
1) a & b & c : trois "nombres" et des &
2) En faite le a & b & c n'est pas toujours le meme. Il faut effectivement comparer la colonnes A à la colonnes B
a1&b1&c1 ===> b1&a1&c1===> ça c'est ok!
a2&b2&c2===> a2&c3&d7==> ça c'est pas ok!
etc....
3) a peut etre égale à b peut etre égale à c
Re merci en tout cas!:D
Alors la solution de SilkyRoad suffit :evilred:
:mouarf:
Bonne journée
C'est magnifique
merci messieurs !
:D