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 :

Problème d'automation excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Par défaut
    Bonjour forum,

    Hier, je suis venu vous demander comment cacher une fenêtre excel et effectuer des opérations sur cette dernière.
    Nous en sommes venu au code suivant :
    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
     
    'Ouverture en hidden du repertoire
        Application.ScreenUpdating = False
        'Test si le repertoire est deja ouvert
        If IsFileOpen("h:\Projet_Ete\listing\Repertoire.xls") Then
            Workbooks("Repertoire.xls").Close True
        End If
     
        Set CL1 = Workbooks.Open("h:\Projet_Ete\listing\Repertoire.xls")
        For i = 1 To CL1.Worksheets.Count - 1
            CL1.Sheets(i).Visible = False
        Next
        Windows("Repertoire.xls").Visible = False
        Application.ScreenUpdating = False
     
     
        'Initialisation des deux feuilles du repertoire
        Set FLP = CL1.Worksheets("Repertoire_SCH")
        Set FLC = CL1.Worksheets("Repertoire_Client")
    Aucun problème a signaler sur ce code !

    Cependant en continuant mon application, j'ai eu des erreurs d'automation qui doivent être des instances d'excel non arretées.

    Ma question est la suivant, comment regler ce problème d'automation ? Faut-il parcourir toutes les fenêtres excel ouvertes et les fermer ?

    Je vous joint les Userform et un module dès fois qu'il y est une erreur dans mon code.

    Je me demandais sachant que j'ai plusieurs userform s'il était possible de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim CL1 As Workbook
    Dim FLP As Worksheet
    Dim FLC As Worksheet
    En static pour qu'il soit accéssible dans tous les UserForms et modules ?

    Je programme en java habituellement :-/
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut hitmax et le forum
    ...Aucun problème a signaler sur ce code !
    Cependant en continuant mon application, j'ai eu des erreurs d'automation qui doivent être des instances d'excel non arretées....
    Ma question est la suivant, comment regler ce problème d'automation ? Faut-il parcourir toutes les fenêtres excel ouvertes et les fermer ?
    N'étant qu'en 2me année de divination, section Magie Excellienne, et ma boule de cristal étant en panne, je ne peux pas t'aider.

    des erreurs d'automation : re-essaye le demarreur... ou donne les erreurs!!

    Si tu avas donné une copie de ton fichier "répertoire" avec une ligne de données bidon (pour avoir une idée, les vraies données ne sont pas nécessaire) et tes USF, ça aurait été plus facile et tu aurais peut-être déjà des réponses!

    À tout hazard, j'ai parcouru certaines macros.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    ça sert à quoi ?
    Parce que je ne vois nulle part dans les macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True
    Qui est nécessaire pour remettre en route la gestion de l'écran, chose nécessaire, quand on s'en sert pour éviter les sautes d'écran ou améliorer la vitesse d'exécution des macro.
    A+

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Par défaut
    Bon,

    hier, avec l'aide du forum j'ai pu lancer une fenetre cachée excel qui me sert de base de données en faite.
    ex: L'utilisateur rentre des informations pour créer un membre du personnel avec les info habituelles nom, prenom, etc ...
    Ces données sont stockées dans un tableau excel et je ne voulais pas que l'utilisateur puisse le voir.

    Avec le premier bout de code que j'ai ecris en haut pas de problème la fenetre est bien cachée.

    Par contre lorsque je veux insérer de nouvelles données j'ai une erreur d'automation

    J'ai joint des fichiers de test
    Fichiers attachés Fichiers attachés

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par hitmax
    'Initialisation des deux feuilles du repertoire
    Set FLP = CL1.Worksheets("Repertoire_SCH")
    Set FLC = CL1.Worksheets("Repertoire_Client")
    Dans ces deux lignes, je pense que tu voulais dire "Initialisation des deux feuilles du CLASSEUR Repertoire.xls"
    Sinon, c'est une incohérence
    Citation Envoyé par hitmax Voir le message
    Je me demandais sachant que j'ai plusieurs userform s'il était possible de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim CL1 As Workbook
    Dim FLP As Worksheet
    Dim FLC As Worksheet
    En static pour qu'il soit accessible dans tous les UserForms et modules ?
    En effet, tu peux mettre ça dans les déclarations, soit, si tu les utilises dans un userform, en tête du module de l'userform, soit en tête du module standard qui "devrait" contenir la macro qui affiche l'userform

    Dans un module standard :
    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
    Option Explicit 'pour être certain de déclarer toutes tes variables
    Public CL1 As Workbook
    Public FLP As Worksheet
    Public FLC As Worksheet
     
    Sub AfficheUsf()
        Set CL1 = Workbooks.Open("h:\Projet_Ete\listing\Repertoire.xls")
        Set FLP = CL1.Worksheets("Repertoire_SCH")
        Set FLC = CL1.Worksheets("Repertoire_Client")
        Userform1.show
        'CL1.Close true 'ferme et enregistre ton classeur
        'sinon
        Set CL1 = Nothing
        Set FLP = Nothing
        Set FLC = Nothing
    End sub
    Ainsi, les instances seront accessibles depuis l'userform

    Attention :
    Si tu déclares des variables en public à utiliser dans l'userform, ce qui serait le cas ici, n'ajoute surtout pas "Option Explicit" dans le module de l'userform.

    Remarques :
    Quand tu affiches un userform depuis une macro placée dans un module standard, le code attend la fermeture de l'usf pour se poursuivre.

    Pour tester ton userform, tu devras toujours l'ouvrir depuis cette macro, sans quoi, les instances ne seront pas déclarées.

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

Discussions similaires

  1. [WD-2010] Problème Automation Excel Word
    Par jfchappuis dans le forum VBA Word
    Réponses: 2
    Dernier message: 22/04/2012, 18h07
  2. [AC-2007] Problème avec Automation vers Excel
    Par damsmut dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/06/2010, 16h46
  3. Problème avec automation Excel.
    Par laurent_diep dans le forum C#
    Réponses: 0
    Dernier message: 28/01/2010, 11h42
  4. Réponses: 3
    Dernier message: 12/09/2008, 18h07

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