Le code VBAProject ne se ferme pas

Signaler
Messages postés
4
Date d'inscription
vendredi 10 novembre 2006
Statut
Membre
Dernière intervention
12 août 2008
-
Messages postés
4
Date d'inscription
vendredi 10 novembre 2006
Statut
Membre
Dernière intervention
12 août 2008
-
Bonjour.

J'ai développé un utilitaire avec VBA sous Excel 2007. Sans rentrer dans les détails, mon code passe en revue un ensemble de fichiers excel, en les ouvrant et en vérifiant leur conformité : nom d'onglet repondant a certains criteres, Entete de colonne formatee d'une certaine facon, etc ..... Tout se passe tres bien, sauf la fermeture des fichiers analysés. Les fichiers se ferment, mais le code VBA associé reste ouvert. Si on repete la macro plusieurs fois, on se retrouve avec le meme code VBAProjet ouvert plusieurs fois. Jusqu'a ce que viennent le message "Mémoire Insuffisante". Quelqu'un a t il une solution pour fermer le code associés d'un fichier excel lorsque celui ci reste ouvert ? Est ce un bug de Excel 2007 ?

Merci d'avance.

3 réponses

Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Bonjour,

Peux tu mette le code pourl'initialization de ta macro ainsi que le code termine process...
Merci 

S.L.B.

<hr />*********************************************************************************
<>
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonsoir,

Je pense que quelque chose n'est pas clair, lorsque tu dis : " Les fichiers se ferment, mais le code VBA associé reste ouvert. "
En effet, si tu ferme les fichiers, nécessairement le code VBA associé est aussi fermé. Ici, ce que tu dis n'est pas logique, en soit...

Je vois que deux possibilités :
1 / Le code VBA, agit dans la programmation dans VBProject... C'est à dire, qu'il y a du code VBA qui code dans VBE... (c'est possible !) C'est une programmation extrêmement spéciale, donc.
2 / Le code VBA ce charge dans PERSO.XLS, où quelque chose du genre...

Enfin, tout cela n'est pas en général très ordinaire. IL faudrait préciser ce point... A moins que, les fichiers ne soient pas vraiment fermés (ce qui me semble le + probable).

Dans l'absolu, il faudrait avoir le code "réplicateur" (s'il est assez court) et l'endroit où il se réplique, et le code que tu utilises pour ouvrir tes fichiers.

Amicalement,
Us.
Messages postés
4
Date d'inscription
vendredi 10 novembre 2006
Statut
Membre
Dernière intervention
12 août 2008

Bonjour et merci à ceux qui se penchent sur mon probleme.
Tout d'abord, je réponds à us_30 pour effacer les doutes. Il dit, je cite :

"Je pense que quelque chose n'est pas clair, lorsque tu dis : " Les fichiers se ferment, mais le code VBA associé reste ouvert. ". En effet, si tu ferme sles fichiers, nécessairement le code VBA associé est aussi fermé. Ici, ce que tu dis n'est pas logique, en soit..."

Oui, c'est vrai, ca ne parait pas logique, mais c'est ainsi que cela se passe. En plus, j'ai, sur mon lieu de travail un dualscreen, qui me permet d'avoir l'environnement VB d'un coté et le tableur de l'autre. Lors du déroulement de la macro, lorsque je laisse Application.ScreenUpdating = True , je vois clairement les fichiers s'ouvrir, puis se refermer, mais sur l'ecran VB, la branche VBAProject correpondante reste ouverte ....

Sur demande de lillith212 , et les autres qui pourraient creuser mon souci (qui je pense est lié a un bug Excel 2007), voici les bouts de code qui me permettent d'ouvrir et de fermer les fichiers sources en cours de programme :

Tout d'abord, la partie où je choisis les fichiers que je veux analyser :
<hr />Public Sub Demarrage()
Dim Classeur As Workbook




    Dim fd As FileDialog
    Dim fdfs As FileDialogFilters
    Dim fdf As FileDialogFilter
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    Dim Element As Variant





    With fd
   
      fd.InitialFileName = ActiveWorkbook.Path
      fd.Filters.Add "Fichiers Excel", "*.xls"





        If .Show = -1 Then





            For Each Element In .SelectedItems





                Verif (Element)





            Next Element
        Else
        End If
    End With







    Set fd = Nothing
End Sub










<hr />
Puis la procedure qui ouvre un fichier et l'analyse : (je mets le début et la fin, car le reste n'est qu'analyse et traitement) :





<hr />

Sub Verif(Element As String)
Dim Onglet As Worksheet
Dim Nom_Onglet As String
Dim Nom_Entete As String
Dim Classeur As Workbook
Dim Col As Integer
Dim RapportA As String
Dim RapportB As String
Dim RapportC As String
Dim Tmp As String
Dim NomFichierSortie As String
Dim iTmp, TailleRapport As Integer
Dim TableauZone() As Variant
Dim ZoneNommeeOk As Boolean



Dim Nom_Zone As String





Application.ScreenUpdating = False





Set Classeur = Workbooks.Open(Element, , True)

|
|
|Analyse du fichier ouvert ......
|
|

Classeur.Close SaveChanges:=False





Set Classeur = Nothing
Application.ScreenUpdating = True





End Sub





<hr />
Voila. C'est tout.

PS : J'ai testé mon code sur un Excel 2003, et tout fonctionne à merveille, ce qui me laisse vraiment penser qu'Excel 2007 à un bug ....