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 :

Insertion dynamique de lignes à partir de sélections d'une base de donnée [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 2
    Par défaut Insertion dynamique de lignes à partir de sélections d'une base de donnée
    Bonjour à Tous,
    Je suis novice dans la programmation VBA. J'utilise une version excel :Office 365 MSO (16.011328.20620) 32 bits
    l'objectif de mon programme est de copier à partir de la feuille "Liste I-O" des lignes de façon automatique suivant des sélections prédéfinies .
    étape 1 : copier l'entête de "Liste I-O" vers "new_60kV_ver005", OK
    étape 2 : faire des sélections suivant des critères et copier le résultat dans "new_60KV_ver005"
    PB : A chaque fois que je copie mes sélections, j'écrase la copie précédente.

    Merci de m'expliquer comment gérer le remplissage de "new_60KV_ver005" au fur et à mesure que je copie des lignes dans "new_60kV_ver005.


    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
    46
    47
    48
    Public Sub Création_new_60KV_ver005()
    '
    ' Création_new_60KV_ver005 Macro
    '
     
    Dim NbLignes As Integer
     
        Sheets("Liste I-O").Select
        Rows("1").Select
        Selection.Copy
        Sheets("new_60KV_ver005").Select
         Rows("1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
     
     
        Sheets("Liste I-O").Select
        NbLignes = Range("B" & Rows.Count).End(xlUp).Row
     
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=10
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=10, Criteria1:= _
            "QM02"
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=6
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=6, Criteria1:="=*OUV" _
            , Operator:=xlOr, Criteria2:="=*FER"
     
     
        ActiveSheet.Range("$A$2:$X$" & NbLignes).SpecialCells(xlCellTypeVisible).Copy
     
        Sheets("new_60KV_ver005").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
     
        Sheets("Liste I-O").Select
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=10
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=10, Criteria1:= _
            "QM01"
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=6
        ActiveSheet.Range("$A$2:$X$" & NbLignes).AutoFilter Field:=6, Criteria1:="=*OUV" _
            , Operator:=xlOr, Criteria2:="=*FER"
     
        ActiveSheet.Range("$A$2:$X$" & NbLignes).SpecialCells(xlCellTypeVisible).Copy
     
        Sheets("new_60KV_ver005").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
     
        End Sub
    Merci d'avance pour votre aide et bonne journée

  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 Chris38190 Voir le message
    étape 2 : faire des sélections suivant des critères et copier le résultat dans "new_60KV_ver005"
    PB : A chaque fois que je copie mes sélections, j'écrase la copie précédente.
    Parce que tu n'indiques pas ta ligne de destination.

    Petit conseil : évite les Select/Selection

    Ton code retouché :
    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
    Public Sub Création_new_60KV_ver005()
        Dim NbLignes As Long, LDest As Long
        Dim WS_From As Worksheet
        Dim WS_To As Worksheet
     
        Set WS_From = Sheets("Liste I-O")
        Set WS_To = Sheets("new_60KV_ver005")
     
        WS_From.Rows("1").Copy WS_To.Cells(1, 1)
     
        NbLignes = WS_From.Range("B" & Rows.Count).End(xlUp).Row
     
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=10
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=10, Criteria1:= "QM02"
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=6
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=6, Criteria1:="=*OUV", Operator:=xlOr, Criteria2:="=*FER"
     
        LDest = WS_To.Range("B" & Rows.Count).End(xlUp).Row + 1
        WS_From.Range("A2:X" & NbLignes).SpecialCells(xlCellTypeVisible).Copy WS_To.Cells(LDest, 1)
        WS_From.Range("A2:X" & NbLignes).AutoFilter
     
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=10
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=10, Criteria1:= "QM01"
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=6
        WS_From.Range("A2:X" & NbLignes).AutoFilter Field:=6, Criteria1:="=*OUV", Operator:=xlOr, Criteria2:="=*FER"
     
        LDest = WS_To.Range("B" & Rows.Count).End(xlUp).Row + 1
        WS_From.Range("A2:X" & NbLignes).SpecialCells(xlCellTypeVisible).Copy WS_To.Cells(LDest, 1)
        WS_From.Range("A2:X" & NbLignes).AutoFilter
     
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 2
    Par défaut remerciements
    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/12/2010, 13h06
  2. Réponses: 2
    Dernier message: 12/07/2010, 12h28
  3. Réponses: 1
    Dernier message: 21/05/2009, 01h03
  4. Réponses: 6
    Dernier message: 04/04/2008, 12h09
  5. Réponses: 9
    Dernier message: 04/12/2005, 18h57

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