OVH Cloud OVH Cloud

Demande avis éclairés sur macros artisanales...

2 réponses
Avatar
Michel.P
Bonsoir à toutes est tous,
je voudrai votre avis éclairé sur ces deux macros
qui tournent impecc sur ma base
Trouvez vous des erreurs à corriger ? des modifs
pour simplifier ? ou autre chose...
votre avis sera de toute manière très apprécie

merci et bonne soirée

========================================================================

Option Private Module

Sub resultat()
' Macro enregistrée le 17/08/2004 par MP
Application.ScreenUpdating = False
With Sheets("stats")
Range("Tri_Noms").Select
Selection.Sort Key1:=Range("I10"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom
Range("b10").Select
d = Range("debutmois").Value
If d = 0 Then Exit Sub
ActiveWorkbook.Names.Add Name:="debut",
RefersToR1C1:=d ' nomme la cellule pour autre
traitement
f = Evaluate("=fin.mois(debut, 0)"
'calcule la fin du mois

' ====va chercher le premier
nom de la liste
For Each c In Range("listenoms")
If c.Value = "" Then GoTo Suite ' c
est le nom
c.Activate
G = c.Offset(0, 2).Value '
G bureau concerné
If c <> "" Then
ActiveCell.Offset(rowOffset:=0,
columnOffset:=3).Activate
Sheets("donnees").Select
Range("H12").Select
Selection.AutoFilter Field:=7,
Criteria1:="=" & G
Selection.AutoFilter Field:=8, Criteria1:="=" &
c
Selection.AutoFilter Field:=10, Criteria1:=">="
& d, Operator:=xlAnd _
, Criteria2:="<=" & f
Range("resultat1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("stats").Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next c
Range("C10").Select
Selection.Copy
End With
Suite:
CopieResultat
End Sub



Sub CopieResultat()
' macro lancée aprés éxécution sub resultat
'
Application.Goto Reference:="Plage"
Selection.Copy
DateDoc = Range("e9").Value
If DateDoc = 0 Then Exit Sub
For Each P In Range("plageannee")
If P.Value = "" Then Exit Sub
If P = DateDoc Then
P.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("F7").Select
Application.CutCopyMode = False
End If
Next P
End Sub

--
merci d'éclairer ma lanterne.
(un jour, serai Calife à la Place du Calife...)

2 réponses

Avatar
Salur MV,
Il y a beaucoup de select et selection et de Value
(donnée par défaut pour les objets range)...
Evite les goto...

Yann

J'ai fais une correction rapide...
========================= ========================= ========

Option Private Module

Sub resultat()
' Macro enregistrée le 17/08/2004 par MP
Application.ScreenUpdating = False
With Sheets("stats")
' Range("Tri_Noms").Select
' Selection.Sort Key1:=Range("I10"),
.Range("Tri_Noms").Sort Key1:=Range("I10"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Range("b10").Select
'd = Range("debutmois").Value
d = Range("debutmois")
If d = 0 Then Exit Sub
ActiveWorkbook.Names.Add Name:="debut",
RefersToR1C1:=d ' nomme la cellule pour autre
traitement
f = Evaluate("=fin.mois(debut, 0)"
'calcule la fin du mois

' ====va chercher le premier
nom de la liste
For Each c In Range("listenoms")
' If c.Value = "" Then GoTo Suite ' c
est le nom
If c <> "" Then ' c est le nom
c.Activate
G = c.Offset(0, 2).Value '
G bureau concerné
' If c <> "" Then
ActiveCell.Offset(rowOffset:=0,
columnOffset:=3).Activate
Sheets("donnees").Range("H12").Select
Selection.AutoFilter Field:=7,
Criteria1:="=" & G
Selection.AutoFilter Field:=8,
Criteria1:="=" &
c
Selection.AutoFilter Field:,
Criteria1:=">="
& d, Operator:=xlAnd _
, Criteria2:="<=" & f
Range("resultat1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("stats").Select
Selection.PasteSpecial
Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Next c
Range("C10").Select
Selection.Copy
End With
'Suite:
Endif
CopieResultat
End Sub



Sub CopieResultat()
' macro lancée aprés éxécution sub resultat
'
Application.Goto Reference:="Plage"
Selection.Copy
' DateDoc = Range("e9").Value
DateDoc = Range("e9")
If DateDoc = 0 Then Exit Sub
For Each P In Range("plageannee")
' If P.Value = "" Then Exit Sub
If P = "" Then Exit Sub
If P = DateDoc Then
P.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Range("F7").Select
Application.CutCopyMode = False
End If
Next P
End Sub

-----Message d'origine-----
Bonsoir à toutes est tous,
je voudrai votre avis éclairé sur ces deux macros
qui tournent impecc sur ma base
Trouvez vous des erreurs à corriger ? des modifs
pour simplifier ? ou autre chose...
votre avis sera de toute manière très apprécie

merci et bonne soirée

======================== ========================= ========
===============


Option Private Module

Sub resultat()
' Macro enregistrée le 17/08/2004 par MP
Application.ScreenUpdating = False
With Sheets("stats")
Range("Tri_Noms").Select
Selection.Sort Key1:=Range("I10"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Range("b10").Select
d = Range("debutmois").Value
If d = 0 Then Exit Sub
ActiveWorkbook.Names.Add Name:="debut",
RefersToR1C1:=d ' nomme la cellule pour autre
traitement
f = Evaluate("=fin.mois(debut, 0)"
'calcule la fin du mois

' ====va chercher le premier
nom de la liste
For Each c In Range("listenoms")
If c.Value = "" Then GoTo Suite ' c
est le nom
c.Activate
G = c.Offset(0, 2).Value '
G bureau concerné
If c <> "" Then
ActiveCell.Offset(rowOffset:=0,
columnOffset:=3).Activate
Sheets("donnees").Select
Range("H12").Select
Selection.AutoFilter Field:=7,
Criteria1:="=" & G
Selection.AutoFilter Field:=8,
Criteria1:="=" &

c
Selection.AutoFilter Field:,
Criteria1:=">="

& d, Operator:=xlAnd _
, Criteria2:="<=" & f
Range("resultat1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("stats").Select
Selection.PasteSpecial
Paste:=xlValues,

Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Next c
Range("C10").Select
Selection.Copy
End With
Suite:
CopieResultat
End Sub



Sub CopieResultat()
' macro lancée aprés éxécution sub resultat
'
Application.Goto Reference:="Plage"
Selection.Copy
DateDoc = Range("e9").Value
If DateDoc = 0 Then Exit Sub
For Each P In Range("plageannee")
If P.Value = "" Then Exit Sub
If P = DateDoc Then
P.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Range("F7").Select
Application.CutCopyMode = False
End If
Next P
End Sub

--
merci d'éclairer ma lanterne.
(un jour, serai Calife à la Place du Calife...)

.



Avatar
Michel.P
bonsoir Yann
merci pour les conseils et la correction

bonne soirée.

a tenté de
faire fumer son clavier pour :
Salur MV,
Il y a beaucoup de select et selection et de Value
(donnée par défaut pour les objets range)...
Evite les goto...

Yann


--
merci d'éclairer ma lanterne.
(un jour, serai Calife à la Place du Calife...)