Compatibilité excel 2007/2003 VBA

Résolu
scampy Messages postés 12 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 28 juillet 2013 - 6 déc. 2011 à 16:45
scampy Messages postés 12 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 28 juillet 2013 - 6 déc. 2011 à 18:19
Bonjour,

J'ai fait une petite macro VBA sous excel 2007 depuis mon PC qui permet de trier automatiquement une colonne et je voudrais pouvoir l'ouvrir sous excel 2003 qui est à mon bureau
Mais voilà j'obtiens le message :
erreur d'execution '438'
propriété ou méthode non gérée par cet objet

Pourriez-vous m'aider ?

Merci

Voici le code qui marche sous excel 2007 :

Private Sub Worksheet_Change(ByVal Target As Range)
Columns("A:A").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A2:A1000")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2011 à 17:32
Un autre "truc" tout bête, si vraiment nécessaire :
depuis ta machine Excel 2003 utilise l'enregistreur de macros ==>> fais ton tri ===>> regarde
Débarrasse ce code de son superflu (les select, etc...) de l'enregistreur.
Teste en lançant la macro. Elle marche ? ===>> bien ===>> tu mets ce code à la place du tien dans ton classeur Excel 2007. Il y fonctionnera aussi (et tu auras ainsi le même code chez toi et au bureau).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2011 à 16:49
Bonjour,

(et sans préjudice de la qualité du code) :
Je ne vois rien, dans ton code, qui ne serait parfaitement interprété par Excel 2003
Il te faut par contre, si tu veux ouvrir ton classeur 2007 sous 2003, en faire, depuis 2007, un enregistrement "dégradé" ===>>
Enregistrer sous ===>> type de fichiers ===>> versions 97 - 2003


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
scampy Messages postés 12 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 28 juillet 2013
6 déc. 2011 à 16:54
C'est ce que j'ai fait pour l'enregistrement dégradé, mais ça ne fonctionne pas

Merci qd même!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2011 à 16:58
Ah non ! Excuse-moi. J'avais survolé trop vite :
C'est la collection Sortfields, qui pose ici problème, car elle n'existe pas sur les version antérieures


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scampy Messages postés 12 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 28 juillet 2013
6 déc. 2011 à 17:00
Oui alors que faire ??
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2011 à 17:02
Oublie alors complètement l'utilisation de cette collection sortfields et applique uniquement la méthode sort de excel 2003, telle qu'exposée ICI (MSDN)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
scampy Messages postés 12 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 28 juillet 2013
6 déc. 2011 à 17:08
Je n'y comprends rien du tout excuse moi je suis trop débutante

Merci de ton aide je vais potasser un peu qd même
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2011 à 17:20
Ne sois pas effrayée pour si peu.
A quoi, dans ton appli, te sert la collection sortkeys (que tu vides, d'ailleurs, vois-je) ?
Pas à grand-chose, hein
Débarrasse-toi alors de cette utilisation et sers-toi directement de la méthode sort. Les arguments que tu utilises sont les mêmes sous 2003 et sous 2007.
Il te faudra simplement y préciser ta clé
Key1:=Range("A1")


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
scampy Messages postés 12 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 28 juillet 2013
6 déc. 2011 à 18:19
C'est bon j'ai réduit le code à sa portion congrue

Private Sub Worksheet_Change(ByVal Target As Range)
Range("A2:A1000").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub


et ça marche sur 2007 ; demain je verrai si ça marche aussi sur 2003

<merci pour ton aide précieuse et ta gentillesse.
0
Rejoignez-nous