recherche dans un tableau.

  • Initiateur de la discussion Initiateur de la discussion grodep
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

grodep

XLDnaute Occasionnel
bonjour a tous, une fois de plus un probleme de recherche de valeurs dans un tableau que je n'arrive pas à implémenter :*
j'ai en colonne A une liste de joueurs. s'ensuit un grand nombre de colonnes correspondant chacune a un jour sur une période donnée.
Si un jour, une des personnes effectue une activité, je remplis dans sa ligne la case correspondant au dit jour avec un trigramme(validé a partir d'une liste) et son score dans la colonne juste en dessous du trigramme.
Il arrive ainsi que pour chaque nom de la colonne A, j'ai des cases vides qui suivent des cases pleines(une case par jour mais c'est sans grande importance) ainsi de suite sur toute la période donnée.
Ce que j'aimerai, c'est faire une feuille récapitulative, avec un bouton qui lorsque je clique dessus réactualise pour chaque joueur en remplissant la ligne avec tous les scores obtenus et dans la ligne du dessous le trigramme correspondant.
J'espere avoir été clair, meme si j'en doute ...

Autre chose, a partir du meme tableau, je voudrai faire une recherche matricielle sur tel ou tel trigramme pour retrouver tous les occurences ou ce trigramme apparait ainsi que le score correspondant dans la case en dessous.

merci a vous tous pour les ébauches de solutions proposées.
 
Re : recherche dans un tableau.

voici une feuille type a partir de laquelle je voudrais récupérer les données. Sur la feuille 2, le tableau tel que je voudrais qu'il apparaisse avec les données récupérées.
Sur la feuille 3, le tableau correspondant au résultat de la deuxième recherche(celle sur les trigrammes)

merci d'avance
 

Pièces jointes

Dernière édition:
Re : recherche dans un tableau.

Bonjour,

Ci-joint un premier jet de traitement sous Visual Basic Excel pour la recopie

Il suppose que la structure de votre fichier soit toujours la même
Une ligne avec le nom et les trigrammes
Une ligne vide sous le nom avec un n° sous les trigrammes

Il faut renommer votre fichier Tableau et créer une feuille Recap
(vous pouvez sinon les modifier dans le code accessible par les touches [Alt] et [F11])

Bonne journée
François
 
Re : recherche dans un tableau.

merci beaucoup pour ce premier jet en VBA.
je me permets de demander deux petites choses supplémentaires :
si je fais une moyenne par ligne, comment puis je, par la suite faire un tri croissant ou décroissant basé sur les moyennes?
En effet, j'ai pour chaque nom(ex.A4), deux lignes associées(L4 et L5), l'une avec un nombre(L4) et celle directement dessous contenant les trigrammes(L5). Si je cherche a faire mon tri, celui ci dissocie les lignes: il va faire le tri décroissant sur les lignes contenant une moyenne(L4, L6, L8,etc) et ajoutera en bas toutes les lignes n'en contenant pas(celles dans lesquelles sont mis les trigrammes); comment faire pour qu'il conserve chaque ligne de trigramme associée à son nom ?

Par ailleurs, j'avais émis le souhait de pouvoir sur une autre feuille(feuill3), à partir du meme tableau(feuill1) faire une recherche par trigramme, afin d'avoir tous les scores associé au meme trigramme. Sur le classeur que j'ai fourni apparait sur la feuill3 le résultat tel que je souhaiterais l'obtenir.

Merci d'avance
Nb: j'aimerai vraiment pouvoir faire tout celà moi meme, mais j'avoue mon incompétence...
 
Re : recherche dans un tableau.

je m'essaye au VBA pour tenter de résoudre la deuxième partie de mon probleme : a partir du classeur 1 fourni par fldb, j'ai ajouté sur la feuille recap les 6 trigrammes connus de A60 à A 66.
Ensuite j'ai créé la macro suivante afin de tenter de faire une boucle de recherche sur mon tableau. Malheureusement, comme il fallait s'y attendre, ça ne fonctionne pas.
Si une ame charitable pouvait m'aiguiller...
merci d'avance


