[résolu] Supprimer des modules

Supprimer des modules [résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 10-04-2006 à 17:29:30    

Bonjour,
 
Je voudrais pouvoir supprimer tout le code contenu dans un classeur puis y exporté le code mis à jour contenu dans un fichier.
 
Le code :  
'avec mon projet vb
With ActiveWorkbook.VBProject
'pour chaque composant
  For Each comp In .vbcomponents
   ...
    Next  
  End With
 
Sur ma 1ere ligne lors de l'éxécution j'obtiens l'erreur 1004 : l'accés au programme par visual basic n'est pas fiable.
 
Je ne comprend pas pourquoi j'ai cette erreur.
Merci de votre aide


Message édité par lhonolulu le 12-04-2006 à 09:54:11
Reply

Marsh Posté le 10-04-2006 à 17:29:30   

Reply

Marsh Posté le 10-04-2006 à 18:40:47    

Salut lhonolulu,
 
N'as tu pas meilleur temps de tansferer les données plutôt que les modules ?
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 11-04-2006 à 09:50:13    

Le truc c'est qu'il va y avoir des modules qui vont se rajouter au fur e à mesure. Imaginons que pour l'instant  j'ai 10 modules. Dans deux mois je peux très bien en avoir 20. Donc je devrais bien transfèrer ces 10 nouveaux modules.
Mais je ne comprends pas très bien ce que tu appelles : transfèrer les données

Reply

Marsh Posté le 11-04-2006 à 12:12:57    

Salut lhonolulu,
 
Transférer les données je veux dire par exemple copier les feuilles excel contenant surement des données déjà saisies vers un classeur contenant tous les bons modules. Chose que tu pourras facilement automatiser avec excel.  
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 11-04-2006 à 12:17:07    

Les modules ne sont pas contenu dans les feuilles excel.
Et de tt facon, je ne dois pas toucher au contenu des feuilles.  
Je dois uniquement mettre à jour le code.

Reply

Marsh Posté le 11-04-2006 à 17:15:22    

lhonolulu a écrit :

Les modules ne sont pas contenu dans les feuilles excel.
Et de tt facon, je ne dois pas toucher au contenu des feuilles.  
Je dois uniquement mettre à jour le code.


Bon ben du coup j'ai cherché un peu, j'ai réussi à te faire ces 2 macros :

Code :
  1. Sub SupprimeModule()
  2. 'Macro de suppression de l'intégralité des modules de code d'un classeur défini
  3. 'le dit classeur étant ouvert
  4. Dim Wk As Workbook
  5. Set Wk = Workbooks("Classeur1.xls" )
  6. Dim i As Integer
  7. For i = Wk.VBProject.VBComponents.Count To 1 Step -1
  8.     If Wk.VBProject.VBComponents.Item(i).Type = 1 Then
  9.         Wk.VBProject.VBComponents.Remove Wk.VBProject.VBComponents.Item(i)
  10.     End If
  11. Next i
  12. End Sub


Code :
  1. Sub CopieCode()
  2. 'Macro d'exportation et importation des modules de code
  3. 'Item des vb component vont de 1 à count
  4. 'Declaration des variables
  5. 'les 2 classeurs doivent être ouvert
  6. Dim WkO As Workbook  'classeur contenant les codes
  7. Dim WkD As Workbook  'classeur de destination
  8. Set WkO = ThisWorkbook
  9. Set WkD = Workbooks("Classeur1.xls" )
  10. Dim i As Integer
  11. Dim chemin As String
  12. chemin = "c:\"
  13. For i = 1 To WkO.VBProject.VBComponents.Count
  14.     If WkO.VBProject.VBComponents.Item(i).Type = 1 Then
  15.     'si le composant est un module de code
  16.         'j'exporte ce composant
  17.         Dim nom As String
  18.         nom = WkO.VBProject.VBComponents.Item(i).Name
  19.         WkO.VBProject.VBComponents.Item(i).Export chemin & nom & ".bas"
  20.         'je l'importe dans le classeur destination
  21.         WkD.VBProject.VBComponents.Import chemin & nom & ".bas"
  22.         WkD.VBProject.VBComponents.Item(WkD.VBProject.VBComponents.Count).Name = nom
  23.         'je supprime le fichier créé par l'exportation
  24.         Kill chemin & nom & ".bas"
  25.     End If
  26. Next i
  27. End Sub

Bon courage à toi


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 11-04-2006 à 17:29:07    

Merci de ton aide, mais comme je l'ai di dans le 1er post le :
"Wk.VBProject.VBComponents" ou "With ActiveWorkbook.VBProject" me provoque une erreur "l'accés au programme par visual basic n'est pas fiable."  
C'est aumoment où je lui dide travailler sur le projet Vb (VBProject) qu'il me met l'erreur.
why ? i don't know

Reply

Marsh Posté le 11-04-2006 à 17:33:11    

Le message de fiabilité du projet VB est lié aux options de sécurité d'Excel
Suivant ta version de logiciel tu auras des options un peu différentes mais si tu vas dans Outils/Macro/sécurité et que tu passes en revue les onglets, tu trouveras peut-être des cases à cocher permettant de signifier à Excel que les projets VB sont réputés fiables.
 
Si tu n'as pas ces options, ça risque de passer par une modif de la base de registre.

Reply

Marsh Posté le 11-04-2006 à 17:35:10    

un tit soucis de références peut être :)
 
As tu bien cette référence :Microsoft Visual Basic For applications Extensibility 5.3 (5.3 c'est ce que j'ai sous excel 2002) ?
 
Sinon le classeur de destination a-t-il un protection sur les macro ? Une signature sur l'un ou l'autre des projets ?
 
Pour info la listes de mes autres références :OLE Automation , Microsoft office 10 object library, microsoft excel 10 object libray, visual basic for applications.
 
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 11-04-2006 à 17:44:11    

Aucun blocage, ni signature dans le fichier.
J'ai les même référence que toi, la seule différence c'est que je suis sous Office 2003. peut être cette version d'office est plus capricieuse que la 2002.  
merci de ton aide je vais continuer à chercher car je dois impérativement pouvoir le faire

Reply

Marsh Posté le 11-04-2006 à 17:44:11   

Reply

Marsh Posté le 11-04-2006 à 17:48:00    

Bon je viens de tester avec des classeur protégés par mot de passe, avec des projet signés, tant que la protection est enlevée le code que j'ai mis marche. Pareil en niveau de sécurité élévé avec signature du projet.
 
Je n'arrives pas à reprodruire ton erreur...
edit : c'est peut être bien un caprice de 2003 ;)


Message édité par watashi le 11-04-2006 à 17:49:02

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 12-04-2006 à 09:20:06    

lhonolulu, qu'en est-il de ma réponse ? As-tu vérifié ?

Reply

Marsh Posté le 12-04-2006 à 09:53:34    

Je viens d'esseyer ta solution tegu et ca marche.
Dans la partie sécurité des macro j'ai un onglet "éditeurs approuvés".
Dans cet onglet j'ai coché "faire confiance au projet Visual Basic".
Le code se déroule sans erreur maintenant.
 
Donc merci à toi et à watashi

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed