Migration macro Excel 2003-->2010 pb selection.autofilter
Fermé
Pg70
Messages postés
3
Date d'inscription
vendredi 26 mai 2017
Statut
Membre
Dernière intervention
26 mai 2017
-
26 mai 2017 à 11:08
Pg70 Messages postés 3 Date d'inscription vendredi 26 mai 2017 Statut Membre Dernière intervention 26 mai 2017 - 26 mai 2017 à 16:32
Pg70 Messages postés 3 Date d'inscription vendredi 26 mai 2017 Statut Membre Dernière intervention 26 mai 2017 - 26 mai 2017 à 16:32
A voir également:
- Migration macro Excel 2003-->2010 pb selection.autofilter
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Clé activation office 2010 gratuit - Télécharger - Sécurité
3 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
26 mai 2017 à 11:32
26 mai 2017 à 11:32
Bonjour,
Cette syntaxe existe toujours, la macro ne fait pas que s'arrêter, elle donne aussi un message d'erreur.
Par contre, les méthodes employées dans les lignes précédentes sont vivement déconseillées (même sous 2003).
Cette syntaxe existe toujours, la macro ne fait pas que s'arrêter, elle donne aussi un message d'erreur.
Par contre, les méthodes employées dans les lignes précédentes sont vivement déconseillées (même sous 2003).
Pg70
Messages postés
3
Date d'inscription
vendredi 26 mai 2017
Statut
Membre
Dernière intervention
26 mai 2017
26 mai 2017 à 12:23
26 mai 2017 à 12:23
Il s'agit d'un stagiaire qui a écrit cette macro il y a déjà une dizaine d'années.
Le code n'est sans doute pas super, mais je ne peux pas juger, je ne connais pas assez.
Effectivement, la macro s'arrête avec un message d'erreur, mais je ne sais pas comment corriger la ligne pour qu'il n'y ai plus le message d'erreur. La methode Autofilter de la classe Range a échoué
Quel est le problème en fait ?
Le code n'est sans doute pas super, mais je ne peux pas juger, je ne connais pas assez.
Effectivement, la macro s'arrête avec un message d'erreur, mais je ne sais pas comment corriger la ligne pour qu'il n'y ai plus le message d'erreur. La methode Autofilter de la classe Range a échoué
Quel est le problème en fait ?
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
26 mai 2017 à 12:31
26 mai 2017 à 12:31
Le problème c'est que sans la totalité du code, il est impossible de donner une réponse et qu'avec le code c'est parfois insuffisant, l'idéal est de disposer du fichier.
Pg70
Messages postés
3
Date d'inscription
vendredi 26 mai 2017
Statut
Membre
Dernière intervention
26 mai 2017
26 mai 2017 à 16:32
26 mai 2017 à 16:32
Si la fonction existe toujours, alors pourquoi la macro fonctionne encore sous Excel 2003 (je viens de vérifier, elle marche), et quand j'ouvre le même fichier sous excel 2010, la macro me donne le message d'erreur ?
Voici la totalité du code avec en gras la ligne où cela plante:
Encore merci pour votre aide
Voici la totalité du code avec en gras la ligne où cela plante:
Sub Archive()
'
' Macro enregistrée le 30/01/01 par Damien Phulpin
'
Dim L
Sheets("Saisie").Select
Range("A5:C30").Select
Selection.Copy
Sheets("Archive").Select
Range("A4").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Activate
Wend
L = ActiveCell.Row
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("Saisie").Select
Range("E5:F30").Select
Selection.Copy
Sheets("Archive").Select
Cells(L, 4).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A4").Select
Sheets("Saisie").Select
Range("A5:D30").Select
Selection.ClearContents
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Range("A5").Select
End Sub
Sub SynthéseJour()
'
' Macro enregistrée le 30/01/01 , modifée le 01/07/09
'
Dim Machine, Famille, Arret, Equippe, Duree
Dim Jour1, Jour2, NLm, NCm, NLf, NCf, NLe, NCe, NC
Dim Jr1, Ms1, An1, Jr2, Ms2, An2 As String
Dim Cfin, CelluleFin, CelluleDebut, CD, CF, Fam As String
Dim PctgArret, Jtt, Jd, Jf
Dim i
Jr1 = InputBox("Jour début de calcul ?", "SUIVI ARRETS DPB PREPARATION", , 200)
Ms1 = InputBox("Mois début de calcul ?", "SUIVI ARRETS DPB PREPARATION", , 200)
An1 = InputBox("Année début de calcul ?", "SUIVI ARRETS DPB PREPARATION", , 200)
Jr2 = InputBox("Jour fin de calcul ?", "SUIVI ARRETS DPB PREPARATION", , 200)
Ms2 = InputBox("Mois fin de calcul ?", "SUIVI ARRETS DPB PREPARATION", , 200)
An2 = InputBox("Année fin de calcul ?", "SUIVI ARRETS DPB PREPARATION", , 200)
Sheets("Archive").Select
Range("A2").Select
ActiveCell.Value = Ms1 + "/" + Jr1 + "/" + An1
Jour1 = ActiveCell.Value
ActiveCell.Value = ">=" + Jr1 + "/" + Ms1 + "/" + An1
Range("B2").Select
ActiveCell.Value = Ms2 + "/" + Jr2 + "/" + An2
Jour2 = ActiveCell.Value
ActiveCell.Value = "<=" + Jr2 + "/" + Ms2 + "/" + An2
Range("E5").Select
CelluleDebut = ActiveCell.Address
Range("D4").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Activate
Wend
ActiveCell.Offset(0, 1).Activate
CelluleFin = ActiveCell.Address
CF = ActiveCell.Address
Range("A4").Select
CD = ActiveCell.Address
'''''''''''''''' boucle 1: synthese par machine et famille
Sheets("Synthése").Select
Range("C6").Select
Sheets("BD").Select
Range("E2").Select
NCm = 5
NCf = 7
While ActiveCell.Value <> ""
Machine = ActiveCell.Value
NLm = ActiveCell.Row
Range("G2").Select
While ActiveCell.Value <> ""
Famille = ActiveCell.Value
NLf = ActiveCell.Row
Range("J2").Select
ActiveCell.Value = Machine
Range("K2").Select
ActiveCell.Value = Famille
Range("L2").Select
Arret = ActiveCell.Value
Sheets("Archive").Select
Range("D2").Select
ActiveCell.Value = Arret
DoEvents
Range(CD, CF).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("A1:E2"), Unique:=False
Range("E3").Select
ActiveCell.Formula = "=SUBTOTAL(9,E5:" + CF + ")"
Selection.Copy
Sheets("Synthése").Select
Selection.PasteSpecial Paste:=xlValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.Offset(0, 1).Activate
Sheets("BD").Select
Cells(NLf, NCf).Select
ActiveCell.Offset(1, 0).Activate
Wend
Sheets("Archive").Select
ActiveSheet.ShowAllData
Sheets("Synthése").Select
ActiveCell.Offset(1, -10).Activate
Sheets("BD").Select
Cells(NLm, NCm).Select
ActiveCell.Offset(1, 0).Activate
Wend
Sheets("Synthése").Select
Range("I1").Select
ActiveCell.Value = Jour1
Range("L1").Select
ActiveCell.Value = Jour2
'''''''''''''''' boucle 2: synthese par equipe
Sheets("Synthése").Select
Range("C21").Select
Sheets("Archive").Select
Range("A2:E2").Select
Selection.ClearContents
Sheets("BD").Select
Range("E13").Select
NCe = 5
While ActiveCell.Value <> ""
Equippe = ActiveCell.Value
NLe = ActiveCell.Row
Range("G2").Select
While ActiveCell.Value <> ""
Sheets("BD").Select
Fam = ActiveCell.Text
NLf = ActiveCell.Row
If Fam = 4 Then
GoTo Line10 ' Sauf les arrêts type "session"
End If
If Fam = 5 Then
GoTo Line10 ' Sauf les arrêts type "silo"
End If
If Fam = 9 Then
GoTo Line10 ' Sauf les arrêts type "autre"
End If
If Fam = 0 Then
GoTo Line10 ' Sauf les arrêts type "masqué"
End If
Sheets("Archive").Select
Range("A2").Select
ActiveCell.Value = ">=" + Jr1 + "/" + Ms1 + "/" + An1
Range("B2").Select
ActiveCell.Value = "<=" + Jr2 + "/" + Ms2 + "/" + An2
Range("C2").Select
ActiveCell.Value = Equippe
Range("D2").Select
ActiveCell.Value = "?" + Fam
Range(CD, CF).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"A1:E2"), CopyToRange:=Range("G4"), Unique:=False
DoEvents
Range("G5").Select
Jd = ActiveCell.Value
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Activate
Wend
ActiveCell.Offset(-1, 0).Activate
Jf = ActiveCell.Value
If Jd = "" Then
PctgArret = 0
Else
Range(CF).Select
ActiveCell.Offset(0, 6).Activate
CelluleFin = ActiveCell.Address
Range("K3").Select
ActiveCell.Formula = "=SUBTOTAL(9,K5:" + CelluleFin + ")"
Arret = ActiveCell.Value
Jtt = Jf - Jd + 1
PctgArret = Arret / (Jtt * 24 * 9)
End If
Columns("G:K").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Sheets("Synthése").Select
ActiveCell.Value = PctgArret
ActiveCell.Offset(0, 1).Activate
Line10:
Sheets("BD").Select
Cells(NLf, NCf).Select
ActiveCell.Offset(1, 0).Activate
Wend
Sheets("Synthése").Select
ActiveCell.Offset(1, -6).Activate
Sheets("BD").Select
Cells(NLe, NCe).Select
ActiveCell.Offset(1, 0).Activate
Wend
'''''''''''''''' boucle 3: top 10
Sheets("synthése").Select
Range("A42:L54").Select
Selection.ClearContents
Range("A42").Select
Sheets("BD").Select
Range("D1").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Activate
Wend
Cfin = ActiveCell.Address
Range("A1:" + Cfin + "").Select
Selection.AutoFilter
Sheets("Archive").Select
Range("A2:E2").Select
Selection.ClearContents
Range("A2").Select
ActiveCell.Value = ">=" + Jr1 + "/" + Ms1 + "/" + An1
Range("B2").Select
ActiveCell.Value = "<=" + Jr2 + "/" + Ms2 + "/" + An2
Range("D2").Select
ActiveCell.Value = "<>?9" ' Sauf les arrêts type "autre"
Range("E2").Select
ActiveCell.Value = "<>?4" ' Sauf les arrêts type "session"
Range("F2").Select
ActiveCell.Value = "<>?5" ' Sauf les arrêts type "silo"
Range("G2").Select
ActiveCell.Value = "<>?0" ' Sauf les arrêts type "masqué"
Range("E1").Select
ActiveCell.Value = "MF"
Range("F1").Select
ActiveCell.Value = "MF"
Range("G1").Select
ActiveCell.Value = "MF"
Range(CD, CF).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"A1:G2"), CopyToRange:=Range("F4"), Unique:=False
Range(CF).Select
ActiveCell.Offset(0, 5).Activate
CelluleFin = ActiveCell.Address
Range("F4", CelluleFin).Select
Selection.AutoFilter Field:=5, Criteria1:="11", Operator:=xlTop10Items
Range("F4", CelluleFin).Select
Selection.Copy
Range("K4").Select
Selection.PasteSpecial Paste:=xlValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveSheet.ShowAllData
Range("O5").Select
i = 0
While ActiveCell.Value <> ""
If i = 13 Then
GoTo Line1
End If
DoEvents
Sheets("Archive").Select
Duree = ActiveCell.Value
ActiveCell.Offset(0, -2).Activate
Arret = ActiveCell.Value
ActiveCell.Offset(0, -1).Activate
Equippe = ActiveCell.Value
Sheets("BD").Select
Selection.AutoFilter Field:=1, Criteria1:=Arret
Range("B1", Cfin).Select
Selection.Copy
Range("M1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("M2").Select
Machine = ActiveCell.Value
Range("N2").Select
Famille = ActiveCell.Value
Range("O2").Select
Arret = ActiveCell.Value
Columns("M:O").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Sheets("synthése").Select
ActiveCell.Value = Machine
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Famille
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Arret
If Equippe = "V" Then
NCm = 4
End If
If Equippe = "R" Then
NCm = 5
End If
If Equippe = "J" Then
NCm = 6
End If
If Equippe = "O" Then
NCm = 7
End If
If Equippe = "B" Then
NCm = 8
End If
If Equippe = "VIO" Then
NCm = 9
End If
ActiveCell.Offset(0, NCm).Activate
ActiveCell.Value = Duree
NC = -NCm - 2
ActiveCell.Offset(1, NC).Activate
Sheets("Archive").Select
ActiveCell.Offset(1, 3).Activate
i = i + 1
Wend
Line1:
Sheets("BD").Select
Selection.AutoFilter
Range("J2:K2").Select
Selection.ClearContents
Range("A1").Select
Sheets("Archive").Select
Range("E3").Select
Selection.ClearContents
Range("A2:E2").Select
Selection.ClearContents
Range("A1").Select
Columns("F:O").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Sheets("Synthése").Select
Range("I1").Select
ActiveCell.Value = Jour1
Range("L1").Select
ActiveCell.Value = Jour2
Range("A42:N51").Select
Selection.Sort Key1:=Range("N42"), Order1:=xlDescending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
End Sub
Encore merci pour votre aide