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
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 SubMerci mais j'ai une derniere requete...
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
(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"
(re)
Parfait, ça ça me plait ! Très bonne initiative...
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 SubDis-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
etquiquequoidontou a écrit :Parfait BIG MERCI.
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équiquequoidontou a écrit :ENCORE MERCI YOU SAVE ME
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
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...quiquequoidontou a écrit :Ps je t'appelle si je fais une raclette dans une cuve
PS/ Merci pour le lien (en boucle) vers et depuis ton post précédent