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 :

Extraire des lignes suivant somme des colonnes pour alimenter un autre tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2022
    Messages : 9
    Par défaut Extraire des lignes suivant somme des colonnes pour alimenter un autre tableau
    Bonsoir à tous et toutes,

    une petite question... Est il possible d'extraire certaines lignes d'un tableau A suivant la valeur de la somme de ses colonnes pour alimenter un tableau B ?

    Je m'explique ! J'ai un tableau de demande sur lequel j'ai un identifiant( col D), un modèle( col E ), 10 colonnes de différentes pièces suivant le besoin ( colonnes F à O ) et une colonne P indiquant ou se trouve l'identifiant.

    Nom : image1.png
Affichages : 139
Taille : 18,9 Ko

    Si la somme des colonnes de F à O est supérieure à 4, j'estime que ce n'est pas rentable de fournir les pièces, d'ou la MFC en orange.

    Ce que j'aimerais, c'est que soit en activant une macro ou via une formule, je puisse récupérer ces identifiants automatiquement dans un autre tableau " B " quand la condition est remplie...

    Nom : image2.png
Affichages : 142
Taille : 5,5 Ko

    Si je résume :

    Tableau A : quand somme de Fà O > 4 , copier informations des cellules D, E et P correspondantes pour les coller dans le tableau B.

    Je suis ouvert à toutes suggestions !!!!!!!

    Merci d'avance les pro gestion-pieces-beta2.xlsm

  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, voici une macro qui fait le job:

    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
    Sub ExtraireLignes()
        Dim wsSource As Worksheet, wsCible As Worksheet
        Dim tblDemande As ListObject, tblCanni As ListObject
        Dim rngDemande As Range, rngCanni As Range
        Dim rowDemande As ListRow, rowCanni As ListRow
        Dim somme As Double
        Dim i As Byte, j As Long
     
        Set wsSource = ThisWorkbook.Sheets("Demande")
        Set wsCible = ThisWorkbook.Sheets("Dashboard")
     
        Set tblDemande = wsSource.ListObjects("tbldemande")
        Set tblCanni = wsCible.ListObjects("tblcanni")
     
        For Each rowDemande In tblDemande.ListRows
            ' Calcule la somme des colonnes F à O
            somme = 0
            For i = 3 To 12
                somme = somme + rowDemande.Range(1, i).Value
            Next i
            ' Si la somme est supérieure à 4, copie les informations dans le tableau cible
            If somme > 4 Then
                ' Trouve la première ligne vide dans le tableau cible
                For j = 1 To tblCanni.ListRows.Count
                    If Application.WorksheetFunction.CountA(tblCanni.ListRows(j).Range) = 0 Then
                        Exit For
                    End If
                Next j
     
                ' Ajoute une nouvelle ligne au tableau cible si nécessaire
                If j > tblCanni.ListRows.Count Then
                    Set rowCanni = tblCanni.ListRows.Add
                Else
                    Set rowCanni = tblCanni.ListRows(j)
                End If
     
                ' Copie les valeurs de D, E et P
                rowCanni.Range(1, 1).Value = rowDemande.Range(1, 1).Value ' Log ID
                rowCanni.Range(1, 2).Value = rowDemande.Range(1, 2).Value ' Modèle
                rowCanni.Range(1, 3).Value = rowDemande.Range(1, 13).Value ' Colis
            End If
        Next rowDemande
    End Sub

  3. #3
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour

    avec Powerquery :

    Données, À partir d'un tableau ou d'une plage, et sélectionne ton tableau
    Ajouter une colonne (tout en haut), Colonne personnalisée et fais la somme des pièces ([Batterie]+[Clavier]+...)
    Filtre la nouvelle colonne : filtre numérique, > 4
    Supprime les colonnes que tu ne veux pas garder dans le réultat
    Et sauvegarde : Accueil (tout en haut) et Fermer et charger

    Après pour rafraichir : clic droit sur le tableau généré, actualiser.

Discussions similaires

  1. [2012] Afficher des colonnes pour des lignes répétitives dans une ligne
    Par fouzi bba dans le forum Développement
    Réponses: 14
    Dernier message: 16/11/2017, 10h08
  2. Réponses: 2
    Dernier message: 13/08/2009, 16h01
  3. Extraire des données pour mettre dans une BD
    Par luciedoudou dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 21/02/2008, 14h17
  4. Extraire des données pour mettre dans une BD
    Par luciedoudou dans le forum Excel
    Réponses: 7
    Dernier message: 21/02/2008, 10h19
  5. Des colonnes pour une liste
    Par virtuadrack dans le forum C
    Réponses: 3
    Dernier message: 03/12/2007, 19h35

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