Affichage plusieurs résultat d'une recherche

Bonjour à tous et merci de me lire,

Cela fait plusieurs mois que je planche sur ce sujet sans réel succès j'aurai donc besoin d'un peu d'aide.

J'ai un fichier avec 2 feuilles (Onglet 1 et Onglet 2)

Dans chacun il y a un tableau

Dans onglet 1

est il possible de forcer a ne pas pouvoir mettre deux textes différent si la première celule est la même c'est à dire ici dans mon fichier si W3 et W6 sont identique est ce que la valeur de Y3 peut etre la même que pour Y

Dans onglet 2

Faire apparaitre les numéros d'item du tableau dans l'onglet 1 correspondant au numéro de test (dans les cellules jaunes )

C'est à dire

pour TI_01 faire apparaitre en A5 les numéros correspondant ici les numéros 1, 4, 7, 10

Pour TI_02 faire apparaitre en A6 2, 5, 8, 11

Merci pour votre aide

Bien cordialement;

Mika

Bonjour

Un essai à tester. Te convient-il ?

Bye !

Bonsoir

A tout hasard un essai en formule..... d'après ce que j'ai pu comprendre !!

Slts

Bonjour à vous deux,

Merci pour vos essais et vos réponses

Boss_68 :

Est il possible de faire l'affichage dans l'onglet 2 via VBA car il y aura possiblement dans le fichier environ 250 lignes ?

Pour l'onglet 2 je vais essayer d'être plus clair dans ma recherche:

enfaite c'est :

si la cellule W1 = TI_01 la cellule Y1 est rempli à la main (normalement) car c'est la première fois que TI_01 apparait

si dans le tableau TI_01 réapparait dans la cellule Wn la cellule Yn doit être égale à la valeur de Y1

En tout cas merci de votre aide.

Bien cordialement,

Bonjour,

Personne n'a de solution ?

Je viens de faire un test sur une liste de test environ 50 cela est bien complexe à mettre en place

Bien cordialement,

Mika

Bonjour

Bonjour à tous

Un essai pour l'onglet 2

Bye !

Option Explicit

Dim f1 As Worksheet, dico As Object, tablo
Dim i&, lgn&

Private Sub Worksheet_Activate()

    Set f1 = Sheets("Onglet 1")
    Set dico = CreateObject("Scripting.Dictionary")
    tablo = f1.Range("A3:W" & f1.Range("A" & Rows.Count).End(xlUp).Row)

    For i = 1 To UBound(tablo, 1)
        If Not dico.exists(tablo(i, 23)) Then
            dico(tablo(i, 23)) = tablo(i, 1)
        Else
            dico(tablo(i, 23)) = dico(tablo(i, 23)) & "," & tablo(i, 1)
        End If
    Next i

    lgn = Application.Max(4, Range("A" & Rows.Count).End(xlUp).Row)
    Rows("4:" & lgn).EntireRow.Delete
    Range("B3").Resize(dico.Count, 1) = Application.Transpose(dico.keys)
    Range("A3").Resize(dico.Count, 1) = Application.Transpose(dico.items)
    Rows("3:3").Copy
    Range("3:" & dico.Count + 2).PasteSpecial xlPasteFormats
    Range("A1").Select
    Application.CutCopyMode = False
End Sub

Bonjour

Merci c'est exactement ce que je cherchais

Pouvez vous m'expliquer car je ne comprends pas tout le code

Merci

J'ai un soucis avec le code

il est possible que les numéros de test ne soient pas toujours dans l'ordre croissant

et là le code ne fonctionne plus ...

Voilà :

Option Explicit

Dim f1 As Worksheet, dico As Object, tablo
Dim i&, lgn&

Private Sub Worksheet_Activate()

    Set f1 = Sheets("Onglet 1")                         'par commodité, on donne un nom à l"onglet 1
    Set dico = CreateObject("Scripting.Dictionary")     'On crée un dictionnaire qui est destiné à
                                                            'recevoir, sans doublon, la liste des N°Test(colonne W)
    tablo = f1.Range("A3:W" & f1.Range("A" & Rows.Count).End(xlUp).Row) 'on met dans une variable tableau
                                                                        'l'ensemble des données de l'onglet 1

    For i = 1 To UBound(tablo, 1)                       'On va passer l'ensemble des lignes de tablo
        If Not dico.exists(tablo(i, 23)) Then           'Si le N°Test est déjà dans le tablo alors
            dico(tablo(i, 23)) = tablo(i, 1)            'On associe à ce N°, dans le dictionnaire, la valeur du numéro de l'item (colonne A)
                                                            'et du coup, le N° est créé dans le dictionnaire
        Else                                            'sinon
            dico(tablo(i, 23)) = dico(tablo(i, 23)) & "," & tablo(i, 1) 'on ajoute, puisqu'il existe le numéro de la colonne A
                                                                        'au numéro associé à N°Test dans le dictionnaire
        End If
    Next i                                              'fin de la boucle

    lgn = Application.Max(4, Range("A" & Rows.Count).End(xlUp).Row)         'on repère le numéro de la dernière ligne où
                                                                            'la colonne A est non vide
    Rows("4:" & lgn).EntireRow.Delete                                       'On supprime à partir de la ligne 4 les lignes qui
                                                                            'vont recevoir le résultat
    Range("B3").Resize(dico.Count, 1) = Application.Transpose(dico.keys)    'On reporte dans la colonne B les noms du dictionnaire (N°Tests)
    Range("A3").Resize(dico.Count, 1) = Application.Transpose(dico.items)   ''On reporte dans la colonne A les valeurs associées (N° items)
                                                                            'aux noms contenus dans le dictionnaire (N°Tests)
    Rows("3:3").Copy                                            'cosmétique : on copie la ligne 3 qu'on n'a pas touchée
    Range("3:" & dico.Count + 2).PasteSpecial xlPasteFormats    'on  colle son format sur les lignes qu'on vient de remplir
    Range("A1").Select                                          '
    Application.CutCopyMode = False                             'on effaice le clignotement de la zone copiée
