XL 2013 Est-il possible faire une recherche dans une chaîne concaténée ?

Backhandshot

XLDnaute Occasionnel
Bonjour à tous!
Voilà je recherche une manière pour rechercher des combinaisons de chiffres dans une liste de tirages concaténée. Mais ces combinaisons de chiffres peuvent se retrouver dans une chaîne de 40 caractères.
Je joins un fichier qui sera plus facile à comprendre. J'imagine que par VBA le temps de calcul sera plus rapide.
Votre aide serait appréciée.
Merci et bonne journée !
 

Pièces jointes

  • Recherche_Parmi_Concatenation.xlsm
    52.9 KB · Affichages: 54
  • Recherche_Parmi_Concatenation.xlsm
    52.9 KB · Affichages: 52

Paf

XLDnaute Barbatruc
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour,

une solution sous forme de fonction personnalisée

Code:
Function Compte(Plage, Combinaison)
 For Each Cel In Plage
    If InStr(1, Cel, Combinaison) > 0 Then Compte = Compte + 1
 Next
End Function

en AA5 : =Compte($X$5:$X$15;Z5) à tirer vers le bas

A+
 

Backhandshot

XLDnaute Occasionnel
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour Forum, Paf

La fonction que tu as fait ne fonctionne pas correctement, si tu prends la combinaison #4 (1214285763) elle devrait afficher qu'elle est apparue 1 fois dans le tirage #1 mais elle affiche 0. Tu ne dois pas être loin de la solution et pour afficher le numéro du tirage à droite du nombre de sortie...une solution.
Merci pour ton aide
 

CISCO

XLDnaute Barbatruc
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonsoir

Cf. en pièce jointe.

@ plus
 

Pièces jointes

  • Recherche_Parmi_Concatenation.xlsm
    49.9 KB · Affichages: 35
  • Recherche_Parmi_Concatenation.xlsm
    49.9 KB · Affichages: 40

Backhandshot

XLDnaute Occasionnel
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonsoir Forum,
Paf, Cisco
Même problème que Paf, combinaison #4 affiche 0 sortie voir post #3.
Après vérification les formules ou fonctions reçues fonctionnent seulement sur les 2 premières combinaisons.
Merci de votre aide.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour à tous,

Dans ce genre de problème on encadre les nombres par un séparateur (en général l'espace).

Voyez le fichier joint et ces 3 fonctions VBA :

Code:
Function CONCAT(r As Range) As String
For Each r In r
  If r <> "" Then CONCAT = CONCAT & " " & r
Next
If CONCAT <> "" Then CONCAT = CONCAT & " "
End Function

Function NbSorti(r As Range, cherche As String)
cherche = Application.Trim(cherche) 'SUPPRESPACE
If cherche = "" Then NbSorti = "": Exit Function
cherche = "* " & Replace(cherche, " ", " * ") & "* "
For Each r In r
  If Replace(r, " ", "  ") Like cherche Then NbSorti = NbSorti + 1
Next
End Function

Function NoTirage(r As Range, cherche As String) As String
Dim i As Long
cherche = Application.Trim(cherche) 'SUPPRESPACE
If cherche = "" Then NoTirage = "": Exit Function
cherche = "* " & Replace(cherche, " ", " * ") & "* "
For i = 1 To r.Count
  If Replace(r(i), " ", "  ") Like cherche Then NoTirage = NoTirage & ", " & i
Next
NoTirage = Mid(NoTirage, 3)
End Function
A+
 

Pièces jointes

  • Recherche_Parmi_Concatenation(1).xlsm
    55.3 KB · Affichages: 35

job75

XLDnaute Barbatruc
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Re,

Le tableau de concaténation peut être supprimé avec ces fonctions :

Code:
Function CONCAT(r As Range) As String
For Each r In r.Cells
  If r <> "" Then CONCAT = CONCAT & "  " & r '2 espaces
Next
CONCAT = CONCAT & " "
End Function

Function NbSorti(r As Range, cherche As String)
cherche = Application.Trim(cherche) 'SUPPRESPACE
If cherche = "" Then NbSorti = "": Exit Function
cherche = "* " & Replace(cherche, " ", " * ") & "* "
For Each r In r.Rows
  If CONCAT(r) Like cherche Then NbSorti = NbSorti + 1
Next
End Function

Function NoTirage(r As Range, cherche As String) As String
Dim i As Long
cherche = Application.Trim(cherche) 'SUPPRESPACE
If cherche = "" Then Exit Function
cherche = "* " & Replace(cherche, " ", " * ") & "* "
For i = 1 To r.Rows.Count
  If CONCAT(r.Rows(i)) Like cherche Then NoTirage = NoTirage & ", " & i
Next
NoTirage = Mid(NoTirage, 3)
End Function
Fichier (2).

Edit : si le tableau des tirages a un grand nombre de lignes le calcul est long...

Utiliser alors la solution du post précédent.

A+
 

Pièces jointes

  • Recherche_Parmi_Concatenation(2).xlsm
    19.9 KB · Affichages: 38
Dernière édition:

Backhandshot

XLDnaute Occasionnel
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour Forum,
Paf,Cisco et Job75

Job75, les fonctions ne fonctionnent pas correctement quand je les applique sur mon fichier, si je prends la combinaison 1,2,3,4,5 elle me renvoie qu'elle a sorti 46 fois mais en réalité elle a sorti 11 fois. Je crois que la fonction calcule un des chiffres de la combine 2 fois ou plus. C'est peut-être juste une question d'astérisque mal positionnée mais je ne suis pas assez fort pour trouver.
Est ce que la fonction s'applique pour seulement les combinaisons à 5 chiffres ou peut être utilisée pour une recherche de 3,4,5,6,7 chiffres ?

Merci de votre aide qui est appréciée.


Bonne journée!
 

Backhandshot

XLDnaute Occasionnel
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour à tous !
Job 75 je crois avoir trouver, comme je disais c'était une question d'astérisque, j'ai remplacé cette ligne
cherche = "* " & Replace(cherche, " ", " * ") & "* "

par celle-ci
cherche = "* " & Replace(cherche, " ", " * ") & " *"

Je vais continuer à tester.
Merci beaucoup pour votre aide.
Bonne journée !
 

job75

XLDnaute Barbatruc
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Re,

C'est peut-être juste une question d'astérisque mal positionnée ()

Vous avez tout à fait raison, j'ai fait un erreur :mad:

Au lieu de :

Code:
cherche = "* " & Replace(cherche, " ", " * ") & "* "
il faut écrire :

Code:
cherche = "* " & Replace(cherche, " ", " * ") & " *"
Je joins les 2 fichiers corrigés.

Edit : je n'avais pas vu votre post #9, vous avez trouvé tout seul, félicitations.

Est ce que la fonction s'applique pour seulement les combinaisons à 5 chiffres ou peut être utilisée pour une recherche de 3,4,5,6,7 chiffres ?

Le nombre de valeurs séparées par un espace peut être quelconque.

A+
 

Pièces jointes

  • Recherche_Parmi_Concatenation(2) corrigé.xlsm
    19.8 KB · Affichages: 44
  • Recherche_Parmi_Concatenation(1) corrigé.xlsm
    55.3 KB · Affichages: 38
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour à tous

Bonsoir Forum,
Paf, Cisco
Même problème que Paf, combinaison #4 affiche 0 sortie voir post #3.
Après vérification les formules ou fonctions reçues fonctionnent seulement sur les 2 premières combinaisons.
Merci de votre aide.

Backhandshot, la prochaine fois, essaye, STP, d'être plus précis en décrivant davantage ton besoin.
Au vu de ton 1er post et de ton fichier mis en pièce jointe, comment est-ce que je pouvais deviner que tu voulais mettre en évidence les combinaisons de la colonne K sortant dans la colonne X, avec les nombres pas forcément les uns après les autres, "touche à touche" ? De plus, pourquoi n'as-tu pas mis en évidence 0412192021 en Z6 qui se trouve aussi au début de X7 (On devrait avoir AA6=1, et AB6 =3, non ?), ce qui m'a fait penser que ta flèche orange était une erreur ? Si tu donnes des exemples incomplets...

@ plus.
 
Dernière édition:

Backhandshot

XLDnaute Occasionnel
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour Forum,
Cisco, Job75, Paf

Cisco pour faire suite à votre message, je m'excuse si ce n'était pas assez explicite, j'avais mentionné dans le post #1

Mais ces combinaisons de chiffres peuvent se retrouver dans une chaîne de 40 caractères.
et de plus j'ai fourni un fichier que je pensais assez explicite.
Encore une fois mes excuses.
J'apprécie vraiment tous les gens qui sont ici pour aider les novices comme moi.
Merci de votre aide appréciée


Bonne journée !
 

CISCO

XLDnaute Barbatruc
Re : Est-il possible faire une recherche dans une chaîne concaténée ?

Bonjour

Je comprend bien, et merci pour ton message. Mais quand je dis "être plus précis"...

Bonjour Forum,
Cisco, Job75, Paf
...j'avais mentionné dans le post #1
Mais ces combinaisons de chiffres peuvent se retrouver dans une chaîne de 40 caractères.
Bonne journée !

ta phrase ne nous dit pas si ces nombres doivent être les uns à coté des autres, dans l'ordre uniquement, ou pas...

@ plus
 

Discussions similaires

Statistiques des forums

Discussions
312 308
Messages
2 087 105
Membres
103 469
dernier inscrit
Thibz