Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comparer 2 cellules avec au moins 5 caracteres consécutifs en commun ?

6 réponses
Avatar
Eric
Bonjour,

Je voudrais qu'excel me compare deux cellules: si il y a au moins 5
caracteres consécutifs en commun (chiffres ou lettres), alors dire "ok",
sinon "error".

Exemple N°1 "ok":
A1 = verto demi
B1 = verto

verto en commun => ok


Exemple N°2 "ok":
A1 = bejol55h getypolm
B1 = mopol55hgem lopiuyter fdesdf

ol55h en commun.=> ok


Merci d'avance ;)
Eric
(excel 2003)

6 réponses

Avatar
gmlsteph
Hello,

Sub toto()
Dim mych1 As String, mych2 As String, _
TstCh As String, mytest As Boolean

mych1 = [A1]
mych2 = [B1]
mytest = False
For i = 1 To Len(mych1) - 4
TstCh = Mid(mych1, i, 5)
If InStr(1, mych2, TstCh) Then
mytest = True: Exit For
End If
Next

MsgBox mytest

End Sub


On 8 juin, 12:22, "Eric" wrote:
Bonjour,

Je voudrais qu'excel me compare deux cellules: si il y a au moins 5
caracteres consécutifs en commun (chiffres ou lettres), alors dire "ok" ,
sinon "error".

Exemple N°1 "ok":
A1 = verto demi
B1 = verto

verto en commun => ok

Exemple N°2 "ok":
A1 = bejol55h getypolm
B1 = mopol55hgem lopiuyter fdesdf

ol55h en commun.=> ok

Merci d'avance ;)
Eric
(excel 2003)


Avatar
MichDenis
Bonjour Éric,

Une fonction personnalisée que tu places dans un module standard :
Dans une cellule, tu écris :
=Présent_Dans(A1;A2), OU =Présent_Dans(A2;A1)

'----------------------------------------
Function Présent_Dans(Rg As Range, Rg1 As Range)
Dim A As String, X As String
If Len(Rg) > Len(Rg1) Then
A = Trim(Rg): X = Trim(Rg1)
Else
X = Trim(Rg): A = Trim(Rg1)
End If
For b = 1 To Len(X) - 4
toto = Mid(X, b, 5)
If InStr(b, A, Mid(X, b, 5), vbTextCompare) <> 0 Then
Présent_Dans = "Ok"
Exit Function
End If
Next
If Présent_Dans = "" Then Présent_Dans = "Absent"
End Function
'----------------------------------------



"Eric" a écrit dans le message de groupe de discussion :
4a2ce668$0$4845$
Bonjour,

Je voudrais qu'excel me compare deux cellules: si il y a au moins 5
caracteres consécutifs en commun (chiffres ou lettres), alors dire "ok",
sinon "error".

Exemple N°1 "ok":
A1 = verto demi
B1 = verto

verto en commun => ok


Exemple N°2 "ok":
A1 = bejol55h getypolm
B1 = mopol55hgem lopiuyter fdesdf

ol55h en commun.=> ok


Merci d'avance ;)
Eric
(excel 2003)
Avatar
Pierre-Yves Rivaille
Bonjour,

C'est possible sans utiliser de VBA avec la formule suivante :

=SOMMEPROD(--ESTNUM(TROUVE(STXT(G13;LIGNE(INDIRECT("1:"&(NBCAR(G13)-4)));5);G14)))>0

(ou en anglais :
=SUMPRODUCT(--ISNUMBER(FIND(MID(G13,ROW(INDIRECT("1:"&(LEN(G13)-4))),5),G14)))>0
)

où G13 et G14 sont les cellules à comparer.

cordialement

--
Pierre-Yves Rivaille
http://pyrexcel.wordpress.com


"Eric" wrote:

Bonjour,

Je voudrais qu'excel me compare deux cellules: si il y a au moins 5
caracteres consécutifs en commun (chiffres ou lettres), alors dire "ok",
sinon "error".

Exemple N°1 "ok":
A1 = verto demi
B1 = verto

verto en commun => ok


Exemple N°2 "ok":
A1 = bejol55h getypolm
B1 = mopol55hgem lopiuyter fdesdf

ol55h en commun.=> ok


Merci d'avance ;)
Eric
(excel 2003)




Avatar
MichDenis
Il y a eu une petite erreur lors de la copie :

