Accélérer les procédures avec un dispositif de fichiers liés
Bonjour,
J'ai réalisé un outil qui permet de suivre les stratégies de soin mises en place pour des animaux blessés ou malades.
L'ensemble des données est réuni dans un fichier très simple intitulé DEBRIEF_BASE, qui ne contient que des données et pas de macros. De la sorte ce fichier est partagé sur le serveur de l'association, ouvert et modifié depuis différents postes.
Mais, pour exploiter ces données, les soigneuses se servent en fait d'un autre fichier qui s'intitule "Debrief", qui ne contient que des formules et moultes macros, lesquelles permettent l'exploitation ergonomique des infos contenues dans DEBRIEF BASE (la lecture, l'ajout, le classement et les modification des différentes infos contenus dans le fichier DEBRIEF_BASE). les infos de DEBRIEF_BASE sont reportés dans les fichier-outils avec des formules INDEX.
Ce fichier-outil "debrief" existe en autant d'exemplaire qu'il y a de PCs reliés au serveur : debrief_salle de soin; debrief_bureau, etc.
Lorsque l'on ouvre un de ces fichiers "Debrief", le fichier de données DEBRIEF_BASE s'ouvre en arrière plan et reste invisible tout le temps (fichier masqué pour éviter les manipulations intempestives). Idem lors de le fermeture. Les données relatives aux soins peuvent ainsi être travaillées de façon partagées depuis les fichier-outils debrief.
Ce système marche bien mais les modifications de données et les entrées de nouvelles données sont assez longues : entre 5 et 10 secondes.
CE QUE J'AI FAIT POUR L'HEURE :
- J'ai mis en place pour chaque manip' les commandes de désactivation de rafraichissements de l'écran, les calculs en mode manuel, etc.
- Lors de chaque action également j'active l'onglet concerné du fichier DEBRIEF_BASE qui va recevoir l'info : d'après mes essais c'est ce qu'il y a de mieux à faire.... et puis... après diverses recherches et tentatives je n'ai pas trouvé mieux à faire...
Pour autant, certains parmi vous sauraient peut-être ce qui peut être amélioré dans mon code...
Voici pour exemple le code pour l'ajout d'un nouvel animal :
Option Explicit
Dim ws As Worksheet
Dim Ligne As Long
Public wbt As Workbook
Public wba As Workbook
Public wb As Workbook
Public feuilactive As String 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
'Pour le formulaire
Private Sub userform_initialize()
TestFichierOuvert
ThisWorkbook.Activate
With ThisWorkbook.Windows(1)
.Visible = True
End With
Dim J As Long
Dim i As Integer
feuilactive = ActiveSheet.Name 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
Set wba = Workbooks("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx")
Set wbt = ThisWorkbook
ComboBox2.ColumnCount = 1 'Pour la liste déroulante secteurs
ComboBox2.List = wbt.Worksheets("Paramètres").Range("E8:E16").Value
TextBox4.Value = DateValue(Now)
TextBox2.Value = Format(Now, "yyyy")
OptionButton4.Value = True
End Sub
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
' code pour désactiver des fonctions qui ralentissent l'execution de la macro
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Set wba = Workbooks("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx")
Set wbt = ThisWorkbook
Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
'ActiveWindow.Visible = False
Set ws = wba.Worksheets("LISTE ANIMAUX") 'Correspond au nom de votre onglet dans le fichier Excel
'Code pour éviter l'entrée de doublon
Dim i As Integer 'Declaration de ma variable
' wba.Save
With ws
ws.Activate
'On fait le traitement de la cellule A2 jusqu'à la derniere cellule non vide de la colonne A
For i = 2 To .Range("A65500").End(xlUp).Row
'Si la cellule courante est égale à la valeur entrée dans ma TextBox
If .Range("A" & i).Value = TextBox1.Value & " (" & TextBox2.Value & ")" Then
'Si la reponse au message est oui je poursuis mon traitement
MsgBox ("ATTENTION ! Ce numéro est déjà attribué ! C'est strictement interdit (art. 342b du code de procédure du debrief)")
Exit Sub
End If
Next
End With
'If MsgBox("Confirmer nouvel animal ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
If TextBox1 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué de numéro, ça craint !! En cas de doute, attribuez le numéro 3000 et vous le modifierez plus tard...")
Exit Sub
End If
If ComboBox2 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué de SECTEUR.")
End If
If TextBox3 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué d'ESPECE.")
End If
If TextBox11 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué de DATE D'INFO.")
End If
If TextBox4 <> "" And Not IsDate(Me.TextBox4.Value) Then
MsgBox ("Grrrrrr, il faut entrer une date d'arrivée valide au format jj/mm/aaaa ! (c'est obligatoire) ")
End If
If Not IsDate(Me.TextBox11.Value) And TextBox11 <> "" Then
MsgBox ("Grrrrrr, il faut entrer une date d'INFO valide au format jj/mm/aaaa ! (c'est obligatoire)")
Exit Sub
End If
If MsgBox("Confirmer nouvel animal ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
'Workbooks.Open ("D:\OneDrive\TICHO\debrief en 3\DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx")
'Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
'With ws
'Set ws = wba.Worksheets("LISTE ANIMAUX") 'Correspond au nom de votre onglet dans le fichier Excel
'ws.Activate
'ouvrir une première ligne de tableau vierge
ws.Range("2:2").Insert CopyOrigin:=xlFormatFromRightOrBelow
'Incrémenter les données de la 2nde ligne sur la première
ws.Range("S3:BU3").Select
Selection.AutoFill Destination:=Range("S2:BU3"), Type:=xlFillDefault
ws.Range("S2:BU3").Select
'copie les données du formulaire dans le tableau
TextBox2.Value = Format(TextBox4.Value, "yyyy")
ws.Range("A2").Value = TextBox1.Value & " (" & TextBox2.Value & ")" 'numéro complet
ws.Range("B2").Value = ComboBox2 'secteur
ws.Range("C2").Value = TextBox12 'sous-secteur
ws.Range("D2").Value = TextBox1 'numéro
ws.Range("E2").Value = TextBox2.Value 'Année
ws.Range("F2").Value = TextBox3 'espèce
ws.Range("G2").Value = TextBox5 'Diag
ws.Range("H2").Value = TextBox6 'POids
ws.Range("I2").Value = TextBox7 'Traitement
ws.Range("J2").Value = TextBox8 'nourrissage
ws.Range("K2").Value = TextBox9 'Observations
ws.Range("L2").Value = TextBox11 'date info
ws.Range("M2").Value = TextBox4 'date arrivée
ws.Range("N2").Value = TextBox10 'Historique
'ws.Range("S2").Value = "=LIGNE()" 'Historique
' ws.Range("T2").Value =
'pour point relaché :
'Dim Ligne As Long
' With ws
'ws.Activate
If OptionButton1 = True Then
ws.Range("O2").Value = 1
ws.Range("K2").Value = TextBox9 & Chr(13) & Chr(10) & "---" & Chr(13) & Chr(10) & "PR : à faire > Mi"
End If
If OptionButton2 = True Then
ws.Range("O2").Value = 2
ws.Range("K2").Value = TextBox9 & Chr(13) & Chr(10) & "---" & Chr(13) & Chr(10) & "PR : Vu, OK. Orga > Mi"
End If
'If OptionButton3 = True Then
' .Range("O2").Value = 3
' .Range("K2").Value = TextBox9 & Chr(13) & Chr(10) & "---" & Chr(13) & Chr(10) & "PR : Vu. Pas relachable"
' End If
'pour Situation :
'Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
'With ws
'Set ws = wba.Worksheets("LISTE ANIMAUX") 'Correspond au nom de votre onglet dans le fichier Excel
'ws.Activate
If OptionButton4 = True Then
ws.Cells(2, "P") = "En soin"
End If
If OptionButton5 = True Then
'ws.Range("P2").Value = "Relâché" And ws.Range("O2").Value = ""
ws.Cells(2, "P") = "Relâché"
ws.Cells(2, "O") = ""
End If
If OptionButton6 = True Then
ws.Cells(2, "P") = "Mort"
End If
If OptionButton7 = True Then
ws.Cells(2, "P") = "Echappé"
End If
'ws.Range("F1").Select
' End With
'Sheets("TOUS Animaux").Activate
'ActiveSheet.Unprotect ("TICHO2020")
' Rows("3:3").Select
' Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
' Range("A4:J4").Select
'Selection.AutoFill Destination:=Range("A3:J4"), Type:=xlFillDefault
' Range("A3:J4").Select
'Rows("3:3").EntireRow.AutoFit
' Range("L3:Q3").Select
' With Selection.Interior
' .Pattern = xlNone
' .TintAndShade = 0
' .PatternTintAndShade = 0
' End With
' ActiveSheet.Protect ("TICHO2020")
' Range("F1").Select
'Pour enregistrement dans ONGLET ARCHIVES
Set ws = Nothing
Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
With Sheets("Archives")
Sheets("Archives").Activate
'ActiveSheet.Unprotect ("TICHO2020")
'ouvrir une première ligne de tableau vierge
Range("5:5").Insert CopyOrigin:=xlFormatFromRightOrBelow
'Incrémenter les données de la 2nde ligne sur la première
Range("A6:V6").Select
Selection.AutoFill Destination:=Range("A5:V6"), Type:=xlFillDefault
Range("A5:V6").Select
'copie les données du formulaire dans l'ONGLET ARCHIVES
TextBox2.Value = Format(TextBox4.Value, "yyyy")
.Range("A5").Value = TextBox1.Value & " (" & TextBox2.Value & ")" ' Numéro complet
.Range("B5").Value = ComboBox2 'Secteur
.Range("C5").Value = TextBox12 'sous-secteur
.Range("D5").Value = TextBox1 ' Numéro
.Range("E5").Value = Format(TextBox4.Value, "yyyy") 'Année
.Range("F5").Value = TextBox3 'Espèce
.Range("G5").Value = TextBox5 'diag
.Range("H5").Value = TextBox6 'Poids
.Range("I5").Value = TextBox7 'nourrissage
.Range("J5").Value = TextBox8 'traitement
.Range("K5").Value = TextBox9 'observations
.Range("L5").Value = TextBox11 'date info
.Range("M5").Value = TextBox4 'Date d'arrivée
.Range("N5").Value = TextBox10 ' historique
End With
ActiveWorkbook.Save
'ActiveWorkbook.RefreshAll
'ActiveWindow.Visible = False
'ActiveSheet.Protect ("TICHO2020")
'pour revenir au formulaire si on ne confirme pas l'ajout de l'animal
Else
Exit Sub
End If
ComboBox2.Value = ""
TextBox1.Value = ""
TextBox2.Value = Format(Now, "yyyy")
TextBox3.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox10.Value = ""
TextBox4.Value = DateValue(Now)
wbt.Activate 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
ActiveWindow.Visible = True
Sheets(feuilactive).Activate 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
Unload Me
final:
' code pour résactiver des fonctions désactivées en début de marcos parce qu'elles ralentissent l'execution de la macro
With Application
Application.ScreenUpdating = True 'arrête le travail en arrière plan
Application.DisplayStatusBar = True 'inhibe la mise a jour de la barre d'état
Application.Calculation = xlCalculationAutomatic 'le mode de calcul devient manuel
End With
MiseEnPageTsAni
End Sub
'Pour le bouton Date du jour dans info
Private Sub CommandButton4_Click()
TextBox11.Value = DateValue(Now)
End Sub
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
Unload Me
End SubMon fichier fait plus de 1,5 Mo je ne peux pas vous le joindre... je vais essayer d'arranger ça.
Un idée en attendant ?
merci !
Delphine.
Bonjour,
une tentative.
Sans fichier tu te doutes bien qu'il est impossible de tester quoique ce soit... Donc travaille sur une copie
J'ai accéléré 2 partie.
1) remplacement d'une boucle chronophage par une recherche
2) écriture d'un tableau en une fois plutôt que de multiples écritures chronophages également
Plus bas tu as une autre série d'écritures à faire sur le même modèle.
Ceci dit, il va rester les éventuels problèmes de lenteur réseau.
Si tu en as, excel n'y peut rien. Il faudra voir avec le responsable du SI
L'ancien code est mis 3 fois en commentaire avec ''', le nouveau est entre des '********************************
Option Explicit
Dim ws As Worksheet
Dim Ligne As Long
Public wbt As Workbook
Public wba As Workbook
Public wb As Workbook
Public feuilactive As Worksheet 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
'Pour le formulaire
Private Sub userform_initialize()
TestFichierOuvert
ThisWorkbook.Activate
With ThisWorkbook.Windows(1)
.Visible = True
End With
Dim J As Long
Dim i As Integer
feuilactive = ActiveSheet 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
Set wba = Workbooks("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx")
Set wbt = ThisWorkbook
ComboBox2.ColumnCount = 1 'Pour la liste déroulante secteurs
ComboBox2.List = wbt.Worksheets("Paramètres").Range("E8:E16").Value
TextBox4.Value = DateValue(Now)
TextBox2.Value = Format(Now, "yyyy")
OptionButton4.Value = True
End Sub
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim c As Range, tabl() As Variant
' code pour désactiver des fonctions qui ralentissent l'execution de la macro
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Set wba = Workbooks("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx")
Set wbt = ThisWorkbook
Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
'ActiveWindow.Visible = False
Set ws = wba.Worksheets("LISTE ANIMAUX") 'Correspond au nom de votre onglet dans le fichier Excel
'Code pour éviter l'entrée de doublon
Dim i As Integer 'Declaration de ma variable
' wba.Save
With ws
ws.Activate
'On fait le traitement de la cellule A2 jusqu'à la derniere cellule non vide de la colonne A
''' For i = 2 To .Range("A65500").End(xlUp).Row
''' 'Si la cellule courante est égale à la valeur entrée dans ma TextBox
''' If .Range("A" & i).Value = TextBox1.Value & " (" & TextBox2.Value & ")" Then
''' 'Si la reponse au message est oui je poursuis mon traitement
''' MsgBox ("ATTENTION ! Ce numéro est déjà attribué ! C'est strictement interdit (art. 342b du code de procédure du debrief)")
''' Exit Sub
''' End If
''' Next
'***************************************
' !!! recherche au lieu d'une boucle sur toutes les cellules !!!
Set c = .Columns(1).Find(TextBox1.Value & " (" & TextBox2.Value & ")", , xlValues, xlWhole)
If Not c Is Nothing Then
MsgBox ("ATTENTION ! Ce numéro est déjà attribué ! C'est strictement interdit (art. 342b du code de procédure du debrief)")
Exit Sub
End If
'*******************************************
End With
'If MsgBox("Confirmer nouvel animal ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
If TextBox1 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué de numéro, ça craint !! En cas de doute, attribuez le numéro 3000 et vous le modifierez plus tard...")
Exit Sub
End If
If ComboBox2 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué de SECTEUR.")
End If
If TextBox3 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué d'ESPECE.")
End If
If TextBox11 = "" Then
MsgBox ("ATTENTION !! Vous n'avez pas attribué de DATE D'INFO.")
End If
If TextBox4 <> "" And Not IsDate(Me.TextBox4.Value) Then
MsgBox ("Grrrrrr, il faut entrer une date d'arrivée valide au format jj/mm/aaaa ! (c'est obligatoire) ")
End If
If Not IsDate(Me.TextBox11.Value) And TextBox11 <> "" Then
MsgBox ("Grrrrrr, il faut entrer une date d'INFO valide au format jj/mm/aaaa ! (c'est obligatoire)")
Exit Sub
End If
If MsgBox("Confirmer nouvel animal ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
'Workbooks.Open ("D:\OneDrive\TICHO\debrief en 3\DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx")
'Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
'With ws
'Set ws = wba.Worksheets("LISTE ANIMAUX") 'Correspond au nom de votre onglet dans le fichier Excel
'ws.Activate
'ouvrir une première ligne de tableau vierge
ws.Range("2:2").Insert CopyOrigin:=xlFormatFromRightOrBelow
'Incrémenter les données de la 2nde ligne sur la première
ws.Range("S3:BU3").Select
Selection.AutoFill Destination:=Range("S2:BU3"), Type:=xlFillDefault
ws.Range("S2:BU3").Select
'copie les données du formulaire dans le tableau
TextBox2.Value = Format(TextBox4.Value, "yyyy")
''' ws.Range("A2").Value = TextBox1.Value & " (" & TextBox2.Value & ")" 'numéro complet
''' ws.Range("B2").Value = ComboBox2 'secteur
''' ws.Range("C2").Value = TextBox12 'sous-secteur
''' ws.Range("D2").Value = TextBox1 'numéro
''' ws.Range("E2").Value = TextBox2.Value 'Année
''' ws.Range("F2").Value = TextBox3 'espèce
''' ws.Range("G2").Value = TextBox5 'Diag
''' ws.Range("H2").Value = TextBox6 'POids
''' ws.Range("I2").Value = TextBox7 'Traitement
''' ws.Range("J2").Value = TextBox8 'nourrissage
''' ws.Range("K2").Value = TextBox9 'Observations
''' ws.Range("L2").Value = TextBox11 'date info
''' ws.Range("M2").Value = TextBox4 'date arrivée
''' ws.Range("N2").Value = TextBox10 'Historique
'**************************
' on remplit un tableau qui sera écrit en 1 fois
ReDim tabl(1 To 1, 1 To 14)
tabl(1, 1) = TextBox1.Value & " (" & TextBox2.Value & ")" 'numéro complet
tabl(1, 2) = ComboBox2 'secteur
tabl(1, 3) = TextBox12 'sous-secteur
tabl(1, 4) = TextBox1 'numéro
tabl(1, 5) = TextBox2.Value 'Année
tabl(1, 6) = TextBox3 'espèce
tabl(1, 7) = TextBox5 'Diag
tabl(1, 8) = TextBox6 'POids
tabl(1, 9) = TextBox7 'Traitement
tabl(1, 10) = TextBox8 'nourrissage
tabl(1, 11) = TextBox9 'Observations
tabl(1, 12) = TextBox11 'date info
tabl(1, 13) = TextBox4 'date arrivée
tabl(1, 14) = TextBox10 'Historique
ws.Range("A2:N2") = tabl
'*********************************
'ws.Range("S2").Value = "=LIGNE()" 'Historique
' ws.Range("T2").Value =
'pour point relaché :
'Dim Ligne As Long
' With ws
'ws.Activate
If OptionButton1 = True Then
ws.Range("O2").Value = 1
ws.Range("K2").Value = TextBox9 & Chr(13) & Chr(10) & "---" & Chr(13) & Chr(10) & "PR : à faire > Mi"
End If
If OptionButton2 = True Then
ws.Range("O2").Value = 2
ws.Range("K2").Value = TextBox9 & Chr(13) & Chr(10) & "---" & Chr(13) & Chr(10) & "PR : Vu, OK. Orga > Mi"
End If
'If OptionButton3 = True Then
' .Range("O2").Value = 3
' .Range("K2").Value = TextBox9 & Chr(13) & Chr(10) & "---" & Chr(13) & Chr(10) & "PR : Vu. Pas relachable"
' End If
'pour Situation :
'Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
'With ws
'Set ws = wba.Worksheets("LISTE ANIMAUX") 'Correspond au nom de votre onglet dans le fichier Excel
'ws.Activate
If OptionButton4 = True Then
ws.Cells(2, "P") = "En soin"
End If
If OptionButton5 = True Then
'ws.Range("P2").Value = "Relâché" And ws.Range("O2").Value = ""
ws.Cells(2, "P") = "Relâché"
ws.Cells(2, "O") = ""
End If
If OptionButton6 = True Then
ws.Cells(2, "P") = "Mort"
End If
If OptionButton7 = True Then
ws.Cells(2, "P") = "Echappé"
End If
'ws.Range("F1").Select
' End With
'Sheets("TOUS Animaux").Activate
'ActiveSheet.Unprotect ("TICHO2020")
' Rows("3:3").Select
' Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
' Range("A4:J4").Select
'Selection.AutoFill Destination:=Range("A3:J4"), Type:=xlFillDefault
' Range("A3:J4").Select
'Rows("3:3").EntireRow.AutoFit
' Range("L3:Q3").Select
' With Selection.Interior
' .Pattern = xlNone
' .TintAndShade = 0
' .PatternTintAndShade = 0
' End With
' ActiveSheet.Protect ("TICHO2020")
' Range("F1").Select
'Pour enregistrement dans ONGLET ARCHIVES
Set ws = Nothing
Windows("DEBRIEF_BASE_NE_PAS_TOUCHER.xlsx").Activate
With Sheets("Archives")
Sheets("Archives").Activate
'ActiveSheet.Unprotect ("TICHO2020")
'ouvrir une première ligne de tableau vierge
Range("5:5").Insert CopyOrigin:=xlFormatFromRightOrBelow
'Incrémenter les données de la 2nde ligne sur la première
Range("A6:V6").Select
Selection.AutoFill Destination:=Range("A5:V6"), Type:=xlFillDefault
Range("A5:V6").Select
'copie les données du formulaire dans l'ONGLET ARCHIVES
TextBox2.Value = Format(TextBox4.Value, "yyyy")
.Range("A5").Value = TextBox1.Value & " (" & TextBox2.Value & ")" ' Numéro complet
.Range("B5").Value = ComboBox2 'Secteur
.Range("C5").Value = TextBox12 'sous-secteur
.Range("D5").Value = TextBox1 ' Numéro
.Range("E5").Value = Format(TextBox4.Value, "yyyy") 'Année
.Range("F5").Value = TextBox3 'Espèce
.Range("G5").Value = TextBox5 'diag
.Range("H5").Value = TextBox6 'Poids
.Range("I5").Value = TextBox7 'nourrissage
.Range("J5").Value = TextBox8 'traitement
.Range("K5").Value = TextBox9 'observations
.Range("L5").Value = TextBox11 'date info
.Range("M5").Value = TextBox4 'Date d'arrivée
.Range("N5").Value = TextBox10 ' historique
End With
ActiveWorkbook.Save
'ActiveWorkbook.RefreshAll
'ActiveWindow.Visible = False
'ActiveSheet.Protect ("TICHO2020")
'pour revenir au formulaire si on ne confirme pas l'ajout de l'animal
Else
Exit Sub
End If
ComboBox2.Value = ""
TextBox1.Value = ""
TextBox2.Value = Format(Now, "yyyy")
TextBox3.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox10.Value = ""
TextBox4.Value = DateValue(Now)
wbt.Activate 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
ActiveWindow.Visible = True
feuilactive.Activate 'pour revenir à l'onglet d'où a été activé le bouton de lancement du formulaire
Unload Me
final:
' code pour résactiver des fonctions désactivées en début de marcos parce qu'elles ralentissent l'execution de la macro
With Application
Application.ScreenUpdating = True 'arrête le travail en arrière plan
Application.DisplayStatusBar = True 'inhibe la mise a jour de la barre d'état
Application.Calculation = xlCalculationAutomatic 'le mode de calcul devient manuel
End With
MiseEnPageTsAni
End Suberic
Bonjour Eric,
Grand merci pour cette proposition que j'ai commencé à mettre en place dans mes différents userform.
Ce n'est pas encore supersonique mais je gagne du temps, effectivement !
...en plus j'apprends à décliner aussi ces formules ce qui est bien intéressant.
... en plus je constate qu'un code propre et bien présenté est plus agréable à travailler (bon, je m'en doutais mais au milieu de mon chantier je n'avais pas trio fait d'effort.)
Je verrais quand j'en aurais fini avec ces modifs si je relance un post pour voir si on peut aller plus loin.
Encore merci !!
Delphine