Salut Pierre, jmd,
pour le coup, jmd a raison mais, j'aime trop VBA...
Désolé, hein, jmd!
Faire simple pour commencer... Un double-clic n'importe où déclenche la macro avec affichage en [Z].
A toi de dire ce dont tu as besoin ensuite comme extraction de données... que jmd te sortira en quelques formules, d'ailleurs!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iColA%, iColRes%, iColRef%, iColP%, iColRP%, iRow%, x%, tData, tExtract()
Cancel = True
'
With Worksheets("données_rapatriées")
.Columns(26).ClearContents
iColA = .Rows(1).Find(what:="Analyse", lookat:=xlWhole).Column
iColRes = .Rows(1).Find(what:="Résultat", lookat:=xlWhole).Column
iColRef = .Rows(1).Find(what:="Référence", lookat:=xlWhole).Column
iColP = .Rows(1).Find(what:="Producteur", lookat:=xlWhole).Column
iRow = .UsedRange.Rows.Count
tData = .Range("A1:Y" & iRow).Value
'
ReDim tExtract(iRow)
tExtract(0) = "ClefReferenceProducteur"
'
For x = 2 To UBound(tData, 1)
If tData(x, iColP) <> tData(x - 1, iColP) Or tData(x, iColRef) <> tData(x - 1, iColRef) Then _
tExtract(x - 1) = tData(x, iColP) & tData(x, iColRef)
Next
.Range("Z1").Resize(iRow, 1).Value = WorksheetFunction.Transpose(tExtract)
End With
'
End Sub
Tes importations de données sont tellement aléatoires que tu as besoin de ceci?
Pas de valeurs de colonnes fixes possibles?
iColA = .Rows(1).Find(what:="Analyse", lookat:=xlWhole).Column
iColRes = .Rows(1).Find(what:="Résultat", lookat:=xlWhole).Column
iColRef = .Rows(1).Find(what:="Référence", lookat:=xlWhole).Column
iColP = .Rows(1).Find(what:="Producteur", lookat:=xlWhole).Column
A+