Utiliser ceci :
'-------------------------
Function Présent_Dans(Rg As Range, Rg1 As Range)
Dim A As String, X As String
If Len(Rg) > Len(Rg1) Then
A = Trim(Rg): X = Trim(Rg1)
Else
X = Trim(Rg): A = Trim(Rg1)
End If
For b = 1 To Len(X) - 4
If InStr(1, A, Mid(1, b, 5), vbBinaryCompare) <> 0 Then
Présent_Dans = "Ok"
Exit Function
End If
Next
If Présent_Dans = "" Then Présent_Dans = "Absent"
End Function
'-------------------------



"MichDenis" a écrit dans le message de groupe de discussion :

Bonjour Éric,

Une fonction personnalisée que tu places dans un module standard :
Dans une cellule, tu écris :
=Présent_Dans(A1;A2), OU =Présent_Dans(A2;A1)

'----------------------------------------
Function Présent_Dans(Rg As Range, Rg1 As Range)
Dim A As String, X As String
If Len(Rg) > Len(Rg1) Then
A = Trim(Rg): X = Trim(Rg1)
Else
X = Trim(Rg): A = Trim(Rg1)
End If
For b = 1 To Len(X) - 4
toto = Mid(X, b, 5)
If InStr(b, A, Mid(X, b, 5), vbTextCompare) <> 0 Then
Présent_Dans = "Ok"
Exit Function
End If
Next
If Présent_Dans = "" Then Présent_Dans = "Absent"
End Function
'----------------------------------------



"Eric" a écrit dans le message de groupe de discussion :
4a2ce668$0$4845$
Bonjour,

Je voudrais qu'excel me compare deux cellules: si il y a au moins 5
caracteres consécutifs en commun (chiffres ou lettres), alors dire "ok",
sinon "error".

Exemple N°1 "ok":
A1 = verto demi
B1 = verto

verto en commun => ok


Exemple N°2 "ok":
A1 = bejol55h getypolm
B1 = mopol55hgem lopiuyter fdesdf

ol55h en commun.=> ok


Merci d'avance ;)
Eric
(excel 2003)
Avatar
Eric
Bonjour,
Merci beaucoup à tous. ;)) Fantastique ! ;)
Merci encore ;)
Eric

"Pierre-Yves Rivaille" a
écrit dans le message de news:

Bonjour,

C'est possible sans utiliser de VBA avec la formule suivante :

=SOMMEPROD(--ESTNUM(TROUVE(STXT(G13;LIGNE(INDIRECT("1:"&(NBCAR(G13)-4)));5);G14)))>0

(ou en anglais :
=SUMPRODUCT(--ISNUMBER(FIND(MID(G13,ROW(INDIRECT("1:"&(LEN(G13)-4))),5),G14)))>0
)

où G13 et G14 sont les cellules à comparer.

cordialement

--
Pierre-Yves Rivaille
http://pyrexcel.wordpress.com


"Eric" wrote:

Bonjour,

Je voudrais qu'excel me compare deux cellules: si il y a au moins 5
caracteres consécutifs en commun (chiffres ou lettres), alors dire "ok",
sinon "error".

Exemple N°1 "ok":
A1 = verto demi
B1 = verto

verto en commun => ok


Exemple N°2 "ok":
A1 = bejol55h getypolm
B1 = mopol55hgem lopiuyter fdesdf

ol55h en commun.=> ok


Merci d'avance ;)
Eric
(excel 2003)






Avatar
Gloops
Bonjour,

Voilà qui a le mérite d'être simple, attention toutefois de vérif ier que
les chaînes à comparer comportent au minimum 5 caractères. Sinon, c 'est
mieux de retourner explicitement faux que erreur.
_________________________________________________
a écrit, le 08/06/2009 12:44 :
Hello,

Sub toto()
Dim mych1 As String, mych2 As String, _
TstCh As String, mytest As Boolean

mych1 = [A1]
mych2 = [B1]
mytest = False
For i = 1 To Len(mych1) - 4
TstCh = Mid(mych1, i, 5)
If InStr(1, mych2, TstCh) Then
mytest = True: Exit For
End If
Next

MsgBox mytest

End Sub


On 8 juin, 12:22, "Eric" wrote:
Bonjour,

Je voudrais qu'excel me compare deux cellules: si il y a au moins 5
caracteres consécutifs en commun (chiffres ou lettres), alors dire " ok",
sinon "error".

Exemple N°1 "ok":
A1 = verto demi
B1 = verto

verto en commun => ok

Exemple N°2 "ok":
A1 = bejol55h getypolm
B1 = mopol55hgem lopiuyter fdesdf

ol55h en commun.=> ok

Merci d'avance ;)
Eric
(excel 2003)