Affectation macro

Résolu/Fermé
45maxi33 Messages postés 5 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 25 mai 2010 - 17 févr. 2010 à 11:00
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 24 févr. 2010 à 13:28
Bonjour le Forum;

J'ai une question à laquelle je n'ai pas trouvé réponse malgrés de nombreuses recherches, peut-être pourriez vous m'aider?

J'ai un fichier excel 2003 avec 4 onglets, dans ce fichier une macro me copie l'un des onglets et m'enregistre ce dernier dans un dossier avec un nom propre.

Le problème : Dans cette onglet se trouve une image à laquelle j'ai affecter une macro qui fonctionne dans le fichier d'origine, mais cette macro ne fonctionne plus aprés le copiage de l'onglet. Pourtant la macro est située dans l'onglet ...

Message d'erreur "400" ...

Voila, vous remerciant d'avance du coup de main.

A plus.
A voir également:

9 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
17 févr. 2010 à 14:48
c'est normal le fichier contenant la photo a été copié avec un lien vers une macro qui n'existe pas.

seul le nom de la macro a suivi.
il faut que tu rajoutes manuellement le code associé à cette photo.
c'est le plus simple.
ensuite tout rentrera dans l'ordre.
0
45maxi33 Messages postés 5 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 25 mai 2010
17 févr. 2010 à 17:39
Salut Bidouileu;

Merci pour ta réponse
Mais j'aimerai justement garder ce lien entre ma macro et cette "photo" (qui n'est pas vraiment une photo, mais plutot une image), afin de ne pas devoir à chaque fois réaffecter ma macro.
Tu as une idée?
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
17 févr. 2010 à 21:59
une astuce serait d'exporter ton module
puis de l'importer dans le nouveau fichier.

le faire en automatique? je ne l'ai jamais fait et je ne sais pas si c'est faisable.
A+
0
45maxi33 Messages postés 5 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 25 mai 2010
23 févr. 2010 à 09:01
Merci pour l'astuce je vais faire des recherches....

A +
0

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

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
23 févr. 2010 à 09:18
Salut,
Il est possible de manipuler l'éditeur de macro par une macro. J'ai lu ça sur ce site : https://silkyroad.developpez.com/VBA/VisualBasicEditor/

Voici un exemple de code qui constitue une bonne piste pour toit : Créer un nouveau module, le renommer et y insérer une macro :
!!! attention, important : Nécéssite d'activer la référence "Visual basic For Application Extensibility 5.3" !!!!
[Dans l'éditeur VBA : Outils/références cocher Microsoft Visual Basic For Application Extensibility 5.3]

Code (trouvé dans la source citée plus haut) : [Je précise que ce code ne fonctionne pas à mon taf, mais c'est peut être juste un souci de version d'Excel]

Sub creationModule()
    'Nécéssite d'activer la référence
    '"Visual basic For Application Extensibility 5.3"
    '
    Dim Wb As Workbook
    Dim VBComp As VBComponent
    Dim X As Integer
    
    'Définit le classeur cible
    Set Wb = Workbooks("Classeur1.xls")
    
    'Ajoute un module standard dans le classeur
    Set VBComp = Wb.VBProject.VBComponents.Add(1)
    'Renomme le module
    VBComp.Name = "NouveauModule"
    
    'Ajoute une macro dans le module
    With VBComp.CodeModule
        X = .CountOfLines
        .InsertLines X + 1, "Sub laMacro()"
        .InsertLines X + 2, "Range(""A1"").Value = ""Coucou"""
        .InsertLines X + 3, "End Sub"
    End With
End Sub
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
23 févr. 2010 à 16:12
Je l'avais lu aussi ; )
mais je ne l'ai pas testé alors je n'ai rien dit.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
23 févr. 2010 à 16:29
Lut Bidouilleu,
Je l'ai testé et il m'indique :
"erreur d'exécution 1004" "L'accès au programme par Visual Basic n'est pas fiable"
sur la ligne :
Set VBComp = Wb.VBProject.VBComponents.Add(1)

Je vais me renseigner car il n'y a pas de raison que ce code ne fonctionne pas étant donné la qualité du programmeur...

EDIT : Bon ça fonctionne sous 2003. Pour que cela tourne il faut :
1- avoir coché l'option (dans l'éditeur Visual Basic : Outils/Références) Microsoft Visual Basic for applications Extensibility 5.3
2- Dans la sécurité des macros (Excel : Outils/Options onglet sécurité, cliquer sur "sécurité des macros") onglet "Editeurs approuvés", cocher l'option : "faire confiance aux projets visual basic"

Après ne reste qu'à adapter le code en remplaçant la procédure. Cela reste effectivement fort accessible.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
24 févr. 2010 à 09:04
Salut pijaku,

C'est très bien! je ne doutais pas des qualités de SilkyRoad ni des tiennes d'ailleurs, mais du comportement
avec les liens, où avec les bibliothèques.
pour un module "simple" je comprends bien qu'il n'y aura pas de problème.
De toutes manières, toi tu connais la musique .... ; ) je me fais pas de soucis.
A+
R
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751 > Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012
24 févr. 2010 à 09:18
'Lut,
Etant auto didacte en VBA, ce que je connais c'est ce que j'ai lu. Donc merci du compliment...
Je pense être simplement un "bidouilleur"... Comme en musique d'ailleurs!!
Passe une bonne journée et à un de ces 4.
F
0
45maxi33 Messages postés 5 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 25 mai 2010
24 févr. 2010 à 09:38
Merci beaucoup.
Je vais regarder tout ça à tête reposée.
Je vous tiendrais au courant.
Bonne journée et encore merci.
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
24 févr. 2010 à 13:28
Bonjour tous,
Une solution qui serait, à mon sens, plus simple ce serait de rendre la macro valable sans objet spécifique, par exemple mettre..
ActiveSheet au lieu de Sheets("LeNom"), idem pour les autres sélection nommées.
Et ensuite soit copier la macros dans le classeur Perso, soit dans les macros complémentaires.
A+
0