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 :

[VBA-E]comment faire marcher ma macro sans que l'utilisateur voit les choses


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Points : 97
    Points
    97
    Par défaut [VBA-E]comment faire marcher ma macro sans que l'utilisateur voit les choses
    Bonjour

    J'ai une macro qui marche tres bien sauf que l'utilisateur voit des fenetres bougés et c'est pas très rapide pouvez vous m'aider à l'optimiser visuellement

    Le principe est de copié une mise en forme d'un tableau contenu dans fichier et de l'appliquer au tableau de ma feuille actuel
    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
    21
    22
    23
    24
    25
    'pathexemple est le chemin du fichier que l'on veut ouvrir 
    'rangetab est une plage du tableau de reception
     
    Function LoadStyle(PathExemple As String, RangeTab As Range)
     
    'Fonction d'init de la plage de selection
        MISEAZERO RangeTab
     
        Dim NameClasseurcur As String
        Dim NameClasseurtemp As String
        NameClasseurcur = ActiveWorkbook.Name
        Workbooks.Open Filename:=PathExemple ', Editable:=True
        Range("A1").CurrentRegion.Select
        NameClasseurtemp = ActiveWorkbook.Name
        Selection.Copy
        Windows(NameClasseurcur).Activate
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Windows(NameClasseurtemp).Activate
        Workbooks(NameClasseurtemp).Close False
        Windows(NameClasseurcur).Activate
     
    end sub

  2. #2
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Après sub .......() tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenUpdating = false
    et avant En sub, tu mets
    Mais le mieux est de ne pas utiliser Select ni activate... quand on peut et on peut la plupart du temps

    Edit
    Et dans ton cas on peut

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    Au grand maitre de l'anti select et activate

    Eclaire moi de ton savoir et explique moi comment m'en passer que je devienne un disciple de....

  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
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("A1").CurrentRegion.Copy
        Worksheets("feuil2").Range("N1").PasteSpecial Paste:=xlPasteFormats
    Ça t'inspire ?

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par tazamorte
    Au grand maitre de l'anti select et activate

    Eclaire moi de ton savoir et explique moi comment m'en passer que je devienne un disciple de....
    Il faut essayer de "penser objet" le plus possible.

    Un exemple dans ton code dont je n'ai gardé que la partie gestion des classeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim NameClasseurcur As String
    Dim NameClasseurtemp As String
    NameClasseurcur = ActiveWorkbook.Name
    Workbooks.Open Filename:=PathExemple ', Editable:=True
    NameClasseurtemp = ActiveWorkbook.Name
    Windows(NameClasseurcur).Activate
    Windows(NameClasseurtemp).Activate
    Workbooks(NameClasseurtemp).Close False
    Windows(NameClasseurcur).Activate
    Voici comment transformer ces lignes en "pensant objet":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim wbkDest As Workbook
    Dim wbkSource As Workbook
    ' Créer une instance (un objet) de l'ActiveWorkbook 
    Set wbkDest = ActiveWorkbook
    ' Créer un objet en ouvrant un classeur
    Set wbkSource = Workbooks.Open Filename:=PathExemple ', Editable:=True
    ' ...
    ' tout le code de copie entre wbkSource et wbkDest
    ' ...
     
    ' Fermer le classeur source en fermant son instance
    wbkSource.Close False
    Tu y vois un peu plus clair?

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

Discussions similaires

  1. Comment faire évoluer ma Macro VBA pour tenir cpte de 3 points : ;-))
    Par Bernardini dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/03/2015, 13h56
  2. [2.x] Comment faire marcher en local symfony sans le serveur interne php?
    Par yvon_huynh dans le forum Symfony
    Réponses: 2
    Dernier message: 21/11/2014, 21h09
  3. [VBA-W]Comment faire suivre les macros d'un modèle?
    Par gusrom86 dans le forum VBA Word
    Réponses: 7
    Dernier message: 23/02/2006, 10h26
  4. Réponses: 19
    Dernier message: 28/01/2005, 09h52
  5. [Debutant(e)][Tomcat]Comment faire marcher Tomcat?
    Par chuck norris dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 24/11/2004, 16h12

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