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
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...)
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
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:="=" &
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...)
.
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:=False,
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:=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:
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:=False
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
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:="=" &
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...)
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
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:="=" &
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...)
.
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...)
bonsoir Yann
merci pour les conseils et la correction
bonne soirée.
anonymous@discussions.microsoft.com 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...)