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 :

Macro VBA pour c/c toutes les lignes identifiées lors d'un filtre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Par défaut Macro VBA pour c/c toutes les lignes identifiées lors d'un filtre
    Bonjour,

    J’utilise une macro pour filtrer un fichier de data pour prendre en compte les ventes des marques de voitures indiquées dans « voiture_dic »
    La macro cumule le montant de toutes les ventes indiquées dans la colonne « CA » si la marque de voiture, indiquée dans « voiture_dic », est présente dans la colonne « Produit »


    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
    Private Sub get_voiture()
        Dim n_sell As Long
        Dim n_marq As Long
        Dim i As Long
     
        n_sell = ucols("CA")
        n_marq = ucols("Produit")
     
        voiture = 0
        For i = LBound(tdata, 1) + 1 To UBound(tdata, 1)
            If (voiture_dic.Exists(tdata(i, n_prod))) Then
                On Error Resume Next
                voiture = voiture + tdata(i, n_sell)
            End If
        Next i
     
        If (tglobalCA <> 0) Then
            voiture = voiture / tglobalCA
        End If
    End Sub

    Cette macro fonctionne très bien mais je souhaiterais la compléter en rajoutant du code pour copier/coller toutes les lignes concernées de mon onglet « Data » dans nouvel un onglet nommé « Détail »

    Merci à ceux qui pourraient m‘aider

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, j'ai ajouté quelques lignes pour copier/coller, à tester.

    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
    Private Sub get_voiture()
        Dim n_sell As Long
        Dim n_marq As Long
        Dim i As Long
        Dim wsData As Worksheet
        Dim wsDetail As Worksheet
        Dim r As Long
        Dim lastRow As Long
     
        ' Définir les feuilles de calcul
        Set wsData = ThisWorkbook.Sheets("Data")
        Set wsDetail = ThisWorkbook.Sheets("Détail")
     
        n_sell = ucols("CA")
        n_marq = ucols("Produit")
     
        voiture = 0
        For i = LBound(tdata, 1) + 1 To UBound(tdata, 1)
            If (voiture_dic.Exists(tdata(i, n_prod))) Then
                On Error Resume Next
                voiture = voiture + tdata(i, n_sell)
            End If
        Next i
     
        If (tglobalCA <> 0) Then
            voiture = voiture / tglobalCA
        End If
     
        ' Trouver la dernière ligne dans la feuille de calcul "Data"
        lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
     
        ' Parcourir chaque ligne dans la feuille de calcul "Data"
        For r = 1 To lastRow
            ' Vérifier si la marque de voiture est dans le dictionnaire
            If voiture_dic.Exists(wsData.Cells(r, n_marq).Value) Then
                ' Copier la ligne dans la feuille de calcul "Détail"
                wsData.Rows(r).Copy wsDetail.Cells(wsDetail.Rows.Count, "A").End(xlUp).Offset(1, 0)
            End If
        Next r
    End Sub

Discussions similaires

  1. Macro VBA pour afficher agenda de toutes les réunions
    Par Celine2018 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/03/2024, 11h53
  2. Réponses: 7
    Dernier message: 08/06/2018, 11h32
  3. formule index + equiv en vba et copie sur toutes les lignes non vides
    Par roch2a dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/03/2018, 19h30
  4. Réponses: 2
    Dernier message: 26/06/2017, 18h40
  5. Réponses: 6
    Dernier message: 21/06/2017, 16h57

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