OVH Cloud OVH Cloud

Optimisation

2 réponses
Avatar
Gege
=20
Bonjour, cette proc fonctionne tr=E8s bien, mais je pense=20
que l'on peut l'optimiser, pouvez vous me conseiller ?
Merci beaucoup
Gege


Sub Demande_effacement( )

Application.ScreenUpdating =3D False

Range("A" & ActiveCell.Row).Select

ma_date =3D ActiveCell.Offset(0, 0).Value
nom =3D ActiveCell.Offset(0, 1).Value
pr=E9nom =3D ActiveCell.Offset(0, 2).Value

If ma_date =3D "Date" Then MsgBox "Il n'y a pas de=20
saisie !": Exit Sub

If ma_date =3D "" Then MsgBox "Il n'y a pas de=20
saisie !": Exit Sub


If MsgBox("Voulez-vous effacer la saisie effectu=E9e=20
le : " & ma_date & " " _
& vbNewLine & "concernant le dossier de : " & nom=20
& " " & pr=E9nom & " ?", _
vbQuestion + vbYesNo, "Effacement ?") =3D vbYes Then


Range("A" & ActiveCell.Row & ":E" &=20
ActiveCell.Row).Select

Selection.ClearContents
Application.ScreenUpdating =3D True
=20
MsgBox "La saisie a =E9t=E9 effac=E9e." & vbNewLine & _
"Ce tableau va =EAtre tri=E9 par date.", vbOKOnly, "Fin de=20
l'effacement."

Range("A3:E100").Select

Selection.Sort Key1:=3DRange("A3"), Order1:=3DxlAscending,=20
Header:=3DxlGuess, _
OrderCustom:=3D1, MatchCase:=3DFalse,=20
Orientation:=3DxlTopToBottom

Range("A1").Select

End If

End Sub
=20

2 réponses

Avatar
michdenis
Bonjour Gege,

Essaie ceci :

Tu dois renseigné dans la procédure le nom de la feuille où la macro doit s'exécuter ...

Et dans cette ligne de code :
If ma_date = "Date" Or ma_date = "" Then

Ta procédure ne définit pas la valeur de "Date" , tu devras y voir !


'--------------------------------------
Sub Demande_effacement()

Ligne = ActiveCell.Row

With Worksheets("Feuil2")
With .Range("A" & Ligne)
ma_date = .Value
nom = .Offset(0, 1).Value
prénom = .Offset(0, 2).Value

If ma_date = "Date" Or ma_date = "" Then
MsgBox "Il n'y a pas de saisie !"
Exit Sub
End If

If MsgBox("Voulez-vous effacer la saisie effectuée le : " _
& ma_date & " " & vbNewLine & "concernant le dossier de : " _
& nom & " " & prénom & " ?", vbQuestion + vbYesNo, _
"Effacement ?") = vbYes Then

.Resize(, 5).ClearContents
End If
End With
MsgBox "La saisie a été effacée." & vbNewLine & _
"Ce tableau va être trié par date.", vbOKOnly, _
"Fin de l 'effacement."

With .Range("A3:E100")
.Sort Key1:=.Item(1), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, _
MatchCase:úlse, Orientation:=xlTopToBottom
End With
.Range("A1").Activate
End With

End Sub
'--------------------------------------


Salutations!



"Gege" a écrit dans le message de news:063701c3c9fd$e78be600$

Bonjour, cette proc fonctionne très bien, mais je pense
que l'on peut l'optimiser, pouvez vous me conseiller ?
Merci beaucoup
Gege


Sub Demande_effacement( )

Application.ScreenUpdating = False

Range("A" & ActiveCell.Row).Select

ma_date = ActiveCell.Offset(0, 0).Value
nom = ActiveCell.Offset(0, 1).Value
prénom = ActiveCell.Offset(0, 2).Value

If ma_date = "Date" Then MsgBox "Il n'y a pas de
saisie !": Exit Sub

