Acceleration code VBA
Bonsoir
J'ai un Userform dans lequel j'ai le code ci dessous pour ajouter des noms.
Je le trouve un peu trop lent et je voulais savoir s'il était possible de l'accélérer....
merci et bonne soirée
Ta
[code]'AJOUTER
Private Sub BtnAJOUTER_Click()
If CboNOM.Value = "" Then
MsgBox "Veuillez renseigner le champs 'Nom' "
Else
If MsgBox("confirmez l'ajout de données ?", vbYesNo, "confirmation") = vbYes Then
Sheets("ST").Activate
Range("A39").Select
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select
ActiveCell = CboSECTION.Value
ActiveCell.Offset(0, 1).Value = CboSER
ActiveCell.Offset(0, 3).Value = CboGRA
ActiveCell.Offset(0, 4).Value = CboNOM
ActiveCell.Offset(0, 5).Value = TxtPRENOM
Sheets("HA").Activate
Range("A39").Select
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select
ActiveCell = CboSECTION.Value
ActiveCell.Offset(0, 1).Value = CboSER
ActiveCell.Offset(0, 3).Value = CboGRA
ActiveCell.Offset(0, 4).Value = CboNOM
ActiveCell.Offset(0, 5).Value = TxtPRENOM
MsgBox "Fonctionnaire bien enregsitré", vbOKOnly + vbInformation, "CONFIRMATION"
'
' TRIHA Macro
'
'
Sheets("HA").Select
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(191, 191, 191)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 176, 240)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 176, 80)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 0, 0)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 255, 0)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[SERV]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, CustomOrder:="OFF,SG,SCT,MAT,CTI,GAR,SYN,BUD", DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[[GRA]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, CustomOrder:= _
"CD,CN,L.1,L.2,L.3,MA,MA1,MA2,MA3,MJ1,MJ2,MJ3,MJ4,B1,B2,B3,B4,B5,B6,B.1,B.2,B.3,B.4,B.5,B.6,B.7,G,G1,G2,G3" _
, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[NOM]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[PRENOM]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A6").Select
'TRI ST Macro
Sheets("ST").Select
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(191, 191, 191)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 176, 240)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 176, 80)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 0, 0)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add( _
Range("Tableau4[SEC]"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 255, 0)
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[SERV]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, CustomOrder:="OFF,SG,SCT,MAT,CTI,GAR,SYN,BUD", DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[[GRA]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, CustomOrder:= _
"CD,CN,L.1,L.2,L.3,MA,MA1,MA2,MA3,MJ1,MJ2,MJ3,MJ4,B1,B2,B3,B4,B5,B6,B.1,B.2,B.3,B.4,B.5,B.6,B.7,G,G1,G2,G3" _
, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[NOM]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort.SortFields.Add _
Key:=Range("Tableau4[PRENOM]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("HA").ListObjects("Tableau4").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A6").Select
End If
End If
End Sub
/code]
Bonjour Tacentaure, le forum,
Tu obtiendrai certainement plus de réponses,
Cordialement,
Bonjour
Fichier trop lourd et ne peut être joint
Cdt
Bonjour,
Réduis ton fichier au minimum avec les éléments nécessaires pour une réponse à tes questions.
Sinon, enregistre le au format xlsb (<1mo) ou utilise ci-joint.
Sinon, il n'y a aucune variable déclarée, des Activate et Select inutiles.
Tu peux aussi optimiser la procédure avec un calcul en manuel et geler l'affichage (Application.ScreenUpdating).
Cela veut dire quoi être lent ? Quelle durée ? Tu fais comme un certain nombre d'opérations de tri...
Cdlt.
Bsr
J'ai essayé de diminuer le fichier mais j'ai d'autres soucis
cdt
Bonjour,
C'est quoi ce classeur ?
Travailles-tu sur Mac ?
Attention : Tu as plusieurs modules 'ThisWorkbook' (!?)
J'ai travaillé essentiellement sur l'ajout dans le formulaire.
Tes contrôles USF étaient mal nommés et j'ai utilisé les fonctionnalités des tableaux.
A te relire...
Cdlt.
Bonjour
Merci pour les conseils et les corrections.
Désolé pour ce fichier ....
En effet je travaille sur Mac avec excel 2011 et ce n'est pas terrible
J'alterne avec un autre PC et excel 2007
J'avais remarqué après coup , que les couleurs étaient différentes sur la feuille ST d'ou l'erreur qui survenait dans le tri.
Concernant la lenteur de la macro, pour l'envoi du classeur j'ai du supprimer deux feuilles ( il est donc moins représentatif de mon travail) où figuraient plusieurs formules pour différents calculs. Peut être est ce la qui ralentit l'ajout ou la modification de noms, plus de 30 secondes ???
Bon début de semaine
Cdt
T