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 de ligne + simplification code


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 Problème de ligne + simplification code
    Bonjour à tous,

    Le but de la macro : lire chaque ligne de ma feuille 1 puis en fonction de la colonne 7 copie/coller les 3 colonnes suivantes (soit avec ELSE soit avec ELSEIF) dans une feuille 2

    Mon problème : J'ai un problème avec mon code, je voudrais qu'il commence à la ligne 3 de la feuille 2, car j'ai des en-tête sur les 2 première lignes. Or actuellement la partie de ELSE qui se trouve à gauche commence à la ligne 2. Je n'ai pas de soucis du côté du ELSEIF....

    Petit plus : De plus avait quelque chose de moins long car ce code met à peu près 5 minutes pour exécuter mes 8000 lignes
    Et je suis persuadé que on peut le faire en très peu de ligne mais étant mauvais sur vba je n'y arrive pas.


    Merci à vous pour votre aide précieuse.


    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
     
     
    Option explicit 
     
    Public Sub CopyRows()
     
    Dim FinalRow As Integer
    Dim x As Integer
    Dim Thisvalue As String
    Dim NextRow As Integer
     
     
        Sheets(1).Select
        ' Find the last row of data
        FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
        ' Loop through each row
        For x = 3 To FinalRow
            ' Decide if to copy based on column G
            Thisvalue = Cells(x, 7).Value
            If Thisvalue = "B" Then
                Cells(x, 8).Resize(1, 3).Copy
                Sheets(2).Select
                NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
                Cells(NextRow, 1).Select
                ActiveSheet.Paste
                Sheets(1).Select
            ElseIf Thisvalue = "S" Then
                Cells(x, 8).Resize(1, 3).Copy
                Sheets(2).Select
                NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1
                Cells(NextRow, 5).Select
                ActiveSheet.Paste
                Sheets(1).Select
            End If
        Next x
    End Sub

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    pour une exécution instantanée, utiliser un filtre et même mieux : un filtre avancé !
    En moins de dix lignes de code …
    Sans compter les nombreux exemples dans les discussions de ce forum.

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  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
    Je ne comprend pas l'utilisation de cela du tout, je suis débutant VBA

    Du coup j'ai fais un autre code , cependant je ne peux l’exécuter que si je suis sur la feuille 1 quand je lance la macro, donc problématique... et de plus quand mes données se copies j'ai des espaces(voir photo), elle ne sont pas toutes les unes à la suite des autres.... pouvez-vous m'aidez?

    Nom : 2017-02-01 16_56_54-Microsoft Excel - Classeur1.xlsm.png
Affichages : 71
Taille : 12,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
    Sub aaa()
        n = Range("G2").End(xlDown).Row
        Const LB As Integer = 3
        Dim j As Variant
        Dim i As Integer
        Dim h As Integer
     
        For i = LB To n
            If Range("G" & i).Value = "B" Then
                For h = 8 To 10
                    j = Sheets(1).Cells(i, h).Value
                    Sheets(2).Cells(i, h - 7).Value = j
                Next
            Else
                For h = 8 To 10
                    j = Sheets(1).Cells(i, h).Value
                    Sheets(2).Cells(i, h - 4).Value = j
                Next
            End If
        Next
    End Sub

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2012, 16h46
  2. Simplification de lignes de code
    Par nomade333 dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/05/2012, 15h00
  3. [E-00] Problème d'execution des lignes de code
    Par peaceandloveman01 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/11/2008, 10h51
  4. problème avec une ligne de code
    Par yohann_76 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/01/2008, 10h29
  5. Petit problème de compréhension d'une ligne de code
    Par totoc1001 dans le forum Images
    Réponses: 3
    Dernier message: 12/03/2007, 21h44

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