Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Plantage Excel lors de plusieurs addfromfile

4 réponses
Avatar
Greg
Bonjour,

j'ai un classeur excel avec une 16 feuilles et 9 modules. J'ai proc=E9d=E9=20
=E0 des modifications du code dans 13 feuilles et 6 modules et ajout=E9 3=20
feuilles.
Ayant plusieurs classeurs =E0 mettre =E0 jour avec la nouvelle version du=20
code, j'ai d=E9cid=E9 d=E9crire un nouveau module upgrade qui via une=20
fonction upgrade_v100_Vers_v110 qui va normalement faire tout ca!!!

Public Sub upgrade_v100_Vers_v110()
' Pour charger la r=E9f=E9rence manquante
Call ReferencesProjet
' Pour supprimer les feuilles en plus
Call supprimerfeuilles
' Ajouter les nouvelles feuilles
Call ajouterFeuilles
' importer les modules modifi=E9s (la suppression de l'ancien est=20
g=E9r=E9 dans l'import)
Call importerTousModules
' suppression du code associ=E9 =E0 chaque feuille
Call supprimerCodeToutesFeuilles
' import du code associ=E9 au feuille
Call importCodeToutesFeuilles
' maj de plusieurs cellules dans les feuilles
Call majFeuilles
End Sub

voila le principe de base que j'utilise. maintenant le code se d=E9roule=20
bien jusqu'au Call importCodeToutesFeuilles ou la j'ai un plantage=20
excel avec la fenetre qui me demande si je veux r=E9cup=E9rer mon travail=20
ou pas....

Public Sub importCodeToutesFeuilles()
Dim dossier_import As String

