Recherche ligne, colonne, diagonale d'une suite de nombre

Bonsoir tout le monde.

Peut on faire une recherche dans un tableau de nombres matrice par ex 20 lignes 20 colonnes cette suite de 5 chiffres dans cet ordre par exemple : 15 10 1 18 5

la recherche doit se faire à l'horizontale, verticale et en diagonale.

vous savez faire ?

Bonsoir Manbruce,

Tout d'abord, est ce une recherche avec prise en compte du retour à la ligne suivante ou pas ?

Exemple: je suis sur la ligne 1 et à la colonne 20 il y a le numéro 15 puis au début de la ligne 2 il y a les 4 valeurs suivantes (10 1 18 5) cherchées.

Ou bien il faut que les 5 valeurs tiennent sur la même ligne lors d'une recherche horizontale ?

Car ce ne sera pas le même code. Pour la boucle de recherche. Que ce soit d'ailleurs verticale ou en diagonale aussi.

Le principe général est de trouver le 15 (Ils répondent en général). Puis ensuite de vérifier que les 4 valeurs qui suivent sont celles désirées.

Bonsoir,

vous n'êtes pas facile à suivre ! Avant c'était ici !

Mon fichier joint :

13manbruce-1-2.xlsm (23.54 Ko)

@ bientôt

LouReeD

Salut Manbruce,
Salut la fine équipe,

un double-clic démarre la macro.
Recherche horizontale, verticale, diagonale Haut -> Gauche ou Droite Bas avec série de nombres sans débords sur ligne ou colonne suivante.

Tu peux étendre ta grille jusqu'à 25 colonnes et autant de lignes souhaitées avec une série à rechercher aussi longue que nécessaire.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim rCells As Range, tTab, tNum, iNbRow%, iNbCol%, iNbNum%
'
Cancel = True
Application.ScreenUpdating = False
'
[A1].CurrentRegion.Interior.Color = RGB(255, 255, 255)
tTab = [A1].CurrentRegion.Value
tNum = Range("AA1").Resize(1, Cells(1, Columns.Count).End(xlToLeft).Column - 26).Value
iNbRow = UBound(tTab, 1)
iNbCol = UBound(tTab, 2)
iNbNum = UBound(tNum, 2)
'
For x = 1 To UBound(tTab, 1)
    For y = 1 To UBound(tTab, 2)
        If tTab(x, y) = tNum(1, 1) Then
            For k = 1 To 4
                Set rCells = Range(fctCol(y) & x)
                Select Case k
                    Case 1, 2         'Horizontale (1)  Verticale (2)
                        If IIf(k = 1, iNbCol, iNbRow) - IIf(k = 1, y, x) >= iNbNum Then
                            For Z = 1 To iNbNum - 1
                                If tTab(x + IIf(k = 1, 0, Z), y + IIf(k = 1, Z, 0)) <> tNum(1, Z + 1) Then Exit For
                                Set rCells = Union(rCells, Range(fctCol(y + IIf(k = 1, Z, 0)) & x + IIf(k = 1, 0, Z)))
                            Next
                        End If
                    Case Else          'Diagonale ->Droite (3)  Gauche (4)
                        If iNbRow - x >= iNbNum And IIf(k = 3, iNbCol - y, y) >= iNbNum Then
                            For Z = 1 To iNbNum - 1
                                If tTab(x + Z, y + IIf(k = 3, Z, Z * -1)) <> tNum(1, Z + 1) Then Exit For
                                Set rCells = Union(rCells, Range(fctCol(y + IIf(k = 3, Z, Z * -1)) & x + Z))
                            Next
                        End If
                End Select
                If rCells.Count = iNbNum Then rCells.Interior.Color = RGB(215, 215, 215)
            Next
        End If
    Next
Next
'
Application.ScreenUpdating = True
7manbruce.xlsm (24.16 Ko)

EDIT : une petite coquille (ah, ces copier-coller!) était restée coincée : rectification faite...


A+

Merci à tous le monde. Très content 😄

Bonjour

Merci pour vos remerciements !

@ bientôt

LouReeD

Bonsoir LouReed, dans ce programme ci joint.

Par exemple pour chercher la suite de chiffres, la macro m'indique la colonne 64. il la trouve colonne 64.

le souci c'est que j'ai beaucoup de lignes, il est possible que lorsque la macro trouve la suite de chiffres pour lignes et colonnes, la macro m'informe de la ligne et de la colonne dans la recherche de ligne idem pour la colonne. Un peu comme la recherche en diagonale haut et bas, merci.

4dna.zip (490.11 Ko)

Salut tout le monde,

si je traduis bien cet idiome, il faudrait spécifier si les coordonnées affichées dans la MsgBox correspondent à une série horizontale, une série verticale ou une série diagonale !?


A+

C'est déjà le cas. Faudrait juste plus d'informations quand par exemple la colonne est trouvée. Ça indique le numéro de la colonne, la suite de numéro en jaune sauf que ça apparaît pas sur l'écran car plus en bas dans le cas que j'avais trouvé, j'avais 9999 lignes mais on peut pas descendre sur l'écran car l'écran est figé lorsqu'il trouve la suite de nombres recherché.

Où faudrait qu'il montre à l'écran la suite de nombres à rechercher en descendant par exemple tout en bas de l'écran sur la ligne 2000 par exemple. C'est compliqué je pense non , à faire.

Salut Manbruce,

ce que tu veux, c'est pouvoir visualiser ces séries sur demande et à volonté ?

A+

Oui pourquoi pas

Salut Manbruce,

premier jet de quelque chose...

- il faut IMPERATIVEMENT 1 et 1 seule colonne d'écart entre ton tableau de nombres et ta liste à rechercher !!!!!!!!!!
- un double-clic démarre la recherche de la série (pas de protection si aucune valeur de recherche encodée !!) ;
- les coordonnées des séries trouvées s'inscrivent sous la série à rechercher (ligne, colonne, type) ;
- un clic sur le résultat-coordonnée-ligne (1ère donnée !) zoome l'écran sur la cible ;
- un clic-DROIT zoome l'écran de retour sur la série à rechercher.

3manbruce-v2.zip (506.39 Ko)


A+

Je regarde ça demain merci.

j'aimerai simplement que lorsqu'il y a une série de chiffres trouvées dans DNA.xlm

le tableau défile le résultat sur la suite de chiffres en jaune. Parce que j'ai beaucoup de lignes, je peux pas voir le résultat si il est affiché tout en bas. le résultat fige la feuille.

Rechercher des sujets similaires à "recherche ligne colonne diagonale suite nombre"