Bonjour mesdames et messieurs.
Cela fait bien longtemps que nous ne nous sommes pas vu (une histoire de quelques semaine à peine hum hum) et, étant donné la vivacité des esprits des membres du forum (et cela n'est pas une boutade), je me permets de (re)venir vers vous.
Mais cette fois c'est plus dans l'optique d'une amélioration/optimisation d'un code afin de gagner du temps.
En fait, j'utilise une macro me permettant de cacher certaines lignes d'un tableau (les dites lignes sont masquées en fonction du remplissage ou non d'une cellule présente dans chaque ligne, bref). Cela uniquement sur 37 lignes. Ça ne parait pas énorme et pourtant, en fonction des ordinateurs (plusieurs postes, pas tous avec la même configuration mais en général pas une config exceptionnelle), l'action peut soit prendre plusieurs minutes, soit faire planter la machine.
Voici l'objet du délit:
Il s'avère que le problème semble lié à l'emplacement de la macro "majuscule" (qui permet uniquement que le texte de la cellule passe obligatoirement en majuscule) et de la msgbox.
En effet, lorsque je les supprime, la macro se lance quasi instantanément.
Comment les placer convenablement pour éviter les latences?
[EDIT] le message initial a été modifié suite à la découverte citée au-dessus. Merveilleux!
Cela fait bien longtemps que nous ne nous sommes pas vu (une histoire de quelques semaine à peine hum hum) et, étant donné la vivacité des esprits des membres du forum (et cela n'est pas une boutade), je me permets de (re)venir vers vous.
Mais cette fois c'est plus dans l'optique d'une amélioration/optimisation d'un code afin de gagner du temps.
En fait, j'utilise une macro me permettant de cacher certaines lignes d'un tableau (les dites lignes sont masquées en fonction du remplissage ou non d'une cellule présente dans chaque ligne, bref). Cela uniquement sur 37 lignes. Ça ne parait pas énorme et pourtant, en fonction des ordinateurs (plusieurs postes, pas tous avec la même configuration mais en général pas une config exceptionnelle), l'action peut soit prendre plusieurs minutes, soit faire planter la machine.
Voici l'objet du délit:
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ligne As Integer
If Range("E3") = "" Then
Exit Sub
End If
MsgBox ("le planning s'initialise, cela peut prendre quelques minutes. Veuillez patienter")
majuscule
If Not Intersect(Target, Range("E3")) Is Nothing Then
For ligne = 7 To 37
If Cells(ligne, 4) = "m" Then
Rows(ligne & ":" & ligne).EntireRow.Hidden = True
End If
Next
End If
End Sub
Il s'avère que le problème semble lié à l'emplacement de la macro "majuscule" (qui permet uniquement que le texte de la cellule passe obligatoirement en majuscule) et de la msgbox.
En effet, lorsque je les supprime, la macro se lance quasi instantanément.
Comment les placer convenablement pour éviter les latences?
[EDIT] le message initial a été modifié suite à la découverte citée au-dessus. Merveilleux!
Dernière édition: