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 :

Simplification du code VBA [XL-2010]


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
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Par défaut Simplification du code VBA
    Bonjour à tous,

    Je suis débutant VBA donc j'essaye de faire des code en me renseignant avec internet ou avec l'enregistreur de macro. Je sais qu'il ne faut pas trop utiliser les mots sélect et activate. Par conséquent pouvez m'aidez à rendre le code suivant plus jolie avec des variables afin de pas avoir que des chose noter en dure, et ainsi pouvoir réutiliser le code sur d'autre fichier. Si vous avez d'autres codes plus jolie à proposer je suis preneur.

    Le but du programme est d'aller chercher des fichier textes (10) (composées de 11 colonnes avec un en-tête, délimité par un espace), puis de coller les informations des ces fichier textes dans le premier onglet du classeur Excel. Puis de les trier dans un sens croissant par rapport à la colonne K.

    Si de plus que je n'ai pas encore fait dans le code : dans le module Thisworkbook pouvoir exécuter la macro à l'ouverture du fichier sans devoir aller l'exécuter tout en donnant un nom au premier onglet " database " ou seront copier les valeurs.

    Merci à vous pour votre aide.



    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Option explicit 
     
     Sub OpenFile()
     
        Dim i As Integer
        Dim j As Integer
        Dim n As Integer
        Dim Cel As Range
     
        For i = 1 To 10
            Workbooks.OpenText Filename:="K:\VBA\orderflow_" & i & ".txt"
        Next
     
    ' Selectionetopiercoller Macro
     
            Windows("orderflow_1.txt").Activate
            Range(Selection, Selection.End(xlToRight)).Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Copy
            Windows("Classeur1.xlsm").Activate
            Range("A1").Select
            ActiveSheet.Paste
     
        For j = 2 To 10
            Windows("orderflow_" & j & ".txt").Activate
            Range("A2").Select
            Range(Selection, Selection.End(xlToRight)).Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Copy
            Windows("Classeur1.xlsm").Activate
            Range("A1").End(xlDown).Offset(1).Select
            ActiveSheet.Paste
        Next
     
        For n = 1 To 10
            Windows("orderflow_" & n & ".txt").Activate
            ActiveWindow.Close
            Application.DisplayAlerts = False
        Next
     
        Columns("A:K").Select
        Selection.Sort Key1:=Range("K1"), Order1:=xlAscending, Header:=xlYes, MatchCase:=False, Orientation:=xlTopToBottom
     
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Valentiiiin3 Voir le message
    Je sais qu'il ne faut pas trop utiliser les mots sélect et activate.
    Remplace ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    Windows("Classeur1.xlsm").Activate
            Range("A1").Select
            ActiveSheet.Paste
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Workbooks("Classeur1.xlsm").ActiveSheet.Range("A1").Paste
    A appliquer aux autres cas de Selection/Select.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Par défaut problème d'execution
    Bonjour Menhir,

    le code ne marche plus , il me dit qu'il y a une erreur , ci-joint la photo de l'erreur.

    Nom : 2017-01-31 13_22_37-Microsoft Excel - orderflow_1.txt.png
Affichages : 241
Taille : 35,1 KoNom : 2017-01-31 13_22_59-Microsoft Visual Basic pour Applications - Classeur1.xlsm [exécution en.png
Affichages : 243
Taille : 20,1 Ko

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    Option explicit 
     
     Sub OpenFile()
     
        Dim i As Integer
        Dim j As Integer
        Dim n As Integer
        Dim Cel As Range
     
        For i = 1 To 10
            Workbooks.OpenText Filename:="K:\VBA\orderflow_" & i & ".txt"
        Next
     
    ' Selectionetopiercoller Macro
     
            Windows("orderflow_1.txt").Activate
            Range(Selection, Selection.End(xlToRight)).Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Copy
            Workbooks("Classeur1.xlsm").ActiveSheet.Range("A1").Paste
     
     
        For j = 2 To 10
            Windows("orderflow_" & j & ".txt").Activate
            Range("A2").Select
            Range(Selection, Selection.End(xlToRight)).Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Copy
            Workbooks("Classeur1.xlsm").ActiveSheet.Range("A1").End(xlDown).Offset(1).Paste
     
        Next
     
        For n = 1 To 10
            Windows("orderflow_" & n & ".txt").Activate
            ActiveWindow.Close
            Application.DisplayAlerts = False
        Next
     
        Columns("A:K").Select
        Selection.Sort Key1:=Range("K1"), Order1:=xlAscending, Header:=xlYes, MatchCase:=False, Orientation:=xlTopToBottom
     
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Sur quelle ligne se produit l'erreur ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Workbooks("Classeur1.xlsm").ActiveSheet.Range("A1").Paste

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    La méthode Paste n'existe pas pour l'objet Range.
    Pour Range, il faut utiliser PasteSpecial.

    Mais je ne vois pas du tout le rapport avec le message d'erreur que tu citais juste au dessus.

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

Discussions similaires

  1. Simplification de code VBA
    Par tiralarc03 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/02/2015, 16h14
  2. Simplification de code vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2014, 11h01
  3. Problème simplification de code VBA - Procédure trop grande
    Par Eleanor dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/08/2013, 10h52
  4. Simplification de code VBA Excel
    Par RAID14 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/03/2012, 15h26
  5. [XL-2003] Simplification code VBA généré par enregistreur de macro
    Par altra dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/08/2009, 11h47

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