dossier_import =3D ThisWorkbook.Path & "\Fichiers v1.1.0\Fichiers =E0=20
importer\"
Call importerCodeFeuille("T=E2ches", dossier_import & "Feuil1 -=20
v1.1.0.txt")
Call importerCodeFeuille("Suivi conso", dossier_import & "Feuil2 -=20
v1.1.0.txt")
Call importerCodeFeuille("Synth=E8se", dossier_import & "Feuil3 -=20
v1.1.0.txt")
Call importerCodeFeuille("Ressources", dossier_import & "Feuil5 -=20
v1.1.0.txt")
Call importerCodeFeuille("Suivi RAE", dossier_import & "Feuil6 -=20
v1.1.0.txt")
Call importerCodeFeuille("Fiches de t=E2ches", dossier_import &=20
"Feuil7 - v1.1.0.txt")
Call importerCodeFeuille("Accueil", dossier_import & "Feuil10 -=20
v1.1.0.txt")
Call importerCodeFeuille("GPS", dossier_import & "Feuil12 -=20
v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod par sem", dossier_import &=20
"Feuil13 - v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod", dossier_import & "Feuil15=20
- v1.1.0.txt")
Call importerCodeFeuille("Gantt", dossier_import & "Feuil16 -=20
v1.1.0.txt")
Call importerCodeFeuille("Capacit=E9 Prod", dossier_import &=20
"Feuil17 - v1.1.0.txt")
Call importerCodeFeuille("Conso-RAE-Prod Par SSP", dossier_import=20
& "Feuil18 - v1.1.0.txt")
End Sub

Private Sub importerCodeFeuille(Nom_Feuille As String, Nom_Fichier As=20
String)
With=20
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).Co
deName).CodeModule
.AddFromFile Nom_Fichier
End With
End Sub

4 réponses

Avatar
MichDenis
| ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).CodeName).CodeModule
| .AddFromFile Nom_Fichier
| End With

Pour une raison que j'ignore... il est impossible de boucler
en utilisant " .AddFromFile Nom_Fichier". J'ai personnellement
fait plusieurs tentatives pour trouver une solution. Habituellement
au deuxième passe, Excel se plante et ferme.

J'ai adressé cette question sur le forum anglophone, et aucune
éminence grise n'a osé tenter une explication.

Conclusion: Si tu as 16 feuilles, il faut lancer 16 fois la procédure.
Si tu trouves la solution à ce bug, prière de nous révéler ta solution.





"Greg" a écrit dans le message de news:

Bonjour,

j'ai un classeur excel avec une 16 feuilles et 9 modules. J'ai procédé
à des modifications du code dans 13 feuilles et 6 modules et ajouté 3
feuilles.
Ayant plusieurs classeurs à mettre à jour avec la nouvelle version du
code, j'ai décidé décrire un nouveau module upgrade qui via une
fonction upgrade_v100_Vers_v110 qui va normalement faire tout ca!!!

Public Sub upgrade_v100_Vers_v110()
' Pour charger la référence manquante
Call ReferencesProjet
' Pour supprimer les feuilles en plus
Call supprimerfeuilles
' Ajouter les nouvelles feuilles
Call ajouterFeuilles
' importer les modules modifiés (la suppression de l'ancien est
géré dans l'import)
Call importerTousModules
' suppression du code associé à chaque feuille
Call supprimerCodeToutesFeuilles
' import du code associé au feuille
Call importCodeToutesFeuilles
' maj de plusieurs cellules dans les feuilles
Call majFeuilles
End Sub

voila le principe de base que j'utilise. maintenant le code se déroule
bien jusqu'au Call importCodeToutesFeuilles ou la j'ai un plantage
excel avec la fenetre qui me demande si je veux récupérer mon travail
ou pas....

Public Sub importCodeToutesFeuilles()
Dim dossier_import As String

dossier_import = ThisWorkbook.Path & "Fichiers v1.1.0Fichiers à
importer"
Call importerCodeFeuille("Tâches", dossier_import & "Feuil1 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi conso", dossier_import & "Feuil2 -
v1.1.0.txt")
Call importerCodeFeuille("Synthèse", dossier_import & "Feuil3 -
v1.1.0.txt")
Call importerCodeFeuille("Ressources", dossier_import & "Feuil5 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi RAE", dossier_import & "Feuil6 -
v1.1.0.txt")
Call importerCodeFeuille("Fiches de tâches", dossier_import &
"Feuil7 - v1.1.0.txt")
Call importerCodeFeuille("Accueil", dossier_import & "Feuil10 -
v1.1.0.txt")
Call importerCodeFeuille("GPS", dossier_import & "Feuil12 -
v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod par sem", dossier_import &
"Feuil13 - v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod", dossier_import & "Feuil15
- v1.1.0.txt")
Call importerCodeFeuille("Gantt", dossier_import & "Feuil16 -
v1.1.0.txt")
Call importerCodeFeuille("Capacité Prod", dossier_import &
"Feuil17 - v1.1.0.txt")
Call importerCodeFeuille("Conso-RAE-Prod Par SSP", dossier_import
& "Feuil18 - v1.1.0.txt")
End Sub

Private Sub importerCodeFeuille(Nom_Feuille As String, Nom_Fichier As
String)
With
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).Co
deName).CodeModule
.AddFromFile Nom_Fichier
End With
End Sub
Avatar
Greg
on peut déjà rassembler des infos sur ce problème ?
J'ai remarqué qu'il peut par exemple faire 2 addfromfile successifs...
Ce qui est bizarre c'est comme si le code était exécuté à la fin de la
macro et que tant que la macro n'est pas terminé il garde tout en
mémoire. (du coup quand on fait plusieurs addfromfile ca tilt...)
J'ai eu ce problème avec l'import de module, je faisais à suivre un
delete suivi d'un import. techniquement c'est bon sauf qu'excel ne me
supprimait pas tout de suite le module il importait en meme temps du
coup je me retrouvais avec un nom de module genre 'monmodule1'


| ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).Co deName).CodeModule
| .AddFromFile Nom_Fichier
| End With

Pour une raison que j'ignore... il est impossible de boucler
en utilisant " .AddFromFile Nom_Fichier". J'ai personnellement
fait plusieurs tentatives pour trouver une solution. Habituellement
au deuxième passe, Excel se plante et ferme.

J'ai adressé cette question sur le forum anglophone, et aucune
éminence grise n'a osé tenter une explication.

Conclusion: Si tu as 16 feuilles, il faut lancer 16 fois la procédure.
Si tu trouves la solution à ce bug, prière de nous révéler ta sol ution.





"Greg" a écrit dans le message de news:

Bonjour,

j'ai un classeur excel avec une 16 feuilles et 9 modules. J'ai procéd é
à des modifications du code dans 13 feuilles et 6 modules et ajouté 3
feuilles.
Ayant plusieurs classeurs à mettre à jour avec la nouvelle version du
code, j'ai décidé décrire un nouveau module upgrade qui via une
fonction upgrade_v100_Vers_v110 qui va normalement faire tout ca!!!

Public Sub upgrade_v100_Vers_v110()
' Pour charger la référence manquante
Call ReferencesProjet
' Pour supprimer les feuilles en plus
Call supprimerfeuilles
' Ajouter les nouvelles feuilles
Call ajouterFeuilles
' importer les modules modifiés (la suppression de l'ancien est
géré dans l'import)
Call importerTousModules
' suppression du code associé à chaque feuille
Call supprimerCodeToutesFeuilles
' import du code associé au feuille
Call importCodeToutesFeuilles
' maj de plusieurs cellules dans les feuilles
Call majFeuilles
End Sub

voila le principe de base que j'utilise. maintenant le code se déroule
bien jusqu'au Call importCodeToutesFeuilles ou la j'ai un plantage
excel avec la fenetre qui me demande si je veux récupérer mon travail
ou pas....

Public Sub importCodeToutesFeuilles()
Dim dossier_import As String

dossier_import = ThisWorkbook.Path & "Fichiers v1.1.0Fichiers à
importer"
Call importerCodeFeuille("Tâches", dossier_import & "Feuil1 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi conso", dossier_import & "Feuil2 -
v1.1.0.txt")
Call importerCodeFeuille("Synthèse", dossier_import & "Feuil3 -
v1.1.0.txt")
Call importerCodeFeuille("Ressources", dossier_import & "Feuil5 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi RAE", dossier_import & "Feuil6 -
v1.1.0.txt")
Call importerCodeFeuille("Fiches de tâches", dossier_import &
"Feuil7 - v1.1.0.txt")
Call importerCodeFeuille("Accueil", dossier_import & "Feuil10 -
v1.1.0.txt")
Call importerCodeFeuille("GPS", dossier_import & "Feuil12 -
v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod par sem", dossier_import &
"Feuil13 - v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod", dossier_import & "Feuil15
- v1.1.0.txt")
Call importerCodeFeuille("Gantt", dossier_import & "Feuil16 -
v1.1.0.txt")
Call importerCodeFeuille("Capacité Prod", dossier_import &
"Feuil17 - v1.1.0.txt")
Call importerCodeFeuille("Conso-RAE-Prod Par SSP", dossier_import
& "Feuil18 - v1.1.0.txt")
End Sub

Private Sub importerCodeFeuille(Nom_Feuille As String, Nom_Fichier As
String)
With
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).Co
deName).CodeModule
.AddFromFile Nom_Fichier
End With
End Sub


Avatar
Greg
Pour infos :
j'ai mis ca comme code :

With
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).CodeNa me).CodeModule
.AddFromFile Filename:=(nom_Fichier)
End With

et j'ai fait une MAJ d'office via Windows Update (Version d'excel :
Excel 2003 (11.8117.8107) SP2)

et ca marche...

On 29 jan, 13:40, "MichDenis" wrote:
| ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).Co deName).CodeModule
| .AddFromFile Nom_Fichier
| End With

Pour une raison que j'ignore... il est impossible de boucler
en utilisant " .AddFromFile Nom_Fichier". J'ai personnellement
fait plusieurs tentatives pour trouver une solution. Habituellement
au deuxième passe, Excel se plante et ferme.

J'ai adressé cette question sur le forum anglophone, et aucune
éminence grise n'a osé tenter une explication.

Conclusion: Si tu as 16 feuilles, il faut lancer 16 fois la procédure.
Si tu trouves la solution à ce bug, prière de nous révéler ta sol ution.

"Greg" a écrit dans le message de news:

Bonjour,

j'ai un classeur excel avec une 16 feuilles et 9 modules. J'ai procéd é
à des modifications du code dans 13 feuilles et 6 modules et ajouté 3
feuilles.
Ayant plusieurs classeurs à mettre à jour avec la nouvelle version du
code, j'ai décidé décrire un nouveau module upgrade qui via une
fonction upgrade_v100_Vers_v110 qui va normalement faire tout ca!!!

Public Sub upgrade_v100_Vers_v110()
' Pour charger la référence manquante
Call ReferencesProjet
' Pour supprimer les feuilles en plus
Call supprimerfeuilles
' Ajouter les nouvelles feuilles
Call ajouterFeuilles
' importer les modules modifiés (la suppression de l'ancien est
géré dans l'import)
Call importerTousModules
' suppression du code associé à chaque feuille
Call supprimerCodeToutesFeuilles
' import du code associé au feuille
Call importCodeToutesFeuilles
' maj de plusieurs cellules dans les feuilles
Call majFeuilles
End Sub

voila le principe de base que j'utilise. maintenant le code se déroule
bien jusqu'au Call importCodeToutesFeuilles ou la j'ai un plantage
excel avec la fenetre qui me demande si je veux récupérer mon travail
ou pas....

Public Sub importCodeToutesFeuilles()
Dim dossier_import As String

dossier_import = ThisWorkbook.Path & "Fichiers v1.1.0Fichiers à
importer"
Call importerCodeFeuille("Tâches", dossier_import & "Feuil1 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi conso", dossier_import & "Feuil2 -
v1.1.0.txt")
Call importerCodeFeuille("Synthèse", dossier_import & "Feuil3 -
v1.1.0.txt")
Call importerCodeFeuille("Ressources", dossier_import & "Feuil5 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi RAE", dossier_import & "Feuil6 -
v1.1.0.txt")
Call importerCodeFeuille("Fiches de tâches", dossier_import &
"Feuil7 - v1.1.0.txt")
Call importerCodeFeuille("Accueil", dossier_import & "Feuil10 -
v1.1.0.txt")
Call importerCodeFeuille("GPS", dossier_import & "Feuil12 -
v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod par sem", dossier_import &
"Feuil13 - v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod", dossier_import & "Feuil15
- v1.1.0.txt")
Call importerCodeFeuille("Gantt", dossier_import & "Feuil16 -
v1.1.0.txt")
Call importerCodeFeuille("Capacité Prod", dossier_import &
"Feuil17 - v1.1.0.txt")
Call importerCodeFeuille("Conso-RAE-Prod Par SSP", dossier_import
& "Feuil18 - v1.1.0.txt")
End Sub

Private Sub importerCodeFeuille(Nom_Feuille As String, Nom_Fichier As
String)
With
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).Co
deName).CodeModule
.AddFromFile Nom_Fichier
End With
End Sub


Avatar
MichDenis
Merci pour cette information.


"Greg" a écrit dans le message de news:

Pour infos :
j'ai mis ca comme code :

With
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).CodeName).CodeModule
.AddFromFile Filename:=(nom_Fichier)
End With

et j'ai fait une MAJ d'office via Windows Update (Version d'excel :
Excel 2003 (11.8117.8107) SP2)

et ca marche...

On 29 jan, 13:40, "MichDenis" wrote:
| ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).CodeName).CodeModule
| .AddFromFile Nom_Fichier
| End With

Pour une raison que j'ignore... il est impossible de boucler
en utilisant " .AddFromFile Nom_Fichier". J'ai personnellement
fait plusieurs tentatives pour trouver une solution. Habituellement
au deuxième passe, Excel se plante et ferme.

J'ai adressé cette question sur le forum anglophone, et aucune
éminence grise n'a osé tenter une explication.

Conclusion: Si tu as 16 feuilles, il faut lancer 16 fois la procédure.
Si tu trouves la solution à ce bug, prière de nous révéler ta solution.

"Greg" a écrit dans le message de news:

Bonjour,

j'ai un classeur excel avec une 16 feuilles et 9 modules. J'ai procédé
à des modifications du code dans 13 feuilles et 6 modules et ajouté 3
feuilles.
Ayant plusieurs classeurs à mettre à jour avec la nouvelle version du
code, j'ai décidé décrire un nouveau module upgrade qui via une
fonction upgrade_v100_Vers_v110 qui va normalement faire tout ca!!!

Public Sub upgrade_v100_Vers_v110()
' Pour charger la référence manquante
Call ReferencesProjet
' Pour supprimer les feuilles en plus
Call supprimerfeuilles
' Ajouter les nouvelles feuilles
Call ajouterFeuilles
' importer les modules modifiés (la suppression de l'ancien est
géré dans l'import)
Call importerTousModules
' suppression du code associé à chaque feuille
Call supprimerCodeToutesFeuilles
' import du code associé au feuille
Call importCodeToutesFeuilles
' maj de plusieurs cellules dans les feuilles
Call majFeuilles
End Sub

voila le principe de base que j'utilise. maintenant le code se déroule
bien jusqu'au Call importCodeToutesFeuilles ou la j'ai un plantage
excel avec la fenetre qui me demande si je veux récupérer mon travail
ou pas....

Public Sub importCodeToutesFeuilles()
Dim dossier_import As String

dossier_import = ThisWorkbook.Path & "Fichiers v1.1.0Fichiers à
importer"
Call importerCodeFeuille("Tâches", dossier_import & "Feuil1 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi conso", dossier_import & "Feuil2 -
v1.1.0.txt")
Call importerCodeFeuille("Synthèse", dossier_import & "Feuil3 -
v1.1.0.txt")
Call importerCodeFeuille("Ressources", dossier_import & "Feuil5 -
v1.1.0.txt")
Call importerCodeFeuille("Suivi RAE", dossier_import & "Feuil6 -
v1.1.0.txt")
Call importerCodeFeuille("Fiches de tâches", dossier_import &
"Feuil7 - v1.1.0.txt")
Call importerCodeFeuille("Accueil", dossier_import & "Feuil10 -
v1.1.0.txt")
Call importerCodeFeuille("GPS", dossier_import & "Feuil12 -
v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod par sem", dossier_import &
"Feuil13 - v1.1.0.txt")
Call importerCodeFeuille("Conso - Prod", dossier_import & "Feuil15
- v1.1.0.txt")
Call importerCodeFeuille("Gantt", dossier_import & "Feuil16 -
v1.1.0.txt")
Call importerCodeFeuille("Capacité Prod", dossier_import &
"Feuil17 - v1.1.0.txt")
Call importerCodeFeuille("Conso-RAE-Prod Par SSP", dossier_import
& "Feuil18 - v1.1.0.txt")
End Sub

Private Sub importerCodeFeuille(Nom_Feuille As String, Nom_Fichier As
String)
With
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(Nom_Feuille).Co
deName).CodeModule
.AddFromFile Nom_Fichier
End With
End Sub