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

Touver une série avec une autre série (CLÉ)

16 réponses
Avatar
Starwing
Bonjour =E0 vous et aux membres du SPA et =E0 Garnote aussi,

J'ai deux questions hyper embarrasssantes et extr=E8mement=20
compliqu=E9es aujourd'hui,

Voici je m'explique,

Avant, il faut comprendre le concept de cl=E9:
Soit les valeures suivantes en A1: 12358
Pour trouver la cl=E9, il suffit de soustraire le deuxi=E8me=20
chiffre avec le premier (2-1=3D1), apr=E8s de soustraire le=20
troisi=E8me chiffre avec le deuxi=E8me (3-2=3D1)etc.
La premi=E8re cl=E9 dans cette exemple est: 1-1-2-3
Il peut y avoir d' autre(s) cl=E9(s) en additionnant par=20
exemples les deux premiers chiffres de la premi=E8re cl=E9=20
soit: 2-2-3 etc.
Premiere question: Comment arriver =E0 ce r=E9sultat (1-1-2-3)
avec une formule?

Par la suite, si je prends cette cl=E9 1-1-2-3, j'aimerais=20
v=E9rifier si elle est pr=E9sente dans une autre cha=EEne de=20
valeure:
Ex:=20
A1 12358 Cl=E9: 1-1-2-3
A2 23469 la cl=E9 est pr=E9sente
A3 158923469 la cl=E9 est pr=E9sente en 23469 qui est la cl=E9=20
de 1-1-2-3
A4 111358 la cl=E9 1-1-2-3 est pr=E9sente car:1-(11)-3-5-8 =3D=20
aussi 1-2-3-5-8

Comment v=E9rifier cette cl=E9 sur plusieurs ligne dans la=20
colonne A?

C'est une demande capot=E9e aujourd'hui Hein!

Merci =E0 tous ceux qui me viendront en aide aaaaAAAAAHHHH!!!

Starwing

10 réponses

1 2
Avatar
garnote
Salut Starwing,

Ai-je bien compris ?
Je cherche la clé de chaque nombre en appliquant
ton algorithme :

12358 *1*1*2*3
45487562 *1*-1*4*-1*-2*1*-4
158923469 *4*3*1*-7*1*1*2*3
3348023 *0*1*4*-8*2*1
23469 *1*1*2*3
17564696 *6*-2*1*-2*2*3*-3
111358 *0*0*2*2*3

et ensuite, je dois détecter si on retrouve *1*1*2*3
dans chacune de ces clés ???

Serge



"Starwing" a écrit dans le message de news:
ec8b01c43cfd$c14a4900$
Bonjour à vous et aux membres du SPA et à Garnote aussi,

J'ai deux questions hyper embarrasssantes et extrèmement
compliquées aujourd'hui,

Voici je m'explique,

Avant, il faut comprendre le concept de clé:
Soit les valeures suivantes en A1: 12358
Pour trouver la clé, il suffit de soustraire le deuxième
chiffre avec le premier (2-1=1), après de soustraire le
troisième chiffre avec le deuxième (3-2=1)etc.
La première clé dans cette exemple est: 1-1-2-3
Il peut y avoir d' autre(s) clé(s) en additionnant par
exemples les deux premiers chiffres de la première clé
soit: 2-2-3 etc.
Premiere question: Comment arriver à ce résultat (1-1-2-3)
avec une formule?

Par la suite, si je prends cette clé 1-1-2-3, j'aimerais
vérifier si elle est présente dans une autre chaîne de
valeure:
Ex:
A1 12358 Clé: 1-1-2-3
A2 23469 la clé est présente
A3 158923469 la clé est présente en 23469 qui est la clé
de 1-1-2-3
A4 111358 la clé 1-1-2-3 est présente car:1-(11)-3-5-8 aussi 1-2-3-5-8

Comment vérifier cette clé sur plusieurs ligne dans la
colonne A?

C'est une demande capotée aujourd'hui Hein!

Merci à tous ceux qui me viendront en aide aaaaAAAAAHHHH!!!

Starwing
Avatar
Starwing
Bonjour Serge,

C'est bien cela, toutefois, il ne peut pas y avoir une clé
avec un chiffre négatif. Comme 12358 les chiffres vont
toujours en croissant. il ne peut y avoir 654321
uniquement le contraire 123456.
De plus, pour compliqué la chose,
un nombre tel que:
123456789
Doit nécessairement contenir la clé 1-1-2-3 plusieurs
fois, car si je fais 2-1="1", 3-2="1", 5-3="2", 8-5="3".
j'obtiens la clé: 1-1-2-3
Pour mieux te le faire comprendre, disons que je peux
enlever le chiffre "4" et le chiffre "7" de la série:
12345789 pour faire 123589 (Toujours croissant)
comme cela, on voit mieux la série 1-1-2-3

Capoté Hein!

Starwing


Salut Starwing,

Ai-je bien compris ?
Je cherche la clé de chaque nombre en appliquant
ton algorithme :

12358 *1*1*2*3
45487562 *1*-1*4*-1*-2*1*-4
158923469 *4*3*1*-7*1*1*2*3
3348023 *0*1*4*-8*2*1
23469 *1*1*2*3
17564696 *6*-2*1*-2*2*3*-3
111358 *0*0*2*2*3

et ensuite, je dois détecter si on retrouve *1*1*2*3
dans chacune de ces clés ???

Serge
Avatar
garnote
Capoté tu dis !

Je croyais que pour obtenir la clé, il fallait toujours
soustraire le premier chiffre du deuxième, le deuxième
du troisième etc.
Mais avec ton exemple 123456789, je vois bien que
ce n'est pas le cas. Faut-il alors chercher toutes les
possibilités de soustraction entre un chiffre du nombre
et un autre qui le précède ?

Abîme !!!

Serge


"Starwing" a écrit dans le message de news:
ed0001c43d13$315f0400$
Bonjour Serge,

C'est bien cela, toutefois, il ne peut pas y avoir une clé
avec un chiffre négatif. Comme 12358 les chiffres vont
toujours en croissant. il ne peut y avoir 654321
uniquement le contraire 123456.
De plus, pour compliqué la chose,
un nombre tel que:
123456789
Doit nécessairement contenir la clé 1-1-2-3 plusieurs
fois, car si je fais 2-1="1", 3-2="1", 5-3="2", 8-5="3".
j'obtiens la clé: 1-1-2-3
Pour mieux te le faire comprendre, disons que je peux
enlever le chiffre "4" et le chiffre "7" de la série:
12345789 pour faire 123589 (Toujours croissant)
comme cela, on voit mieux la série 1-1-2-3

Capoté Hein!

Starwing


Salut Starwing,

Ai-je bien compris ?
Je cherche la clé de chaque nombre en appliquant
ton algorithme :

12358 *1*1*2*3
45487562 *1*-1*4*-1*-2*1*-4
158923469 *4*3*1*-7*1*1*2*3
3348023 *0*1*4*-8*2*1
23469 *1*1*2*3
17564696 *6*-2*1*-2*2*3*-3
111358 *0*0*2*2*3

et ensuite, je dois détecter si on retrouve *1*1*2*3
dans chacune de ces clés ???

Serge
Avatar
isabelle
salut vous deux,

Capoté Hein!


mais en !! %-)

mais tout de même un début de piste ( exemple pour une valeur en cellule
A1 )


Sub Macro1()
Dim plg()
Set zz = Range("A1")
For i = Len(zz) To 2 Step -1
For y = i - 1 To 1 Step -1
chiffre = Mid(zz, i, 1) * 1 - Mid(zz, y, 1) * 1
If chiffre > 0 And chiffre < 4 Then
x = x + 1
ReDim Preserve plg(x)
plg(x) = chiffre
End If
Next y
Next i
For i = LBound(plg) + 1 To UBound(plg)
Range("B" & i) = plg(i)
Next
If Evaluate("sumproduct((B1:B100=1)*1)") > 1 Then trouver = trouver & 11
If Evaluate("sumproduct((B1:B100=2)*1)") > 0 Then trouver = trouver & 2
If Evaluate("sumproduct((B1:B100=3)*1)") > 0 Then trouver = trouver & 3
MsgBox trouver
Range("B1:B" & Range("B65536").End(xlUp).Row).Delete
End Sub

isabelle

Avatar
Starwing
Salut Garnote,

Ben Oui, j'vous l'avais dit que c'était capoté mon
affaire... ;-)) Ha! Ha! je ris à m'étouffer avec vos
commentaires toi et Isabelle.

Je me demande bien comment fabriquer une "bidule" du genre
sur Excel.

J'essaie le code à Isabelle et je continue...


Starwing
-----Message d'origine-----
Capoté tu dis !


Je croyais que pour obtenir la clé, il fallait toujours
soustraire le premier chiffre du deuxième, le deuxième
du troisième etc.
Mais avec ton exemple 123456789, je vois bien que
ce n'est pas le cas. Faut-il alors chercher toutes les
possibilités de soustraction entre un chiffre du nombre
et un autre qui le précède ?

Abîme !!!

Serge


"Starwing" a écrit dans le message
de news:

ed0001c43d13$315f0400$
Bonjour Serge,

C'est bien cela, toutefois, il ne peut pas y avoir une clé
avec un chiffre négatif. Comme 12358 les chiffres vont
toujours en croissant. il ne peut y avoir 654321
uniquement le contraire 123456.
De plus, pour compliqué la chose,
un nombre tel que:
123456789
Doit nécessairement contenir la clé 1-1-2-3 plusieurs
fois, car si je fais 2-1="1", 3-2="1", 5-3="2", 8-5="3".
j'obtiens la clé: 1-1-2-3
Pour mieux te le faire comprendre, disons que je peux
enlever le chiffre "4" et le chiffre "7" de la série:
12345789 pour faire 123589 (Toujours croissant)
comme cela, on voit mieux la série 1-1-2-3

Capoté Hein!

Starwing


Salut Starwing,

Ai-je bien compris ?
Je cherche la clé de chaque nombre en appliquant
ton algorithme :

12358 *1*1*2*3
45487562 *1*-1*4*-1*-2*1*-4
158923469 *4*3*1*-7*1*1*2*3
3348023 *0*1*4*-8*2*1
23469 *1*1*2*3
17564696 *6*-2*1*-2*2*3*-3
111358 *0*0*2*2*3

et ensuite, je dois détecter si on retrouve *1*1*2*3
dans chacune de ces clés ???

Serge


.



Avatar
isabelle
unpoil plus court,

