Re : Nommer onglet et tri d'onglet
salut a tous
voici une macro faite par un ami les spécialistes du forum pourront sans doute adapter ce code à ton cas.
Public Sub Split_Ptf()
Dim lv_Reponse As Variant
Dim ls_Adress As String
Dim ls_Ptf() As String
Dim lb_Found As Boolean
Dim ll_Cpt As Long
Dim ls_WksCur As String
Application.ScreenUpdating = False 'Suppression de la visualisation de l'avancement
On Error GoTo ErrorHandler 'Gestion d'erreur
Application.Calculation = xlManual
ReDim ls_Ptf(0)
lv_Reponse = MsgBox("Etes-vous bien sur la première ligne de la colonne à spliter?", vbYesNoCancel)
If lv_Reponse = vbCancel Or lv_Reponse = vbNo Then
GoTo Free_Mem
End If
ls_Adress = ActiveCell.Address
ls_WksCur = ActiveSheet.Name
'Gestion de la barre de statut
Application.StatusBar = "Lecture des différentes valeurs à splitter..."
While ActiveCell.Value <> ""
lb_Found = False
For ll_Cpt = 1 To UBound(ls_Ptf)
If ls_Ptf(ll_Cpt) = Trim(ActiveCell.Value) Then
lb_Found = True
Exit For
End If
Next
If Not lb_Found Then
ReDim Preserve ls_Ptf(UBound(ls_Ptf) + 1)
ls_Ptf(UBound(ls_Ptf)) = Trim(ActiveCell.Value)
End If
ActiveCell.Offset(1, 0).Select
Wend
Range(ls_Adress).Select
For ll_Cpt = 1 To UBound(ls_Ptf)
'Gestion de la barre de statut
Application.StatusBar = "Traitement de " & ls_Ptf(ll_Cpt)
Sheets(ls_WksCur).Select
Sheets(ls_WksCur).Copy Before:=Sheets(ls_WksCur)
On Error Resume Next
ActiveSheet.Name = ls_Ptf(ll_Cpt) 'Sheets("Sheet1 (2)").Name = "GLB_OBL_BEF"
'Suppression de la feuille si elle existe déjà
If Err.Number <> 0 Then
Application.DisplayAlerts = False
Sheets(ls_Ptf(ll_Cpt)).Delete
Application.DisplayAlerts = True
ActiveSheet.Name = ReplaceString(ReplaceString(ls_Ptf(ll_Cpt), "%", ""), "/", "")
End If
On Error GoTo ErrorHandler
Range(ls_Adress).Select
While ActiveCell.Value <> ""
If Trim(ActiveCell.Value) = ls_Ptf(ll_Cpt) Then
ActiveCell.Offset(1, 0).Select
Else
Selection.EntireRow.Delete
End If
Wend
Range(ls_Adress).Select
Next
Range(ls_Adress).Select
Sheets(ls_WksCur).Select
Range(ls_Adress).Select
GoTo Free_Mem
ErrorHandler:
'Gestion d'erreur simple
MsgBox Err.Number & " / " & Err.Description
Free_Mem:
ReDim ls_Ptf(0)
Application.Calculation = xlAutomatic
'Gestion de la barre de statut
Application.StatusBar = False
End Sub
Public Function ReplaceString(ByVal as_String As String, as_Replaced As String, as_Replace As String) As String
Dim li_pos As Integer
li_pos = 1
Do Until li_pos = 0
li_pos = InStr(as_String, as_Replaced)
If li_pos > 0 Then
as_String = Left(as_String, li_pos - 1) & as_Replace & Mid(as_String, Len(as_Replaced) + li_pos)
End If
Loop
ReplaceString = as_String
End Function
a plus