If ma_date = "" Then MsgBox "Il n'y a pas de
saisie !": Exit Sub


If MsgBox("Voulez-vous effacer la saisie effectuée
le : " & ma_date & " " _
& vbNewLine & "concernant le dossier de : " & nom
& " " & prénom & " ?", _
vbQuestion + vbYesNo, "Effacement ?") = vbYes Then


Range("A" & ActiveCell.Row & ":E" &
ActiveCell.Row).Select

Selection.ClearContents
Application.ScreenUpdating = True

MsgBox "La saisie a été effacée." & vbNewLine & _
"Ce tableau va être trié par date.", vbOKOnly, "Fin de
l'effacement."

Range("A3:E100").Select

Selection.Sort Key1:=Range("A3"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

Range("A1").Select

End If

End Sub
Avatar
Alpha
bonjour Denis,
Une question si tu le permets
que signifie
.Resize(, 5).ClearContents
merci
Alpha



"michdenis" a écrit dans le message de news:

Bonjour Gege,

Essaie ceci :

Tu dois renseigné dans la procédure le nom de la feuille où la macro doit
s'exécuter ...


Et dans cette ligne de code :
If ma_date = "Date" Or ma_date = "" Then

Ta procédure ne définit pas la valeur de "Date" , tu devras y voir !


'--------------------------------------
Sub Demande_effacement()

Ligne = ActiveCell.Row

With Worksheets("Feuil2")
With .Range("A" & Ligne)
ma_date = .Value
nom = .Offset(0, 1).Value
prénom = .Offset(0, 2).Value

If ma_date = "Date" Or ma_date = "" Then
MsgBox "Il n'y a pas de saisie !"
Exit Sub
End If

If MsgBox("Voulez-vous effacer la saisie effectuée le : " _
& ma_date & " " & vbNewLine & "concernant le dossier de : " _
& nom & " " & prénom & " ?", vbQuestion + vbYesNo, _
"Effacement ?") = vbYes Then

.Resize(, 5).ClearContents
End If
End With
MsgBox "La saisie a été effacée." & vbNewLine & _
"Ce tableau va être trié par date.", vbOKOnly, _
"Fin de l 'effacement."

With .Range("A3:E100")
.Sort Key1:=.Item(1), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, _
MatchCase:úlse, Orientation:=xlTopToBottom
End With
.Range("A1").Activate
End With

End Sub
'--------------------------------------


Salutations!



"Gege" a écrit dans le message de
news:063701c3c9fd$e78be600$


Bonjour, cette proc fonctionne très bien, mais je pense
que l'on peut l'optimiser, pouvez vous me conseiller ?
Merci beaucoup
Gege


Sub Demande_effacement( )

Application.ScreenUpdating = False

Range("A" & ActiveCell.Row).Select

ma_date = ActiveCell.Offset(0, 0).Value
nom = ActiveCell.Offset(0, 1).Value
prénom = ActiveCell.Offset(0, 2).Value

If ma_date = "Date" Then MsgBox "Il n'y a pas de
saisie !": Exit Sub

If ma_date = "" Then MsgBox "Il n'y a pas de
saisie !": Exit Sub


If MsgBox("Voulez-vous effacer la saisie effectuée
le : " & ma_date & " " _
& vbNewLine & "concernant le dossier de : " & nom
& " " & prénom & " ?", _
vbQuestion + vbYesNo, "Effacement ?") = vbYes Then


Range("A" & ActiveCell.Row & ":E" &
ActiveCell.Row).Select

Selection.ClearContents
Application.ScreenUpdating = True

MsgBox "La saisie a été effacée." & vbNewLine & _
"Ce tableau va être trié par date.", vbOKOnly, "Fin de
l'effacement."

Range("A3:E100").Select

Selection.Sort Key1:=Range("A3"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

Range("A1").Select

End If

End Sub