Sub Macro1()
Set zz = Range("A1")
For i = Len(zz) To 2 Step -1
For y = i - 1 To 1 Step -1
chiffre = Mid(zz, i, 1) * 1 - Mid(zz, y, 1) * 1
If chiffre > 0 And chiffre < 4 Then Arr = Arr & chiffre
Next y
Next i
If Arr = Empty Then MsgBox " non trouver": Exit Sub
If Evaluate("=LEN(" & Arr & ")-LEN(SUBSTITUTE(" & _
Arr & ",1,""""))") > 1 Then trouver = trouver & 11
If Evaluate("=LEN(" & Arr & ")-LEN(SUBSTITUTE(" & _
Arr & ",2,""""))") > 0 Then trouver = trouver & 2
If Evaluate("=LEN(" & Arr & ")-LEN(SUBSTITUTE(" & _
Arr & ",3,""""))") > 0 Then trouver = trouver & 3
MsgBox trouver
End Sub

isabelle


Salut Garnote,

Ben Oui, j'vous l'avais dit que c'était capoté mon
affaire... ;-)) Ha! Ha! je ris à m'étouffer avec vos
commentaires toi et Isabelle.

Je me demande bien comment fabriquer une "bidule" du genre
sur Excel.

J'essaie le code à Isabelle et je continue...

Starwing
-----Message d'origine-----
Capoté tu dis !


Je croyais que pour obtenir la clé, il fallait toujours
soustraire le premier chiffre du deuxième, le deuxième
du troisième etc.
Mais avec ton exemple 123456789, je vois bien que
ce n'est pas le cas. Faut-il alors chercher toutes les
possibilités de soustraction entre un chiffre du nombre
et un autre qui le précède ?

Abîme !!!

Serge


"Starwing" a écrit dans le message
de news:

ed0001c43d13$315f0400$
Bonjour Serge,

C'est bien cela, toutefois, il ne peut pas y avoir une clé
avec un chiffre négatif. Comme 12358 les chiffres vont
toujours en croissant. il ne peut y avoir 654321
uniquement le contraire 123456.
De plus, pour compliqué la chose,
un nombre tel que:
123456789
Doit nécessairement contenir la clé 1-1-2-3 plusieurs
fois, car si je fais 2-1="1", 3-2="1", 5-3="2", 8-5="3".
j'obtiens la clé: 1-1-2-3
Pour mieux te le faire comprendre, disons que je peux
enlever le chiffre "4" et le chiffre "7" de la série:
12345789 pour faire 123589 (Toujours croissant)
comme cela, on voit mieux la série 1-1-2-3

Capoté Hein!

Starwing


Salut Starwing,

Ai-je bien compris ?
Je cherche la clé de chaque nombre en appliquant
ton algorithme :

12358 *1*1*2*3
45487562 *1*-1*4*-1*-2*1*-4
158923469 *4*3*1*-7*1*1*2*3
3348023 *0*1*4*-8*2*1
23469 *1*1*2*3
17564696 *6*-2*1*-2*2*3*-3
111358 *0*0*2*2*3

et ensuite, je dois détecter si on retrouve *1*1*2*3
dans chacune de ces clés ???

Serge


.





Avatar
Starwing
Bonjour Isabelle,

Merci pour ta macro, en effet, elle m'ouvre des portes que
je n'avais pas tout à l'heure. Il y autre chose ausi
Isabelle et j'aimerais ça que tu m'aides encore....PLEASE

J'ai pensé aussi à ceci:
si on connait la clé, ex: 1-1-2-3
et si je met chaque chiffre dans une cellule différente:
Ex: A1, B1, C1, etc
j'aurai donc en
A1:1
B1:2
C1:3
etc, jusqu'à 9
Alors il suffirait d'une fonction à qui on lui demanderait
de calculer à partir de la cellule A1(Chiffre 1)
d'additionner le premier chiffre de la clé et de vérifier
si la cellule B1, C1, D1 etc correspond à ce chiffre et,
si oui, d'additionner le deuxième chiffre de la clé avec
le chiffre de la cellule trouvé et ainsi de suite...
et j'aimerais que le résultat de la fonction me donne le
nombre de fois que la clé apparaît.

Serais-ce possible?Pour moi, c'est trop complexe cela...
:-((

j'aimerais bien que tu m'aides encore...

Starwing

-----Message d'origine-----
salut vous deux,

Capoté Hein!


mais en !! %-)

mais tout de même un début de piste ( exemple pour une
valeur en cellule

A1 )


Sub Macro1()
Dim plg()
Set zz = Range("A1")
For i = Len(zz) To 2 Step -1
For y = i - 1 To 1 Step -1
chiffre = Mid(zz, i, 1) * 1 - Mid(zz, y, 1) * 1
If chiffre > 0 And chiffre < 4 Then
x = x + 1
ReDim Preserve plg(x)
plg(x) = chiffre
End If
Next y
Next i
For i = LBound(plg) + 1 To UBound(plg)
Range("B" & i) = plg(i)
Next
If Evaluate("sumproduct((B1:B100=1)*1)") > 1 Then trouver
= trouver & 11

If Evaluate("sumproduct((B1:B100=2)*1)") > 0 Then trouver
= trouver & 2

If Evaluate("sumproduct((B1:B100=3)*1)") > 0 Then trouver
= trouver & 3

MsgBox trouver
Range("B1:B" & Range("B65536").End(xlUp).Row).Delete
End Sub

isabelle
.




Avatar
isabelle
re... Starwing

là, je n'suis pas sur de suivre
avec l'exemple 123456789
on obtient la chaine 123123123123123123121
donc on a :
nombre de 1 = 8
nombre de 2 = 7
nombre de 3 = 6

il y aurait 4 possibilité de clé (8/2) ?

isabelle
note: pour trouver la chaine il y aurait cette fonction perso

Function Clef(zz As Range)
For i = Len(zz) To 2 Step -1
For y = i - 1 To 1 Step -1
chiffre = Mid(zz, i, 1) * 1 - Mid(zz, y, 1) * 1
If chiffre > 0 And chiffre < 4 Then Clef = Clef & chiffre
Next y
Next i
End Function

et pour compter le nombre de 1-2-3
=NBCAR($B$1)-NBCAR(SUBSTITUE($B$1;1;""))
=NBCAR($B$1)-NBCAR(SUBSTITUE($B$1;2;""))
=NBCAR($B$1)-NBCAR(SUBSTITUE($B$1;3;""))
Avatar
Starwing
Bonjour Isabelle,

En fait, pour exemple je vais expliquer avec un chiffre
plus court.
Prenons les chiffres de 1 à 5: 12345
La clé la plus longue est la clé de 4: 1-1-1-1
i.e.
la différence entre le deuxième chiffre et le premier.
la différence entre le troisième chiffre et le deuxième.
la différence entre le quatrième chiffre et le troisième.
la différence entre le cinquième chiffre et le quatrième.
Par la suite, je peut faire plusieurs clés de 3 :
1-1-1 ex: de 1-2-3-4 et de 2-3-4-5 ( 2 Maximum )
1-1-2 ex: 1-2-3-5
///
diff: 1 1 2
1-2-1 ex: 1-2-4-5
///
diff: 1 2 1
2-1-1 ex: 1-3-4-5
///
diff: 2 1 1

Par la suite plusieurs clés de 2...

La difficulté est de savoir si la chaine de chiffre en A1
ex: 12358 contient la clé 1-1-1 par exemple

Starwing





-----Message d'origine-----
re... Starwing

là, je n'suis pas sur de suivre
avec l'exemple 123456789
on obtient la chaine 123123123123123123121
donc on a :
nombre de 1 = 8
nombre de 2 = 7
nombre de 3 = 6

il y aurait 4 possibilité de clé (8/2) ?

isabelle
note: pour trouver la chaine il y aurait cette fonction
perso


Function Clef(zz As Range)
For i = Len(zz) To 2 Step -1
For y = i - 1 To 1 Step -1
chiffre = Mid(zz, i, 1) * 1 - Mid(zz, y, 1) * 1
If chiffre > 0 And chiffre < 4 Then Clef = Clef & chiffre
Next y
Next i
End Function

et pour compter le nombre de 1-2-3
=NBCAR($B$1)-NBCAR(SUBSTITUE($B$1;1;""))
=NBCAR($B$1)-NBCAR(SUBSTITUE($B$1;2;""))
=NBCAR($B$1)-NBCAR(SUBSTITUE($B$1;3;""))
.



Avatar
isabelle
j'oubliais la macro pour faire suite à la function,
trouver les chaine clef de la plage A1:A10 par exemple,

Sub TrouveClef()
For i = 1 To 10
Range("B" & i) = "'" & Clef(Range("A" & i))
Next
End Sub

isabelle


Bonjour Isabelle,

Merci pour ta macro, en effet, elle m'ouvre des portes que
je n'avais pas tout à l'heure. Il y autre chose ausi
Isabelle et j'aimerais ça que tu m'aides encore....PLEASE

J'ai pensé aussi à ceci:
si on connait la clé, ex: 1-1-2-3
et si je met chaque chiffre dans une cellule différente:
Ex: A1, B1, C1, etc
j'aurai donc en
A1:1
B1:2
C1:3
etc, jusqu'à 9
Alors il suffirait d'une fonction à qui on lui demanderait
de calculer à partir de la cellule A1(Chiffre 1)
d'additionner le premier chiffre de la clé et de vérifier
si la cellule B1, C1, D1 etc correspond à ce chiffre et,
si oui, d'additionner le deuxième chiffre de la clé avec
le chiffre de la cellule trouvé et ainsi de suite...
et j'aimerais que le résultat de la fonction me donne le
nombre de fois que la clé apparaît.

Serais-ce possible?Pour moi, c'est trop complexe cela...
:-((

j'aimerais bien que tu m'aides encore...

Starwing

-----Message d'origine-----
salut vous deux,

Capoté Hein!


mais en !! %-)

mais tout de même un début de piste ( exemple pour une
valeur en cellule

A1 )


Sub Macro1()
Dim plg()
Set zz = Range("A1")
For i = Len(zz) To 2 Step -1
For y = i - 1 To 1 Step -1
chiffre = Mid(zz, i, 1) * 1 - Mid(zz, y, 1) * 1
If chiffre > 0 And chiffre < 4 Then
x = x + 1
ReDim Preserve plg(x)
plg(x) = chiffre
End If
Next y
Next i
For i = LBound(plg) + 1 To UBound(plg)
Range("B" & i) = plg(i)
Next
If Evaluate("sumproduct((B1:B100=1)*1)") > 1 Then trouver
= trouver & 11

If Evaluate("sumproduct((B1:B100=2)*1)") > 0 Then trouver
= trouver & 2

If Evaluate("sumproduct((B1:B100=3)*1)") > 0 Then trouver
= trouver & 3

MsgBox trouver
Range("B1:B" & Range("B65536").End(xlUp).Row).Delete
End Sub

isabelle
.






1 2