Cousinhub,
Excuse j'ai été trop rapide mais en tout cas je te félicite car c'est vraiment ce que je veux.
Je vais reprendre cette macro et l'intégrer dans mon fichier original en espérant qu'il n'y ai pas de surprise.
Je te tiens au courant.
-- 01 Juil 2010, 17:54 --
Re-bonjour cousinhub,
Fausse alerte, la macro une fois intégrée dans mon fichier plante totalement.
Je te remets le fichier (l'original). Il est constitué de 4 onglets qui devront restés apparent.
La recherche devra se faire sur la feuille intitulée "Actions SMQ" uniquement.
Merci pour ton aide.
-- 02 Juil 2010, 12:25 --
Bonjour le forum,
Problème résolu. Pour en faire profiter tout le monde voici la macro :
Sub extract()
Dim Sh As Worksheet
Dim Cel As Range
Dim LesSites As Object
Dim LeNom As String
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
Set LesSites = CreateObject("Scripting.Dictionary")
For Each Sh In Sheets
Next Sh
With Sheets("Actions SMQ")
.Range("B6:G" & .[B65000].End(xlUp).Row).Name = "base"
For Each Cel In .Range("E7", .[E65000].End(xlUp))
If Cel.Value <> "" Then
LeNom = IIf(Len(Application.Proper(Replace(Cel.Value, ",", ""))) > 31, Left(Application.Proper(Replace(Cel.Value, ",", "")), 31), _
Application.Proper(Replace(Cel.Value, ",", "")))
LesSites(LeNom) = LeNom
End If
Next Cel
.[P1] = .[E6]
For Each it In LesSites.Items
.[P2] = it
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = it
.Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("P1:P2"), _
CopyToRange:=Range("B6"), Unique:=False
Columns.AutoFit
Next it
.[P1:P2].Clear
.Select
End With
End Sub
Merci à ceux qui ont fait évoluer la solution.