Retrouver des infos multiples
Bonjour,
je m'adresse encore une fois à vous afin de trouver une solution. J'ai un liste d'Ordre de fabrication (OF) et je souhaiterais retrouver les composant dans la feuille "nomenclature" pour les insérer en face dan la feuille "OF". Dans l'exemple j'ai 6 composants mais cela peut monter jusqu'à 9 (d'ou le 1,2,3,4,5,6,7,8,9).
Merci d'avance pour votre aide,
CDLT
Nathan
Bonjour,
Une solution par macro.
Le code (à insérer dans le module de la feuille : Clic droit sur l'onglet "OF"/Visualiser le code - copier/coller le code suivant) :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, DL As Long
If Target.Cells.Count = 1 Then 'Si une unique cellule concernée
If Target.Column = 1 Then 'Si colonne A
Application.EnableEvents = False 'Désactive les événements
Application.ScreenUpdating = False 'Empêche la MAJ de l'écran
With Worksheets("Nomenclature") 'Dans la feuille Nomenclature
DL = .Range("E" & Rows.Count).End(xlUp).Row 'dernière cellule non vide colonne E
.AutoFilterMode = False 'Désactive un filtre éventuel
'filtre la feuille nomenclature, si colonne 5 (E) correspond au Critère Target (cellule modifiée col A Feuille OF)
.Range("$A$2:$F$" & DL).AutoFilter Field:=5, Criteria1:=CStr(Target.Value)
On Error Resume Next 'Empêche l'erreur si aucune données après filtre
Set Rng = .AutoFilter.Range.Cells.SpecialCells(xlCellTypeVisible) 'met en mémoire la plage filtrée
On Error GoTo 0
End With
If Not Rng Is Nothing Then 'Si le filtre a ramené des données
With ThisWorkbook.Worksheets.Add 'Dans une nouvelle feuille
Rng.Copy .Range("A1") 'Copie / colle la plage filtrée
'Transpose la colonne C de la plage filtrée dans la bonne ligne Feuille OF :
Target.Offset(0, 1).Resize(, .Range("A1").CurrentRegion.Rows.Count - 1).Value = Application.Transpose(.Range("C2:C" & .Range("C" & Rows.Count).End(xlUp).Row).Value)
Application.DisplayAlerts = False 'Empêche l'alerte Excel de suppression de feuille
.Delete 'Supprime la nouvelle feuille
Application.DisplayAlerts = True 'Réactive les alertes Excel
End With
End If
Worksheets("Nomenclature").AutoFilterMode = False 'Désactive le filtre
Application.EnableEvents = True 'Réactive le gestionnaire d'événements
Application.ScreenUpdating = True 'Remet la MAJ de l'écran
End If
End If
End SubLe fichier :
Bonjour
Pour un OF ou pour tous ?
Pour un ou deux faisable par formule, pour une longue liste, PowerQuery, intégré à Excel est plus approprié
Les 2 solutions dans l'exemple ci-joint
Edit : tu as 3 solutions avec le VBA de pijaku
Merci à vous deux. J'ai du mal à comprendre le fonctionnement de ta macro pijaku donc je vais éviter de l'utiliser, ce sera plus sain pour le futur du fichier
Il y a plusieurs OF mais au max une dizaine donc les formule sont parfaites !
Merci beaucoup à vous deux !
Cdlt
Nathan