Bonjour,
Je pars de zéro en ce qui concerne la programmation VBA. J'ai tout appris par vous, un grand merci
Aujourd'hui, premier post puisque je ne trouve plus de solution. J'ai un code qui marche parfaitement, mais dont le temps d'exécution est interminable. C'est un outil dit opérationnel, il doit être le plus réactif possible!
Je précise que je ne sais pas encore bien utiliser le forum, donc je m'en excuse d'avance! Merci!
Je pars de zéro en ce qui concerne la programmation VBA. J'ai tout appris par vous, un grand merci
Aujourd'hui, premier post puisque je ne trouve plus de solution. J'ai un code qui marche parfaitement, mais dont le temps d'exécution est interminable. C'est un outil dit opérationnel, il doit être le plus réactif possible!
Je précise que je ne sais pas encore bien utiliser le forum, donc je m'en excuse d'avance! Merci!
VB:
Sub MàJ_Liste()
' Travail caché
Application.ScreenUpdating = False
' Délclaration de variables
Dim Lig As Integer
' Mise à jour des formules
' Sélection de l'onglet Liste
Sheets("Liste").Select
' Déproéger l'onglet
ActiveSheet.Unprotect ("corps")
' Démasquer les colonnes N à U
Columns("O:W").Select
Selection.EntireColumn.Hidden = False
' Suppression des formules
Range("P3:W65536").Select
Selection.ClearContents
' Sélection de la ligne maximale
Lig = Range("C" & Rows.Count).End(xlUp).Row
' Copier les formules jusqu'à la fin du fichier
Range("P2:W2").Select
Selection.AutoFill Destination:=Range(Cells(2, 16), Cells(Lig, 23))
' Masquer les colonnes de N ) U
Columns("P:W").Select
Selection.EntireColumn.Hidden = True
' Protéger l'onglet
ActiveSheet.Protect ("corps")
' Mise à jour du tableau croisé dynamique
' Sélection de l'onglet OLV étranger
Sheets("OLV étranger").Select
' Mise à jour du tableau
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Pays"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Pays")
.PivotItems("FRA").Visible = False
.PivotItems("(blank)").Visible = False
End With
'
'
'
'
' Mise à jour de l'onglet Affretement
' Déclaration de variables
Dim Tdonnées(400, 5) As Variant
Dim Lig1 As Integer
Dim Lig2 As Integer
Dim i As Integer
Dim j As Integer
' Lig maximale OLV
Lig1 = Range("A" & Rows.Count).End(xlUp).Row
' Lig maximale OTR
Lig2 = Range("E" & Rows.Count).End(xlUp).Row
' Sélection des données
j = 0
For i = 0 To (Lig1 - 6)
Tdonnées(i, 0) = Cells(6 + i, 1)
Tdonnées(i, 1) = Cells(6 + i, 2)
j = j + 1
Next
For i = o To (Lig2 - 6)
Tdonnées(i + j, 0) = Cells(6 + i, 5)
Tdonnées(i + j, 1) = Cells(6 + i, 6)
Next
' Copier les données
' Sélection de l'onglet Affretement
Sheets("Affretement").Select
' Suppression des données
Range("A18:B65536,C19:L65536").Select
Selection.ClearContents
' Suppression de la mise en forme
ActiveSheet.Rows("19:100").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
' Copier les données
For i = 0 To (Lig1 - 6 + Lig2 - 6 + 1)
Cells(18 + i, 1) = Tdonnées(i, 0)
Cells(18 + i, 2) = Tdonnées(i, 1)
Next
' Coller les formules
' Sélection de la ligne maximale
Lig = Range("A" & Rows.Count).End(xlUp).Row
' Copier les formules jusqu'à la fin du fichier
Range("C18:L18").Select
Selection.AutoFill Destination:=Range(Cells(18, 3), Cells(Lig, 12))
' Mise en page
Range(Cells(18, 1), Cells(Lig, 12)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
' Mise en forme pour l'impression
Range(Cells(4, 1), Cells(Lig, 12)).Select
ActiveSheet.PageSetup.PrintArea = "$A$4:$L$" & Lig
Application.ScreenUpdating = True
End Sub
Dernière édition: