Copier plusieurs lignes selon 2 conditions

Y compris Power BI, Power Query et toute autre question en lien avec Excel
w
wally66
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 26 février 2014
Version d'Excel : 2013

Message par wally66 » 31 août 2018, 13:58

Bonjour à tous,
Malgré mes recherches sur le forum je n'ai pas trouvé la méthode pour répondre à ma question.
Je vous mets le fichier modèle en pièce jointe.
J'ai trois onglets ; un pour la saisie (planning) et 2 pour des données (coffre 1 et coffre 2).
Je souhaite qu'après avoir sélectionné le produit puis l'action ca me copie automatiquement les lignes correspondantes à l'action présentes dans l'onglet produit correspondant .(Colonnes N°piece, intitulé, dimensions, quantité)
Je sais faire avec la formule SI pour copier une ligne mais comment faire pour copier plusieurs lignes?
Il faut sans doute une macro mais je cale!
Merci d'avance à ceux qui pourront m'aider.
TestExcel.xlsx
(8.1 Kio) Téléchargé 9 fois
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'659
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 31 août 2018, 16:50

bonjour

un TCD avec un segment cliquable pour filtrer selon le produit
aucune macro, aucune formule. Rien !
Copie de TestExcel.xlsx
(20.73 Kio) Téléchargé 5 fois
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
w
wally66
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 26 février 2014
Version d'Excel : 2013

Message par wally66 » 31 août 2018, 23:34

Merci de la réponse mais ca ne correspond pas à mon besoin. Je pense que j'ai mal expliqué ce besoin. Mon but est de faire "un planning de production".
Je saisis la date à laquelle le travail sera à faire, je sélectionne le produit, l'action à mener et ca m'affiche les données correspondantes.
Sur le principe, dans le cellule à droite de l'action, il faut dire à excel recherche la feuille indiqué dans la cellules située à 2 cellules à ta gauche, puis recherche l'action indiqué dans la cellule située immédiatement à gauche puis affiche les lignes correspondant à cette action.
Puis je passe à une autre date...puis encore une autre date...
J'espère avoir été plus clair.
Bonne soirée.
TestExcel.xlsx
(8.16 Kio) Téléchargé 7 fois
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'659
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 1 septembre 2018, 18:36

re

pas compris ::o

parle-nous en français sur le besoin de planification : coffres (ou produits), dates de lancement, de réalisation, nomenclatures, activité (action ou poste ou étape), quantités unitaires pour pour le lot, lots...

ou bien : je saisis en onglet Planning, et je veux extraire des données selon le modèle en onglet Coffre1. Idem pour coffre 2 etc.
mais ça je te l'ai fait dans mon exemple plus haut.
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 2 septembre 2018, 10:24

Bonjour, Salut à tous !
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim P$, A$, n%, i1%, i2%, c As Range
    If Target.Column < 4 Then
        n = Target.Row
        If Target.Rows.Count > 1 Or Me.Cells(n, 5) <> "" Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            Exit Sub
        End If
        If IsDate(Me.Cells(n, 1)) Then
            P = Me.Cells(n, 2): A = Me.Cells(n, 3)
            If P <> "" And A <> "" Then
                On Error GoTo Fin
                With Worksheets(P)
                    Set c = .Columns(1).Find(A)
                    If Not c Is Nothing Then
                        i1 = c.Row: i2 = i1
                        Do While .Cells(i2 + 1, 1) = "" And .Cells(i2 + 1, 3) <> ""
                            i2 = i2 + 1
                        Loop
                        Set c = .Range("B" & i1 & ":E" & i2)
                        Me.Range("D" & n).Resize(i2 - i1 + 1, 4).Value = c.Value
                    End If
                End With
            End If
        End If
    End If
Fin:
End Sub
La procédure ci-dessus se place dans le Module de la feuille Planning (elle ne peut fonctionner ailleurs !)
Elle se lance automatiquement lorsqu'une modification intervient dans les 3 premières colonnes.
D'une part elle veille à ce que l'utilisateur n'opère pas de saisie sur un emplacement occupé : si la colonne Intitulé en regard de la saisie est occupée, ou si la saisie occupe plusieurs lignes, elle est annulée...
(NB-Il s'ensuit que si l'on veut effacer des données sur Planning, il convient d'effacer d'abord les colonnes 4 et suivantes, sans quoi l'on ne pourra effacer les 3 premières...)
D'autre part, lorsque l'emplacement est conforme, que la saisie en A est une date, que les saisies en B et C sont effectuées, elle va chercher sur la feuille produit indiquée l'action indiquée pour ajouter les informations manquantes.
NB- Il convient de ne pas faire d'erreur de saisie (et de respecter la casse) ! Si tu saisis Coffre2 comme il figure sur ta feuille, il ne se passera rien !! Car la feuille se nomme Coffre 2.

Cordialement.
wally66_TestExcel.xlsm
(18.95 Kio) Téléchargé 11 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message