Recherche sur le classeur avec réponse

10jumper.rar (106.20 Ko)

Bonjour à tous,

petit nouveau sur le forum.

Je ne suis pas doué en vba, quelqu'un peut-il me donner un gros coup de main.

J'aimerai pouvoir faire une recherche dans une zone sur la feuille recherche sur toutes les feuilles en position E2 et

avoir les réponses de la ligne complète, j'espère être assez clair.

vous en remerciant par avance.

ci-joint mon fichier

Bonjour,

je comprends rien au questions aujourd'hui...

Bonjour Belze, bonjour le forum,

Pour faciliter la tâche il faudrait que TOUS les onglets aient la même structrure !... Ce n'est pas le cas pour les onglets :

• T4 VIS INOX A2 DE 1 A 5 (pas de "Classe" en colonne G, pas de "CC" en colonne H)

• T5 VIS INOX A2 DE 5 A 8 (pas de "Classe" en colonne G, "CC" en colonne G au lieu de colonne H)

• T6 VIS INOX A2 DE 8 A 14 (pas de "Classe" en colonne G, "CC" en colonne G au lieu de colonne H)

• T7 VIS INOX A2 DE 16 A 24 (pas de "Classe" en colonne G, "CC" en colonne G au lieu de colonne H)

Ces quatre onglets différents vont obliger à coder une usine à gaz. Je te recommande vivement de réorganiser ces quatre onglets et on pourra te proposer un code simple et efficace...

Bonjour thauthemes

Je vais faire ce que tu me conseil, merci pour la première approche.

Bonjour,

je vais suivre le fil et tenter qq chose de mon côté

tu es en sidérurgie ?

P.

Oui dans l'industrie effectivement

Belze35 a écrit :

Oui dans l'industrie effectivement

Je reconnais des pièces que je manipulais chez Arcelor MIttal

Ma contribution:

attention, comme dit précédemment, tes colonnes doivent être au même endroit et avoir des titres

P.

Arcelor Mittal oui je connais.

J'ai rajouter les colonnes manquantes, effectivement il s'agissait d'un oubli malheureux, car chaque feuilles doit avoir la même structure.

7copie-jumper.7z (98.88 Ko)

Bonjour,

voilà, pareil à l'envoi précédant, je n'ai pas vérifié ce que tu dis au niveau des colonnes

P.

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim O As Worksheet 'déclare la variable O (Onglets)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

If Target.Address <> "$E$2" Then Exit Sub 'si le changement a lieu ailleur qu'en E2, sort de la procédure
Range("A6:I" & Application.Rows.Count).ClearContents 'efface d'éventuelles anciennes donnnées
If Target.Value = "" Then Exit Sub 'su E2 est effacée, sort de la procédure
K = 1 'initialise la variable K
For Each O In Sheets 'boucle 1 : sur tous les onglets O du classeur
    Select Case O.Name 'agit en fonction du nom de l'onglet
        Case "RECHERCHE", "TIROIRS MAGASIN" 'cas "RECHERCHE" et "TIROIRS MAGASIN" (rien ne se passe)
        Case Else 'tous les autres cas
            DL = O.Range("E" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne E de l'onglet O
            If DL > 1 Then 'condition : si Dl est supérieur à 1
                TV = O.Range("A2:I" & DL) 'définit le tablau des valeurs TV (les données de A2 à I&DL)
                For I = 1 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV
                    If InStr(1, TV(I, 5), Target.Value, vbTextCompare) <> 0 Then 'condition 2 : si le texte éditée dans E2 est contenu dans la donnée ligne I colonne 5 de TV
                        ReDim Preserve TL(1 To 9, 1 To K) 'redimensionne le tableau des lignes TL (9 lignes, K colonnes)
                        TL(1, K) = TV(1, 1) 'récupère dans la ligne 1 le tiroir dans la donnée ligne 1 colonne 1 de TV
                        For J = 2 To 9 'boucle 3 : sur les 8 dernière lignes de TL (ou colonnes de TV)
                            TL(J, K) = TV(I, J) 'récupère dans la ligne J colonne K de TL la donnée ligne I colonne J de TV (=transposition)
                        Next J 'prochaine ligne de la boucle 3
                        K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
                    End If 'fin de la condition 2
                Next I 'prochaine ligne de la boucle 2
            End If 'fin de la condition 1
    End Select 'fin de l'action en fonction du nom de l'onglet
Next O 'prochain onglet de la boucle 1
'si K est supérieure à un, renvoie dans A6 redimensionnée le tableau TL transposé, sinon, message
If K > 1 Then Range("A7").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) Else MsgBox "Aucune occurrence trouvée !"
End Sub

Le fichier :

13belze-v01.zip (327.62 Ko)

Du très bon travail ThauThem, exactement ce dont je souhaiter, merci beaucoup vraiment très sympa de ta part.

Rechercher des sujets similaires à "recherche classeur reponse"