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

Le
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)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
gmlsteph
Le #19514621
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"
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)


MichDenis
Le #19515071
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" 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)
Pierre-Yves Rivaille
Le #19515061
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)




MichDenis
Le #19515961
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"
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" 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)
Eric
Le #19515731
Bonjour,
Merci beaucoup à tous. ;)) Fantastique ! ;)
Merci encore ;)
Eric

"Pierre-Yves Rivaille" é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)






Gloops
Le #19524801
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"
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)





Publicité
Poster une réponse
Anonyme