Mise à jour macro

22depart.xlsm (17.82 Ko)

Bonjour,

Je suis sur une macro pour Excel 97-2003.

J'aimerais qu'elle fonctionne sur Excel 2010.

Quelles modifications à apporter?

Ci-joint fichier explicatif.

Merci d'avance.

Feever

Bonjour,

As-tu simplement essayé de mettre un x aux extensions de fichier en .xls pour les passer en .xlsx ?

exemple :

Set co = Workbooks("Départ.xls") 'définit la variable co
Set cc = Workbooks("terminus.xls")
Set co = Workbooks("Départ.xlsx") 'définit la variable co
Set cc = Workbooks("terminus.xlsx")

Car dans le reste du code, rien ne me choque plus que ça. En général, à part macro un peu spécial, le portage vers une version plus récente se fait bien, c'est dans le sens inverse où c'est plus compliqué car toutes les formules des versions 2007/2010 n'existaient pas forcement et donc il faut bidouiller.

Cordialement,

Merci pour ta réponse. J'ai fait cette manipulation, mais rien !

Feever

Tes fichiers sont enregistrés sous quel extension ? xls ou xlsx ?

Sinon joint un fichier départ et un fichier terminus avec la macro qui fonctionnait que l'on puisse faire des tests sous 2010.

Cordialement,

22depart.zip (11.07 Ko)

Je t'envoie les 2 fichiers qui fonctionnent.

Dans la feuille Départ, il y a même une macro sélective . C'est bien, dommage que ça ne marche pas sur 2010 !

A bientôt.

29terminus.zip (3.80 Ko)

Alors déjà :

Dans ton code le fichier s'appelle "terminus.xls" allrs que le vrai fichier s'appelle "Terminus.xls" avec une majuscule

Une fois ceci corrigé, le code fonctionne très bien sous 2010 du moment que les deux fichiers sont ouverts.

Cordialement,

J'ai rectifié la majuscule, mais ça ne marche toujours pas !

J'ai tapé les 3 codes xls, xlsm et xlsx, sans succès !

Amicalement.

Feever

Tu avais bien les deux fichiers d'ouvert en même temps ?

Enfin personnellement cela fonctionne chez moi en laissant en .xls

Désolé mais je ne vois pas de quoi cela peut venir en dehors de ça.

Les 2 fichiers sont bien ouverts; j'ai un message d'erreur : erreur d'exécution 9.

Quand tu lance le debug, ca bloque sur quelle ligne ?

C'est la première ligne

Set co = Workbooks("Départ.xls") 'définit la variable co

Essais ceci comme code :

Sub transfert()
Dim co As Workbook 'déclare la variable co (Classeur Origine)
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim oo As Worksheet 'déclare la variable oo (Onglet Origine)
Dim oc As Worksheet 'déclare la variable oc (Onglet Cible)
Dim d As Range 'déclare la variable d (Données)
Dim dest As Range 'déclare la variable dest (DESTination)

Set co = Workbooks("Départ.xlsm") 'définit la variable co
Set cc = Workbooks("Terminus.xls") 'définit la variable cc
Set oo = co.Sheets("Feuil1Depart") 'définit la variable oo
Set oc = cc.Sheets("Feuil1Terminus") 'définit la variable oc

With co 'prend en compte le classeur "Départ.xls"
    Set d = oo.Range("A1").CurrentRegion 'définit la variable d
    Set d = d.Offset(1, 0).Resize(d.Rows.Count - 1) 'redefinit la variable d (sans les étiquettes)
End With 'fin de la prise en compte du classeur "Départ.xls"

With cc 'prend en compte le classeur "terminus.xls"
    Set dest = oc.Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
End With 'fin de la prise en compte du classeur "terminus.xls"

d.Copy dest 'copie et colle les données

End Sub

Cordialement,

J'ai essayé ton code, maintenant le blocage se fait sur la deuxième ligne.

Joint ton vrai fichier Terminus stp, enfin celui avec lequel tu fais tes essais.

20depart.xlsm (18.20 Ko)

Je te joins les 2 fichiers.

21terminus.xlsx (9.18 Ko)

Voilà il suffisait de mettre les bonnes extensions pour les deux fichiers :

Sub transfert()
Dim co As Workbook 'déclare la variable co (Classeur Origine)
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim oo As Worksheet 'déclare la variable oo (Onglet Origine)
Dim oc As Worksheet 'déclare la variable oc (Onglet Cible)
Dim d As Range 'déclare la variable d (Données)
Dim dest As Range 'déclare la variable dest (DESTination)

Set co = Workbooks("Départ.xlsm") 'définit la variable co
Set cc = Workbooks("Terminus.xlsx") 'définit la variable cc
Set oo = co.Sheets("Feuil1Depart") 'définit la variable oo
Set oc = cc.Sheets("Feuil1Terminus") 'définit la variable oc

With co 'prend en compte le classeur "Départ.xls"
    Set d = oo.Range("A1").CurrentRegion 'définit la variable d
    Set d = d.Offset(1, 0).Resize(d.Rows.Count - 1) 'redefinit la variable d (sans les étiquettes)
End With 'fin de la prise en compte du classeur "Départ.xls"

With cc 'prend en compte le classeur "terminus.xls"
    Set dest = oc.Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
End With 'fin de la prise en compte du classeur "terminus.xls"

d.Copy dest 'copie et colle les données

End Sub

Cordialement,

C'est bien !

Je me sers de cette macro pour faire du stockage de devis dans un fichier Excel.

J'avais auparavant une version plus ancienne.

Encore une fois, merci.

Bonne soirée.

Feever

De rien,

Bonne soirée également.

Je ne trouve pas le bouton résolu!!

rsolu
Rechercher des sujets similaires à "mise jour macro"