Sub recap2()

Dim i As Long
Dim p As Long
Dim t As Long
Dim v As Long

Sheets("Recap").Select



For t = 60 To 66

For i = 5 To 44
v = 2
For p = 2 To 10
If Cells(i, p).Value = Cells(t, 1).Value Then
Sheets("Recap").Cells(t, v).Value = Cells(i - 1, p).Value
v = v + 1
End If
Next p
Next i

Next t
Sheets("Recap").Select
End Sub
 
Re : recherche dans un tableau.

après quelques tatonnements, ça marche, modifiée comme suit :

Dim i As Long
Dim p As Long
Dim t As Long
Dim v As Long

Sheets("Recap").Select

Range("B60:AC65").Select
Selection.ClearContents

For t = 60 To 65
v = 2
For p = 2 To 10

For i = 5 To 44
If Cells(i, p).Value = Cells(t, 1).Value Then
Sheets("Recap").Cells(t, v).Value = Cells(i - 1, p).Value
v = v + 1
End If
Next i
Next p

Next t
Sheets("Recap").Select
End Sub


je me permets de vous la soumettre car je me doute qu'on peut faire bcp mieux, plus simple et plus allégé, et je serais preneur 🙂
 
Re : recherche dans un tableau.

Bonjour


Je t'ajoute des balise BB code (et éviter un Select)
Code:
sub macro()
Dim i As Long, p As Long,t As Long, v As Long

Sheets("Recap").Range("B60:AC65").ClearContents

For t = 60 To 65
v = 2
For p = 2 To 10

For i = 5 To 44
If Cells(i, p).Value = Cells(t, 1).Value Then
Sheets("Recap").Cells(t, v).Value = Cells(i - 1, p).Value
v = v + 1
End If
Next i
Next p

Next t
Sheets("Recap").Select
End Sub
 
Re : recherche dans un tableau.

Bonsoir,

ce code devrait fonctionner :

Code:
Sheets("Recap").Range("B60:AC65").ClearContents

sauf si feuille inéxistante dans le classeur actif, ou si cellule fusionnée avec autre en dehors de la plage concernée.

bonne soirée
@+
 
Re : recherche dans un tableau.

bizarrement je confirme, celà ne fonctionne pas mais peut etre est ce du au fait que ce code est inséré dans un autre bout de code : je vous le livre en entier afin que vous m'aidiez à comprendre ce très léger bug :
Code:
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 12/03/2009 par re
'
Dim i As Long, p As Long, t As Long, v As Long
Sheets("Recap").Range("B4:K45").ClearContents
Sheets("VOLS").Select


t = 4

For i = 14 To 54
    If Cells(i, 1) <> "" Then
        Sheets("Recap").Cells(t, 2).Value = Cells(i, 1).Value
    Else
        GoTo SUITE
    End If
    v = 3
    For p = 9 To 93
        If Cells(i, p) <> "" Then
            Sheets("Recap").Cells(t, v).Value = Cells(i + 1, p).Value
            Sheets("Recap").Cells(t + 1, v).Value = Cells(i, p).Value
            v = v + 1
        End If
    Next
SUITE:
    t = t + 1
    
Next
[COLOR="Red"][B]Sheets("Recap").Range("C60:AC65").ClearContents[/B][/COLOR]

For t = 60 To 65
v = 3
For p = 2 To 10
       
    For i = 5 To 45
        If Cells(i, p).Value = Cells(t, 2).Value Then
            Sheets("Recap").Cells(t, v).Value = Cells(i - 1, p).Value
            v = v + 1
        End If
    Next i
    Next p
     
Next t
Cells(60, 1).Select
'
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
139
Réponses
4
Affichages
579
Réponses
4
Affichages
85
Retour