Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1606 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [résolu] Supprimer des modules

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Supprimer des modules

n°1343363
lhonolulu
Posté le 10-04-2006 à 17:29:30  profilanswer
 

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
mood
Publicité
Posté le 10-04-2006 à 17:29:30  profilanswer
 

n°1343434
watashi
La démotivation : JAMAIS !
Posté le 10-04-2006 à 18:40:47  profilanswer
 

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 ;-)
n°1343809
lhonolulu
Posté le 11-04-2006 à 09:50:13  profilanswer
 

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

n°1343980
watashi
La démotivation : JAMAIS !
Posté le 11-04-2006 à 12:12:57  profilanswer
 

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 ;-)
n°1343983
lhonolulu
Posté le 11-04-2006 à 12:17:07  profilanswer
 

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.

n°1344315
watashi
La démotivation : JAMAIS !
Posté le 11-04-2006 à 17:15:22  profilanswer
 

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 ;-)
n°1344336
lhonolulu
Posté le 11-04-2006 à 17:29:07  profilanswer
 

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

n°1344340
tegu
Posté le 11-04-2006 à 17:33:11  profilanswer
 

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.

n°1344342
watashi
La démotivation : JAMAIS !
Posté le 11-04-2006 à 17:35:10  profilanswer
 

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 ;-)
n°1344350
lhonolulu
Posté le 11-04-2006 à 17:44:11  profilanswer
 

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

mood
Publicité
Posté le 11-04-2006 à 17:44:11  profilanswer
 

n°1344354
watashi
La démotivation : JAMAIS !
Posté le 11-04-2006 à 17:48:00  profilanswer
 

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 ;-)
n°1344721
tegu
Posté le 12-04-2006 à 09:20:06  profilanswer
 

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

n°1344756
lhonolulu
Posté le 12-04-2006 à 09:53:34  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [résolu] Supprimer des modules

 

Sujets relatifs
[Résolu] ViewState[ RESOLU ] structure boucle
resolu :donner la valeur d'une var de sess à un champ caché ds un form(résolu) [Java 3D] Comment centrer la vue sur des objets WaveFront
[RESOLU]Mon neurone va exploser[Résolu] typeid
(résolu) [Java 3D] Changer l'apparence d'objets WaveFront[résolu][C]Aide programmation somme de série numérique.
[résolu][PERL]variable bizzare[RESOLU] créer un tableau dynamique en php
Plus de sujets relatifs à : [résolu] Supprimer des modules


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR