IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Feuilles non standard dans l'explorateur de projet VBA et dans "Microsoft Excel Objets"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Développement/Intégration
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Développement/Intégration
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut Feuilles non standard dans l'explorateur de projet VBA et dans "Microsoft Excel Objets"
    Bonjour,

    Dans l'explorateur de projet VBA et dans "Microsoft Excel Objets", j'ai de nombreuses feuilles , dont je ne sais pas comment les supprimer.
    Elles se nomment "Feuil1", "Feuil2", ... et "Feuil25", mais ne sont pas apparentes dans le classeur excel.
    Il n'y a pas de nom affiché entre parenthèse comme sur les autres feuilles normales.

    L'icone de ces feuilles est identique à celui de Thisworkbook,
    et par clic droit les propriétés des feuilles sont identiques à Thisworkbook au lieu d'être les mêmes que les autres feuilles standard.

    J'ai cherché à les supprimer par une petite procédure :

    Test sur la Feil20, mais sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub SuppressionDeFeuille()
        Feuil20.Visible = True
        Feuil20.Delete
    End Sub
    ça ne marche pas (Voir la copie d'écran) :

    Nom : 2021-10-04-ForumDeveloppezCom-01.png
Affichages : 116
Taille : 41,7 Ko

    Savez vous comment puis-je m'y prendre pour les supprimer ?

    De plus est ce que vous auriez une idée de la façon dont c'est feuilles auraient pu être crée et du coup comment se préunir de la création de celles-ci ?

    Par avance Merci.

    Bien à vous.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour le forum,

    ce ne sont pas des feuilles. ton fichier est corrompu !

    la solution ici : https://answers.microsoft.com/en-us/...2-7b93b3a8e401


    traduction de google :

    Voici ma solution, cela fonctionne de manière cohérente et vous n'avez pas besoin de copier manuellement les feuilles et le code dans un classeur vierge. J'ai testé cette méthode sur plusieurs classeurs corrompus qui me donnaient l'erreur "Erreur d'automatisation - Échec catastrophique" au lancement.

    REMARQUE : le fichier original corrompu a été enregistré en tant que .xlsm

    1. Ouvrez un classeur Excel vierge
    2. Onglet Développeur > Sécurité des macros > Désactiver toutes les macros sans notification
    3. Fermez Excel
    4. Double-cliquez sur le fichier corrompu, par exemple, MyFile.xlsm
    5. Fichier> Enregistrer sous> MonFichier.xlsb (pas .xlsm), choisir le format .xlsb est ce qui fait l'affaire
    6. Onglet Développeur > Sécurité des macros > Activer toutes les macros (ou le niveau de sécurité que vous préférez)
    7. Fermez Excel
    8. Double-cliquez sur MonFichier.xlsb

    Le fichier est maintenant corrigé ! Vous pouvez réenregistrer le fichier MyFile.xlsb en tant que .xlsm si nécessaire. D'après mon expérience, les fichiers .xlsm se corrompent assez facilement, je vais donc prendre l'habitude de toujours utiliser le format .xlsb.
    En savoir plus sur ce texte source
    Vous devez indiquer le texte source pour obtenir des informations supplémentaires
    Envoyer des commentaires
    Panneaux latéraux
    Contrairement à ce qui est dit à la fin je ne trouve pas que les fichiers .xlsm se corrompt facilement. Si cela recommence c'est qu'il y a un sévère probleme dans ton code qui peut être lié a une dll appelée mais non existante ou mal utilisée ou encore à une mauvaise utilisation du dimensionnement de variable ou que sais-je encore...

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Développement/Intégration
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Développement/Intégration
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut Export/Import de macro et UserForm d'un classeur origine à un classeur cible
    Bonjour Fil Free,

    Merci pour l'interêt que tu as porté pour ma discussion et ta réponse.

    Malheureusement ta solution ne fonctionne pas dans mon cas.

    J'ai suivi scrupuleusement ce que tu as reporté, mais les feuilles 'zombies' sont restées bel et bien.

    Je suis donc partie sur une solution plus laborieuse que j'ai trouvé sur ce même forum :

    https://www.developpez.net/forums/d2...-frm-d-projet/

    https://www.developpez.net/forums/d9...s/#post7177716

    Je vais vous expliquer comment je m'y suis pris en suivant un peu près les 2 liens ci-dessus :

    Le fichier origine avec les feuilles zombies s'appelle : Referentiel_des_flux_SDES-V2.xlsm

    Sur celui-ci, j'ai crée une macro, que j'ai appellé macroReparation dont le code a été repris sur les discussions ce-dessus dont j'ai mis les liens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Sub ExporterFrmEtModules()
     
        ' Déclaration des variables locales
        Dim l_nomFichier
     
        For Each l_nomFichier In ThisWorkbook.VBProject.VBComponents
            Select Case l_nomFichier.Type
                Case 1
                    ThisWorkbook.VBProject.VBComponents(l_nomFichier.Name).Export "C:\User\E524761\Documents\Personnel\Referentiel-Flux\TestsDivers\" & l_nomFichier.Name & ".bas"
                Case 2
                    ThisWorkbook.VBProject.VBComponents(l_nomFichier.Name).Export "C:\User\E524761\Documents\Personnel\Referentiel-Flux\TestsDivers\" & l_nomFichier.Name & ".cls"
                Case 3
                    ThisWorkbook.VBProject.VBComponents(l_nomFichier.Name).Export "C:\User\E524761\Documents\Personnel\Referentiel-Flux\TestsDivers\" & l_nomFichier.Name & ".frm"
                Case 100
                    ThisWorkbook.VBProject.VBComponents(l_nomFichier.Name).Export "C:\User\E524761\Documents\Personnel\Referentiel-Flux\TestsDivers\" & l_nomFichier.Name & ".sht"
            End Select
        Next
     
    End Sub
    Du coup ça a généré dans le répertoire C:\User\E524761\Documents\Personnel\Referentiel-Flux\TestsDivers\ tous les fichiers suivants :
    BoiteDialogueIdentification.frm
    BoiteDialogueIdentification.frx
    Feuil1.sht
    Feuil10.sht
    Feuil11.sht
    Feuil12.sht
    Feuil13.sht
    Feuil14.sht
    Feuil15.sht
    Feuil16.sht
    Feuil17.sht
    Feuil18.sht
    Feuil19.sht
    Feuil2.sht
    Feuil20.sht
    Feuil21.sht
    Feuil22.sht
    Feuil23.sht
    Feuil24.sht
    Feuil25.sht
    Feuil26.sht
    Feuil27.sht
    Feuil28.sht
    Feuil3.sht
    Feuil35.sht
    Feuil38.sht
    Feuil39.sht
    Feuil4.sht
    Feuil5.sht
    Feuil6.sht
    Feuil7.sht
    Feuil8.sht
    Feuil9.sht
    ModuleCopieOnglets.bas
    ModuleReferentielFlux.bas
    ModuleReparation.bas
    ModuleTelechargement.bas
    ThisWorkbook.sht


    J'ai supprimé toutes les Feuilles, c'est à dire tous les fichiers dont l'extension étaient *.sht. L'idée ici était de pouvoir récupérer toutes les macro et les UserForm.

    Nom : 2021-10-07-ForumDeveloppezCom-03.png
Affichages : 89
Taille : 87,7 Ko

    Ensuite j'ai ouvert un fichier Excel vierge et j'ai copier à partir du classeur Origine, tous les onglets dans le classeur Cible : Referentiel_des_flux_SDES-V4.xlsm, de la manière manuelle suivante :

    Nom : 2021-10-07-ForumDeveloppezCom-02.png
Affichages : 98
Taille : 119,0 Ko

    Les 2 classeurs Referentiel_des_flux_SDES-V2.xlsm et Referentiel_des_flux_SDES-V4.xlsm sont ouverts

    Click droit sur le nom de l'onglet à copier dans Referentiel_des_flux_SDES-V2.xlsm et sélectionner "Déplacer ou copier"

    dans la listeBox "Dans le classeur", sélectionner le classeur cible : Referentiel_des_flux_SDES-V4.xlsm et tu cocher "Créer une copie"

    Ensuite, à partir du classeur Cible : Referentiel_des_flux_SDES-V4.xlsm, j'ai ouvert l'explorateur VBA (Alt F11) est j'ai crée la macro MacroReparation :

    Nom : 2021-10-07-ForumDeveloppezCom-04.png
Affichages : 89
Taille : 26,7 Ko

    Le code que j'y ai mis est le suivant (repris des forums dont j'ai donné les liens ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Sub ImporterTousLesFichiersDunRépertoire()  '"d'après" SilkyRoad
     
        ' Déclaration des variables locales
        Dim l_nomFichier As String
        Dim l_nomRepertoire As String
     
        l_nomRepertoire = "C:\User\E524761\Documents\Personnel\Referentiel-Flux\TestsDivers\"
        l_nomFichier = Dir(l_nomRepertoire & "*.*")
     
        MsgBox "Le nom du fichier est : " & l_nomFichier
     
        Do While l_nomFichier <> ""
            Application.VBE.ActiveVBProject.VBComponents.Import (l_nomRepertoire & l_nomFichier)
     
            l_nomFichier = Dir
     
        Loop
     
    End Sub
    Après avoir executer la procédure, la userForm et les Procédure étaient crée dans le fichier cible : Referentiel_des_flux_SDES-V4.xlsm

    Je ferme la discussion.

    Bien à vous.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remonter les lignes non vides dans un tableau excel
    Par gilou41 dans le forum Excel
    Réponses: 6
    Dernier message: 23/04/2013, 15h42
  2. [XL-2010] Trouver la dernière cellule non vide dans un classeur excel fermé
    Par julienIS dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/03/2013, 12h49
  3. Réponses: 6
    Dernier message: 10/03/2011, 10h37
  4. Réponses: 2
    Dernier message: 15/11/2009, 17h03
  5. Réponses: 2
    Dernier message: 16/03/2006, 18h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo