Activation de macro avec cond. sur une autre feuille part2

Bonjour,

J'ai mis un fichier excel pour illustrer un de mes problèmes sur le forum mais depuis personne ne l'a résolu et mon sujet a été abandonné alors je le relance. le fichier xls est dans le dernier message

https://forum.excel-pratique.com/excel/activation-de-macro-a-partir-de-modif-sur-une-autre-feuille-t98794.html

Merci

Bonjour quiquequoidontou

Pourquoi veux-tu utiliser une macro ?

Si tu utilises des formules adaptées ton tableau fonctionnera tout seul !

Où alors il y a une finalité que je n'ai pas compris...

Comme ta recette de la raclette d'ailleurs... moi je ne fais pas ça en cuve !

Bonjour a toi NCC 1701

oui je ne souhaite pas faire une raclette c'est pour remplir les lignes pour l exemple (et comme c est la saison et que j'avais faim...)

Bref en effet ce n'est qu'une parcelle du document excel qui comporte plus de feuilles, macro et calculs.

Ce qui m’embête c'est lorsqu'il affiche ou fait disparaître une ligne c'est long et ca pique les yeux alors j'aimerai que ma macro s active uniquement à cette condition car il y a beaucoup de ligne à traiter.

Après si tu penses que ca peut se faire uniquement avec une formule... pourquoi pas, dis moi (s'il te plait)

(re)

Je suis soulagé pour la recette de la raclette !

Par contre pour ton besoin... un peu moins, peux-tu m'expliquer ce que tu cherches à faire ?

D'après mes déductions :

tu remplis ta cuve avec des ingrédients [Synthèse]

ET

tu voudrais que les données dans [Chiffrage] soient déduites de ce qui vient de rentrer dans la cuve

Est-ce correct comme analyse ?

re

Enfaîte ce que j'ai mets à la place des ingrédients de la raclette c'est les composants de la cuve que je ne souhaite pas diffuser mais peu importe (tu me fais rire avec les ingrédients de la raclette )

Dans synthèse il y a un résumé de tout le classeur y compris les différents composants de la cuve (ici des ingrédients de raclette mais j aurais pu mettre autre chose c'est pour visualiser si les lignes par la suite). Dans chiffrage (étape en amont de synthèse on ajoute des composants et des quantités (0, 1, 2 etc...) et dans synthèse je ré affiche le tableau mais uniquement les lignes pour lesquelles la quantité est non nulle dans chiffrage. J’espère que c'est plus claire...

(re)

Peut-être, peut-être...

à tenter ce code à mettre dans un module standard (pas celui d'une feuille)

Par contre je n'ai pas compris à quoi sert

Private Sub Worksheet_Change(ByVal Target As Range)

de la feuille Chiffrage (peut être l'un de tes essais pour résoudre le problème ?)

en tout cas dans ma procédure je le désactive avec "Application.EnableEvents := False" parce que sinon le code plante...

je remet "Application.EnableEvents" à Vrai (True) en fin de procédure

Sub Synthetiser()
Dim wsChif As Object
Dim wsSynt As Object

Dim tabChif()
Dim tabSynt()
Dim ligFinSynt
Dim ligFinChif

Dim cptChif
Dim nbrSynt

Dim actRect

    Application.EnableEvents = False

    Set wsChif = Worksheets("Chiffrage")
    Set wsSynt = Worksheets("Synthèse")

    With wsChif
        ligFinChif = .Cells(Rows.Count, 2).End(xlUp).Row
        tabChif = Range(.Cells(15, 2), .Cells(ligFinChif, 12))
        actRect = .Cells(12, 3)
    End With

    nbrSynt = 0
    ReDim tabSynt(1 To 4, 1 To 1)
    With wsSynt

        ligFinSynt = .Cells(Rows.Count, 2).End(xlUp).Row
        Range(.Cells(9, 2), .Cells(ligFinSynt, 5)).ClearContents

        For cptChif = 1 To UBound(tabChif, 1)
            If Not (tabChif(cptChif, 5) = 0) Then
                nbrSynt = nbrSynt + 1
                ReDim Preserve tabSynt(1 To 4, 1 To nbrSynt)
                tabSynt(1, nbrSynt) = actRect
                tabSynt(2, nbrSynt) = tabChif(cptChif, 5)
                tabSynt(3, nbrSynt) = tabChif(cptChif, 1)
                tabSynt(4, nbrSynt) = tabChif(cptChif, 4)
            End If
        Next

        .Cells(9, 2).Resize(UBound(tabSynt, 2), UBound(tabSynt, 1)) = WorksheetFunction.Transpose(tabSynt)

    End With

    Set wsSynt = Nothing
    Set wsChif = Nothing

    Application.EnableEvents = True

End Sub

Merci mais j'ai une derniere requete... c'est un peu genant...

Ton code fonctionne a la perfection et je pensais donc pouvoir le retranscrire dans un module de mon excel et l'appeler grace à un bouton (jusque la rien de compliquer...)

Seulement dans chiffrage j'ai plus de tableaux et dans synthèse le tableau est plus bas (il commence a la ligne 89)...

Et enfaite je suis incapable de savoir qu'elle numero de ligne ou colonne changer car je comprends pas bien les fonctions que tu as utilisé, bref je suis perdu. Est ce que tu pourrais le refaire avec la position exact des tableaux comme dans ma piece jointe (j'ai modifié les emplacements à la localisation exact du mien)

11chiffrage.zip (14.17 Ko)

(re)

Désolé pour la réponse un peu (sèche) peut être...

Quand allez-vous comprendre qu'un tableau sur Excel DOIT être homogène et d'un seul tenant

Je n'aime pas ce genre de structuration... il y a toujours un moyen de faire UN SEUL TABLEAU pour une même donnée, ou alors il faut faire UN TABLEAU pour chaque donnée mais sur des feuilles différentes, au pire sur des colonnes différentes. Mais jamais, Jamais, JAMAIS les uns sous les autres !

Bref

Est-il envisageable donc... de "restructurer" ta feuille [Chiffrage] pour qu'elle colle à la théorie Excel ?

Deuxième question (subsidiaire) combien y a-t-il de tableaux (en vrai aujourd'hui) et demain ?

Ces questions pour tenter de trouver une réponse Excellement correcte à ton problème !

J'ai trois tableaux et le nombre de tableaux ou de lignes ne va pas varier plus que cela. J'ai simplifier selon la "théorie d'excel"

22chiffrage.zip (17.86 Ko)

(re)

Parfait, ça ça me plait ! Très bonne initiative... si tu continues comme ça tu seras plus fort en Excel qu'en raclette


Par contre désolé si je te fais répéter mais il me vient une question... Que dois-je faire avec le tableau [Chiffrage] ?

Si je comprends bien dans [Chiffrage] tu peux saisir des données n'importe où (dans les 3 parties) et tout cela doit se retrouver dans [Synthèse]

(re)

J'ai un peu modifié la recette le code grâce à tes tableaux "regroupés" cela va forcément plus vite !

En plus il devrait pouvoir s'adapter... aux variations de texture du fromage taille des tableaux..

Regardes les deux 1ère lignes Public Const...

Si les tableaux bougent en hauteur dans tes onglets tu peux faire varier ces nombres pour adapter le code

ligDebChif pour la LIGne de DEBut de l'onglet CHIFfarge

et l'autre pour l'autre !

' Ces deux constantes sont à modifier si l'un ou l'autre des tableaux venait à bouger
Public Const ligDebChif = 13
Public Const ligDebSynt = 89

Sub RacletteEnCuve()
Dim wsChif As Object
Dim wsSynt As Object

Dim tabChif()
Dim tabSynt()
Dim ligFinSynt
Dim ligFinChif

Dim cptChif
Dim nbrSynt

Dim actPost

    Application.EnableEvents = False

    Set wsChif = Worksheets("Chiffrage")
    Set wsSynt = Worksheets("Synthèse")

    With wsChif
        ligFinChif = .Cells(Rows.Count, 12).End(xlUp).Row
        tabChif = Range(.Cells(ligDebChif, 2), .Cells(ligFinChif, 12))
    End With

    nbrSynt = 0
    ReDim tabSynt(1 To 4, 1 To 1)
    With wsSynt

        ligFinSynt = .Cells(Rows.Count, 2).End(xlUp).Row + 1
        Range(.Cells(ligDebSynt, 2), .Cells(ligFinSynt, 5)).ClearContents

        ' Pour conserver le poste en cours
        actPost = tabChif(1, 1)
        For cptChif = 1 To UBound(tabChif, 1)
            If Not (tabChif(cptChif, 5) = 0) Then
                If Not (tabChif(cptChif, 1) = "") Then
                    ' Si la ligne n'est pas vide il faut verifier si c'est un nouveau poste !
                    If Not (tabChif(cptChif, 1) = actPost) Then
                        actPost = tabChif(cptChif, 1)
                    End If
                End If

                nbrSynt = nbrSynt + 1
                ReDim Preserve tabSynt(1 To 4, 1 To nbrSynt)
                tabSynt(1, nbrSynt) = actPost
                tabSynt(2, nbrSynt) = tabChif(cptChif, 5)
                tabSynt(3, nbrSynt) = tabChif(cptChif, 2)
                tabSynt(4, nbrSynt) = tabChif(cptChif, 4)
            End If
        Next

        .Cells(ligDebSynt, 2).Resize(UBound(tabSynt, 2), UBound(tabSynt, 1)) = WorksheetFunction.Transpose(tabSynt)

    End With

    Set wsSynt = Nothing
    Set wsChif = Nothing

    Application.EnableEvents = True

End Sub

Dis-mois si la cuve n'attache pas trop le code fonctionne bien !

Je crois bien que tu m'as donné envie de d'essayer ta recette

Re

Haha j'espère garder un meilleure niveau en raclette qu'en excel mais grace à toi j'ai progressé en excel. Avec tes commentaires j'ai pu faire 2-3 modifs c'est tout ce que je voulais. Parfait BIG MERCI.

Il faut juste que je rajoute de la mise en forme pour marquer la différence entre les différents poste dans les lignes (modif du contour de la cellule, gras, couleur, ...) Bref je vais essayer de gérer pour la suite

ENCORE MERCI YOU SAVE ME

Ps je t'appelle si je fais une raclette dans une cuve

Bonjour QuiQueQuoiDontOu (ToutExcelDansUneCuvePourRaclette)

Tout d'abord merci pour

quiquequoidontou a écrit :

Parfait BIG MERCI.

et
quiquequoidontou a écrit :

ENCORE MERCI YOU SAVE ME

même si dans le cas de ce dernier je pense que c'est plutôt l'honneur de la raclette que j'ai sauvé

Bref en tout cas je suis persuadé que tu as compris qu'avec Excel plus c'est simple et organisé plus c'est facile à gérer et surtout à faire évoluer Bon courage pour les quelques modifs...

quiquequoidontou a écrit :

Ps je t'appelle si je fais une raclette dans une cuve

là par contre je ne sais pas si tu peux réussir à me convaincre de la faisabilité de la chose, mais bon tient moi au courant...

PS/ Merci pour le lien (en boucle) vers et depuis ton post précédent

Rechercher des sujets similaires à "activation macro cond feuille part2"