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 :

selection et condition pour une macro VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut selection et condition pour une macro VBA
    Sur un fichier Excel, je souhaiterai copier des infos d'un onglet à un autre avec une condition .
    Par exemple colonne A, B, C, D sur "onglet 1" coller les infos des colonnes A,B,C sur le 2ème onglet a condition qu'il y ait un "ko" sur la colonne D

    J'espère avoir été claire

    Merci

    Voici le script:
    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
     
    With Sheets("Résultat final")
    ' Saisie_anomalie Macro
    ' Coller dans l'onglet résultat final les colonnes de l"onglet anomalie, ceux qui dans la colonne selection est ko Touche de raccourci du clavier*: Option+Cmd+Maj+L"&chr(10)&"'
        Application.Goto Reference:="Saisie_anomalie"
     
        Sheets("Résultat final").Select
        Range("A5:D11").Select
        Sheets("anomalie").Select
        ActiveSheet.Range("$A$1:$E$79").AutoFilter Field:=1, criterial:="ko"
        Range("I23").Select
        Sheets("base de donnée").Select
     
        End With
        Sheets("Résultat final").Select
        Range("A6").Select
        Sheets("Résultat final").Select
        Range("D26").Select
    End Sub

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Teste le code ci-dessous :
    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
     
    Sub Copier()
     
        Dim Plage As Range
        Dim I As Long
     
        'défini la plage en feuille "Feuil2" sur les colonnes A à D
        With Worksheets("Feuil2")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 4).End(xlUp))
     
        End With
     
        'filtre sur la colonne D
        Plage.AutoFilter 4, "ok"
     
        'colle en feuille "Feuil1" le résultat du filtrage
        Worksheets("Feuil2").AutoFilter.Range.EntireRow.Copy Worksheets("Feuil1").Range("A1")
     
        'vire le filtre
        Plage.AutoFilter
     
    End Sub
    Hervé.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    La macro fonctionne, par contre j'ai oublié une précision, lorsque la copie s'éffectue sur le second onglet je souhaiterai qu'il ne prenne en compte les 1ère colonne de l'onglet 1.
    Autre chose comment définir les lignes sur lequel je voudrai que la copie s'effectue.

    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2012
    Messages : 75
    Points : 110
    Points
    110
    Par défaut
    Bonjour Hervé

    Ce code m'intéressant, j'ai donc construit un tableau comme suit


    100 B-100 C-100
    200 B-200 C-200 Ko
    300 B-300 C-300
    400 B-400 C-400
    500 B-500 C-500 Ko
    600 B-600 C-600
    700 B-700 C-700 Ko
    800 B-800 C-800
    900 B-900 C-900
    1000 B-1000 C-1000 Ko

    Voici le résultat de l'exécution du code

    100 B-100 C-100
    200 B-200 C-200 Ko
    500 B-500 C-500 Ko
    700 B-700 C-700 Ko
    1000 B-1000 C-1000 Ko

    Question

    Pourquoi le ligne No 1 est elle reprise dans le résultat
    alors que la colonne < D> ne comprend pas "Ko"

    Merci d'avance
    ____________________
    Cordialement

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    Sogestion,
    La 1ère ligne est prise en compte par le compilateur car il considère que c'est la ligne d'entêtes et donc, il la récupère avec les données filtrées !
    Tu peux la virer avec la ligne de code rajoutée ci-dessous :
    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
     
    Sub Copier()
     
        Dim Plage As Range
        Dim I As Long
     
        'défini la plage en feuille "Feuil2" sur les colonnes A à D
        With Worksheets("Feuil2")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 4).End(xlUp))
     
        End With
     
        'filtre sur la colonne D
        Plage.AutoFilter 4, "ok"
     
        'colle en feuille "Feuil1" le résultat du filtrage
        Worksheets("Feuil2").AutoFilter.Range.EntireRow.Copy Worksheets("Feuil1").Range("A1")
     
        'supprime la ligne d'entêtes
        Worksheets("Feuil1").Range("A1").EntireRow.Delete
     
        'vire le filtre
        Plage.AutoFilter
     
    End Sub
    blackty1,
    Dans le code modifié ci-dessous, le collage est effectué à partir de A10 et les deux premières colonners sont supprimées :
    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
     
    Sub Copier()
     
        Dim Plage As Range
        Dim Fe As Worksheet
        Dim I As Long
     
        'défini la plage en feuille "Feuil2" sur les colonnes A à D
        With Worksheets("Feuil2")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 4).End(xlUp))
     
        End With
     
        'filtre sur la colonne D
        Plage.AutoFilter 4, "ok"
     
        'colle en feuille "Feuil1" à partire de "A10" le résultat du filtrage
        Worksheets("Feuil2").AutoFilter.Range.EntireRow.Copy Worksheets("Feuil1").Range("A10")
     
        'supprime les deux premières colonnes
        Worksheets("Feuil1").Columns("A:B").EntireColumn.Delete
     
        'vire le filtre
        Plage.AutoFilter
     
    End Sub
    Hervé.

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2012
    Messages : 75
    Points : 110
    Points
    110
    Par défaut
    Bpnjour Hervé,

    Merci de l'explication et de la solution

    _____________________________

    Bonne journée
    Cordialement

    Albert

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/12/2009, 11h22
  2. Réponses: 4
    Dernier message: 19/03/2009, 09h57
  3. Aide pour complèter une macro VBA
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 24/11/2008, 13h07
  4. [vba-E] pour une macro executable automatiquement
    Par ricachu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/07/2006, 11h34
  5. [VBA] Excell : demande d'aide pour une macro
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/01/2006, 16h28

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