Choix sur seconde feuille

Fermé
sebjhesus - 8 janv. 2015 à 13:10
jordane45 Messages postés 38393 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 janvier 2025 - 8 janv. 2015 à 15:05
Bonjour

Voici mon problème et je ne sais pas comment m'en dépêtrer.

J'ai une première feuille "commande" avec une saisie manuelle du nombre de pièce commandées par personne (voir fichier ci-joint), avec seulement les trois dernières colonnes en calcul automatique.

Seulement, je voudrais savoir si il est possible sur la seconde feuille "montage" de ne récupérer que les lignes dont les résultats sont rouge (dans la feuille "commande) pour en déduire un tableau de montage.

Je pense que cela n'est pas très claire alors n'hésitez pas a poser des questions!!!!

Lien du fichier
http://we.tl/yDoGQn65Eg
A voir également:

3 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
8 janv. 2015 à 14:03
Bonjour
une proposition ici, sous réserve de compréhension.La solutionne fait pas référence aux couleurs de cellules (c'est assez compliqué avec Excel) mais au fait que seuls les valeurs négatives sont à afficher selon ce que définit vos formules de MFC

Ça reste toutefois à prouver, car vos empilages de conditions pour pour définir la couleur des cellules sont contradictoires
(<0 ou <6 ????? en b;leu >-1 et en rouge <0 ?????))
La solution se base sur un codage dans la colonne X de "Commande", colonne qui peut être masquée ou placée sur n'importe quelle autre feuille.
revenez si cela ne convient pas

https://www.cjoint.com/c/EAiogAcqkhN

crdlmnt
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712
Modifié par f894009 le 8/01/2015 à 14:35
Bonjour,

Vaucluse, bonne annee


un exemple avec du VBA, masque/affiche ligne(s) tableau Montage en fonction valeur cellules colonne M de commande

https://www.cjoint.com/c/EAioPXM32kM
0
jordane45 Messages postés 38393 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 janvier 2025 4 731
Modifié par jordane45 le 8/01/2015 à 15:13
Bonjour à tous
Encore une autre façon de faire.. là aussi avec du VBA et en se basant sur les valeurs négatives.
https://www.cjoint.com/?0AipkHH7wDJ

Ici.. pas de afficher/masquer les lignes.... Il recréé complètement le tableau (sous-sections comprises) en parcourant (et ce.. peut importe le nombre) les lignes dans la feuille Commande...


Sub test()
Dim lastRCible As Long
Dim lastRsrc As Long
Dim Fsrc As Worksheet
Dim Fcible As Worksheet
Dim plageaTraiter As Range
Dim rangeToMerge As Range

Set Fsrc = Sheets("Commande")
Set Fcible = Sheets("Montage")


lastRsrc = Fsrc.Cells.Find("*", Range("B2"), , , xlByRows, xlPrevious).Row + 1
Set plageaTraiter = Fsrc.Range("B3:M" & lastRsrc)
For Each R In plageaTraiter.Rows
 Debug.Print "------>> Ligne : " & R.Row
 
  'on récupère le titre des sections
  If Fsrc.Cells(R.Row, "B").MergeCells Then
  Debug.Print "Cellules fusionnées.. donc.. sous section !"
    'la cellule est fusionnée..cela correspond à une "sous section"
    'recherche de la première ligne vide dans la feuille de destination
    lastRCible = Fcible.Cells.Find("*", Range("B6"), , , xlByRows, xlPrevious).Row + 1
    Set rangeToMerge = Range(Fcible.Cells(lastRCible, "B"), Fcible.Cells(lastRCible, "F"))
    With rangeToMerge
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    rangeToMerge.Merge
    With rangeToMerge.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.149998474074526
        .PatternTintAndShade = 0
    End With
    rangeToMerge.Font.Bold = True
    Fcible.Cells(lastRCible, "B").Value = Fsrc.Cells(R.Row, "B").Value
  End If
 
 If Fsrc.Cells(R.Row, "M").Value < 0 Then
    Debug.Print "La cellule est négative ! => " & Cells(R.Row, "M").Value
    'recherche de la première ligne vide dans la feuille de destination
    lastRCible = Fcible.Cells.Find("*", Range("B6"), , , xlByRows, xlPrevious).Row + 1
    Fcible.Cells(lastRCible, "B").Value = Fsrc.Cells(R.Row, "B").Value
    Fcible.Cells(lastRCible, "C").Value = Fsrc.Cells(R.Row, "K").Value
    Fcible.Cells(lastRCible, "D").Value = Fsrc.Cells(R.Row, "L").Value
    Fcible.Cells(lastRCible, "E").Value = Fsrc.Cells(R.Row, "M").Value
    Fcible.Cells(lastRCible, "F").FormulaLocal = "=C" & lastRCible & "-D" & lastRCible
    End If

Next


End Sub


PS: Il reste des petites choses à ajouter.. comme le fait de mettre des bordure autour du tableau et de la couleur dans les cellules...
Tu peux aussi ajouter une "remise à zéro" du tableau avant de relancer la macro histoire de ne pas "ajouter" des lignes en doublon...
Mais bon.. ça n'est qu'un exemple de ce qui est faisable.



EDIT : Pour le RAZ du tableau de l'onglet Commande.. tu peux faire ceci
Sub RAZtblCommande()
Dim Fcible As Worksheet
Dim lastRCible As Long
Set Fcible = Sheets("Montage")
lastRCible = Fcible.Cells.Find("*", Range("B6"), , , xlByRows, xlPrevious).Row + 1
Rows(7 & ":" & lastRCible).Delete
End Sub


et le lancer dans la précédente sub ( Sub test() ) via un
 Call  RAZtblCommande() 



Cordialement,
Jordane
0