Compatibilité excel 2007/2003 VBA [Résolu]

Signaler
Messages postés
12
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
28 juillet 2013
-
Messages postés
12
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
28 juillet 2013
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
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
Messages postés
12
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
28 juillet 2013

C'est ce que j'ai fait pour l'enregistrement dégradé, mais ça ne fonctionne pas

Merci qd même!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
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
Messages postés
12
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
28 juillet 2013

Oui alors que faire ??
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
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
Messages postés
12
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
28 juillet 2013

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
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
Messages postés
12
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
28 juillet 2013

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.