Désolé de ré-ouvrir le sujet je cherche à comprendre le code de Banzai64 je voudrais modifier la partie qui ouvre un nouveau classeur, pour l'ouvrir dans un nouvelle onglet, mais je n'arrive pas à trouver la partie du code à modifier.
Je reposte le code modifier
'déclaration des variables
Sub AddWorkbook()
Dim Cel As Range, Plage As Range
Dim Depart As String, NomFeuille As String, Recherche As String
Dim LesLignes
Dim I As Integer, Colonne As Integer
Dim Sh As Shape
'Affichage en temps réel de la modification
Application.ScreenUpdating = False
'Attribution de la variable SH à la liste déroulante
Set Sh = ActiveSheet.Shapes(Application.Caller)
'Attribution de recherche aux entêtes des semaines
Recherche = "S" & Sh.ControlFormat.Value
'Attribution du nom du nouveau classeur
NomFeuille = Range(Sh.ControlFormat.ListFillRange).Cells(Sh.ControlFormat.Value, 1)
' Dans ce tableau : Les numéro de ligne début tableau
LesLignes = Array(11, 35, 59, 84, 108, 132)
'Création d'une variable raccourci en .
With Sheets.Add
'Attribution du nom de la feuille de calcul
ActiveSheet.Name = NomFeuille
'Boucle sur les ligne pour la colonne 1 Ubound prend la taille maximal des champs en colonne 1
For I = 0 To UBound(LesLignes)
If I = 0 Then
Colonne = 1
Else
' Si ce n'est pas la colonne 1
Colonne = .Cells(2, Columns.Count).End(xlToLeft).Column
If .Cells(2, Colonne) = "" Then
.Columns(Colonne).Delete
Else
Colonne = Colonne + 1
End If
End If
Sheets("Congés et HotLine 2015").Cells(LesLignes(I), "C").CurrentRegion.Copy
.Cells(1, Colonne).PasteSpecial Paste:=xlPasteValues
.Cells(1, Colonne).PasteSpecial Paste:=xlPasteFormats
.Cells(1, Colonne).PasteSpecial Paste:=xlPasteColumnWidths
If I > 0 Then
If .Cells(Rows.Count, Colonne).End(xlUp).Row > .Range("A" & Rows.Count).End(xlUp).Row Then
.Columns(Colonne).Cut Destination:=.Columns(1)
End If
.Columns(Colonne).Delete
End If
Next I
Set Cel = .Cells.Find(what:=Recherche, LookIn:=xlValues, lookat:=xlWhole) ', searchorder:=xlByRows)
If Not Cel Is Nothing Then
Depart = Cel.Address
Do
If Plage Is Nothing Then
Set Plage = Cel.Resize(30, 1)
Else
Set Plage = Union(Plage, Cel.Resize(30, 1))
End If
Set Cel = Cells.FindNext(Cel)
Loop While Depart <> Cel.Address
End If
Plage.Copy .Range("B2")
.Rows(1).Delete
.Range(.Cells(1, Plage.Columns.Count + 2), .Cells(1, Columns.Count)).EntireColumn.Delete
.Copy
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = False
End With
End Sub