End Sub

Bye !

Merci pour les explications

J'ai un soucis avec le code

il est possible que les numéros de test ne soient pas toujours dans l'ordre croissant

et là le code ne fonctionne plus ...

Du coup je remet un fichier plus complet si quelqu'un a une idée

dans le tableau il peut y avoir deux type de test TI ou TF j'aimerai les séparer

et il est possible qu'une cellule soit fusionné avec le N° d'item comment procéder ? (j'ai mis un exemple dans le fichier)

Merci

Bonjour,

Avec votre fichier, pas certains que les résultats que vous souhaitiez 1/4/7/10 soient juste, sinon merci de nous expliquer comment vous arriver à cela.

Quoiqu'il en soit si vous lancez à partir de l'onglet TI ou TF, a adapter selon votre fichier :

Sub REMPLISSAGE()
Dim LR%, RESULTAT$, i%, j%
LR = Worksheets("Onglet 1").Cells(Worksheets("Onglet 1").Rows.Count, 1).End(xlUp).Row 'Défini dernière ligne Onglet 1
For i = 5 To 7 'Défini plage des tests, ici de la ligne 5 à 7 de la feuille active
    For j = 3 To LR 'Entre les lignes 3 à dernière ligne onglet 1
        If Worksheets("Onglet 1").Cells(j, 23) = ActiveSheet.Cells(i, 4) Then 'Si valeurs sont égales au test alors
            RESULTAT = RESULTAT & ", " & Worksheets("Onglet 1").Cells(j, 23).Offset(0, -22) 'Enregistre valeur du n° de risque dans une variable en bouclant
        End If
    Next j
    ActiveSheet.Cells(i, 1) = Right(RESULTAT, Len(RESULTAT) - 1) 'Colle le contenu de la variable RESULTAT dans le test correspondant
    RESULTAT = "" 'Vide résultat
Next i 'Passe au prochain test
End Sub

Cdlt,

il est possible que les numéros de test ne soient pas toujours dans l'ordre croissant

et là le code ne fonctionne plus ...

Je ne vois pas pourquoi cela ne marcherait plus ...

Ci-joint le même fichier où j'ai changé les données de Onglet 1 par ceux de ton nouveau fichier et où j'ai rajouté une instruction à la macro pour classer le résultat de Onglet 2 selon la colonne B

17test-v2.xlsm (29.98 Ko)

Bye !

J'ai franchement du mal a m'exprimer ...

Je vais essayer de réexpliquer pour essayer de me faire comprendre. désolé :(

effectivement vos exemple fonctionne seulement pas comme j'aimerai m'en servir

Je vais mettre le fichier original pour plus de simplicité aussi :

12essai-copie.xlsm (173.88 Ko)

Dans l'onglet « Analyse de risque » à partir de la ligne 70 en colonne E il va y avoir des numéro d'item

Dans l’exemple de 1 à 35

Il est possible que certaines soient fusionnées (comme dans l'exemple)

Le but est d'obtenir dans l’onglet Test TI :

Les numéro de test se remplisse automatiquement (TI_01, TI_02 ect …)

J’aimerai pouvoir afficher les numéro item dans la colonne A correspondant au numéro de test

Dans l’onglet Test TF faire pareil que dans l’onglet TI

Tout cela ne doit pas être activé par un changement d’onglet (cela doit se faire automatiquement si possible)

J'espere avoir été clair pour vous.

encore désolé :(

Bonjour,

Sans vouloir interférer à ce qui vous a été proposé par d'autres forumeurs.

Juste un truc en regardant vos feuilles TF et TI. Pourquoi répétez-vous les titres à chaque page dans le document. Cela complique la consultation et les choses avec VBA.

Ce que je ferais :
- défusionner les ligne 5 à 7. Il suffit d'agrandir la ligne 5 pour avoir le même résultat
- supprimer tous les titres plus bas. De sorte que vous ayez les 5 premières lignes pour les titres et le reste sous forme de base de données. Pour l'impression, il suffit de demander à excel d'imprimer les 5 premières lignes sur chaque feuille.

Il y a aussi les colonnes vides qui ne servent pas. Je vois par exemple les colonnes B, C, E , F...., W,AC,AD. Elles sont vides de données. Les supprimer facilite grandement la lecture

Cordialement

Effectivement je peux modifier des choses tout est perfectible

Mais en ce qui concerne les colonnes c'est compliqué comme je vous l'ai expliqué avec la mise en forme de toutes les feuilles.

Je vais amélioré avec les nom des feuilles, les ligne fusionnée et les colonnes qui ne servent pas.

Merci de votre retour

Mais en ce qui concerne les colonnes c'est compliqué comme je vous l'ai expliqué avec la mise en forme de toutes les feuilles.

Pourquoi ? expliquez nous

Edit : regardez un modèle de la feuille TF (en 6 colonnes)

25essai-copie-1.xlsx (15.59 Ko)

En gros la feuille Test TI va etre copier coller dans le protocole donc il faut prendre en compte la feuille protocole aussi

Voila pourquoi.

Et comme c'est une version que je fais évoluer très souvent en ce moment il y a des colonnes qui ne servent plus et effectivement je vais faire les modifs

mais je ne peux pas tout enlever.

Et je ne veux pas trop en demander sur le forum j'essaie aussi de me débrouiller par moi même.

:)

Rechercher des sujets similaires à "affichage resultat recherche"