Bonjour tout le monde , j'espère que vous allez bien
j'ai un problème qui s'affiche quand je lance cette macro depuis un boutton censé la lancer
mais quand je run la macro à partir de l'éditeur VBE rien ne s'affiche
la ligne d'erreur est
Sub Macro1()
'Prépare la feuille "Vierge" contenant les données importées
'Transfert "Semaine N" vers "Semaine N-1" et "Vierge" modifiée vers "Semaine N"
'Rétablit les formules de synthèse de la feuille Accueil
'le code va contenir des tests
Dim Sh_SN1 As Worksheet 'Semaine N
Dim Sh_SN0 As Worksheet 'Semaine N-1
Dim Sh_V As Worksheet 'Vierge
Dim Sh_N As Worksheet 'Nouvelle feuille
Dim NbLgn As Long, LFin As Long, NbLBis As Long, rg As Range
Application.ScreenUpdating = False
With ThisWorkbook
Set Sh_SN1 = .Worksheets("Fs_semaine N")
Set Sh_V = .Worksheets("vierge")
End With
If Sh_SN1.FilterMode Then Sh_SN1.ShowAllData
'Actions sur la feuille "Vierge"
With Sh_V
.[A:CJ].EntireColumn.Hidden = False
.[1:7].Delete Shift:=xlUp
With .Cells
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
NbLgn = .Cells(.Rows.Count, 1).End(xlUp).Row - 1 '(nombre de lignes de données de "Vierge" : Exclut ligne de titre)
If NbLgn < 1 Then
MsgBox "Pas de données dans la feuille ""Vierge""" & Chr(13) & _
"Remplir l'onglet ""Vierge"" avec les données des fichiers score (onglet exportsingle)"
Exit Sub 'Sortir s'il n"y a pas de données dans la feuille "Vierge"
End If
Set rg = .[Y2].Resize(NbLgn)
'Set rgx = .[X2].Resize(NbLgn)
rg.FormulaR1C1 = "=IF(ISBLANK(R[1]C[-10]),CONCATENATE(RC[-1],"" "",R[1]C[-1]),RC[-1])"
rg.Value = rg.Value
rg.Copy Destination:=.[X1].Resize(NbLgn)
Set rg = .[AB2].Resize(NbLgn)
rg.FormulaR1C1 = "=IF(RC[-1]=""INITIALIZATION"",RC[3],IF(RC[-1]=""INSTRUCTION"",RC[5],IF(RC[-1]=""DEVELOPMENT"",RC[7],IF(RC[-1]=""OFFICIALIZATION - INDUSTRIALIZATION"",RC[9],RC[10]))))"
rg.Value = rg.Value
End With
Rows("1:1").AutoFilter
ActiveWindow.LargeScroll ToRight:=2
ActiveWorkbook.Worksheets("vierge").AutoFilter.Sort.SortFields.Clear ******* ligne d'erreur ************
ActiveWorkbook.Worksheets("vierge").AutoFilter.Sort.SortFields.Add Key:=Range _
("O1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("vierge").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
j'ai un problème qui s'affiche quand je lance cette macro depuis un boutton censé la lancer
mais quand je run la macro à partir de l'éditeur VBE rien ne s'affiche
la ligne d'erreur est
Sub Macro1()
'Prépare la feuille "Vierge" contenant les données importées
'Transfert "Semaine N" vers "Semaine N-1" et "Vierge" modifiée vers "Semaine N"
'Rétablit les formules de synthèse de la feuille Accueil
'le code va contenir des tests
Dim Sh_SN1 As Worksheet 'Semaine N
Dim Sh_SN0 As Worksheet 'Semaine N-1
Dim Sh_V As Worksheet 'Vierge
Dim Sh_N As Worksheet 'Nouvelle feuille
Dim NbLgn As Long, LFin As Long, NbLBis As Long, rg As Range
Application.ScreenUpdating = False
With ThisWorkbook
Set Sh_SN1 = .Worksheets("Fs_semaine N")
Set Sh_V = .Worksheets("vierge")
End With
If Sh_SN1.FilterMode Then Sh_SN1.ShowAllData
'Actions sur la feuille "Vierge"
With Sh_V
.[A:CJ].EntireColumn.Hidden = False
.[1:7].Delete Shift:=xlUp
With .Cells
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
NbLgn = .Cells(.Rows.Count, 1).End(xlUp).Row - 1 '(nombre de lignes de données de "Vierge" : Exclut ligne de titre)
If NbLgn < 1 Then
MsgBox "Pas de données dans la feuille ""Vierge""" & Chr(13) & _
"Remplir l'onglet ""Vierge"" avec les données des fichiers score (onglet exportsingle)"
Exit Sub 'Sortir s'il n"y a pas de données dans la feuille "Vierge"
End If
Set rg = .[Y2].Resize(NbLgn)
'Set rgx = .[X2].Resize(NbLgn)
rg.FormulaR1C1 = "=IF(ISBLANK(R[1]C[-10]),CONCATENATE(RC[-1],"" "",R[1]C[-1]),RC[-1])"
rg.Value = rg.Value
rg.Copy Destination:=.[X1].Resize(NbLgn)
Set rg = .[AB2].Resize(NbLgn)
rg.FormulaR1C1 = "=IF(RC[-1]=""INITIALIZATION"",RC[3],IF(RC[-1]=""INSTRUCTION"",RC[5],IF(RC[-1]=""DEVELOPMENT"",RC[7],IF(RC[-1]=""OFFICIALIZATION - INDUSTRIALIZATION"",RC[9],RC[10]))))"
rg.Value = rg.Value
End With
Rows("1:1").AutoFilter
ActiveWindow.LargeScroll ToRight:=2
ActiveWorkbook.Worksheets("vierge").AutoFilter.Sort.SortFields.Clear ******* ligne d'erreur ************
ActiveWorkbook.Worksheets("vierge").AutoFilter.Sort.SortFields.Add Key:=Range _
("O1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("vierge").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With