Need some help...

youne62

XLDnaute Nouveau
Bonjour,

Je me suis mis au langage VBA depuis une semaine par auto-apprendtissage mais bon, cela reste laborieux!

J'ai réussi à récupérer le code d'un programme dans l'entreprise où j'effectue mon stage, il permet de générer des lignes en fonction d'une valeur (nombre de palettes). Lorsqu'une des lignes générées est "débloquée", on soustrait le temps de triage de cette palette au temps total de triage affichée seulement sur la ligne principale qui a généré toutes les autres lignes (colonne P ou 16).
Ce temps total est calculé automatiquement en fonction du temps de triage par palette que l'on entre manuellement (colonne O ou 15) multiplié par le nombre de palette (colonne I ou 9).

J'ai une colonne où je veux indiquer le temps total seulements sur la ligne principale et qui multiplie la valeur de la cellule de la ligne principale colonne O par la celulle de la ligne principale colonne I.

exemple : si je rentre nbre de palette = 5 et que tps de triage = 4 alors temps eval = 20 sans que cela s'affiche dans les lignes générées(je crois, si j'ai bien compris, que c'est .clearcontents qui fait sa?)

Je ne sais pas si j'ai été clair et précis dans mes explication mais je vous donne ce code pour pouvoir comprendre ce que j'essaie d'expliquer :)

Sub repet()
On Error GoTo gestion
derlig = [E8].End(xlDown).Row
If Cells(derlig, 9).Value = "" Then
MsgBox "Veuillez entrer le nombre de palettes"
Cells(derlig, 9).Select
End
End If
If Cells(derlig, 15).Value = "" Then
MsgBox "Veuillez entrer un temps estimé de triage par palette"
Cells(derlig, 15).Select
End
End If
If Cells(derlig, 1).Font.ColorIndex = xlAutomatic Then
Application.EnableEvents = False
derlig2 = Cells(derlig, 9).Value
Range(Cells(derlig, 1), Cells(derlig, 15)).AutoFill Destination:=Range(Cells(derlig, 1), Cells(derlig + derlig2, 15)), Type:=xlFillCopy
nb = Cells(derlig, 8).Value / derlig2
Range(Cells(derlig + 1, 8), Cells(derlig + derlig2, 8)).Value = nb
Range(Cells(derlig + 1, 9), Cells(derlig + derlig2, 9)).Value = 1
Cells(derlig, 13).FormulaR1C1 = "=IF(RC[3]=0,""DEBLOCAGE"",""BLOCAGE"")"
Range(Cells(derlig + 1, 13), Cells(derlig + derlig2, 13)).Value = "BLOCAGE"
Range(Cells(derlig + 1, 12), Cells(derlig + derlig2, 12)).ClearContents
Cells(derlig, 16).FormulaR1C1 = "=SUMPRODUCT((palette=""BLOCAGE"")*RC[-1])"
Range(Cells(derlig + 1, 1), Cells(derlig + derlig2, 15)).Font.ColorIndex = 3
Range(Cells(derlig, 12), Cells(derlig + derlig2, 12)).Value = Cells(derlig, 15).Value
End If
gestion:
Application.EnableEvents = True
End Sub

Sivous voulez plus de précision n'hésitez pas à me les demander.

Merci de votre aide.
 

JNP

XLDnaute Barbatruc
Re : Need some help...

Bonjour Youne62 :),
Pas terrible, le titre :mad:...
Si tu mets pas un bout de fichier (sans données confidentielles), ça va pas être évident puisqu'on ne peux même pas tester la macro...
.ClearContents, comme son nom l'indique, sert à nettoyer les contenus des cellules... Je ne pense pas que c'est ce que tu cherches...
Si j'ai un peu compris, tu veux remplir une cellule de plus avec la multiplication du nbre de pallette par le temps par palette. En admettant que nbr est en A et temps est en B, pour mettre le résultat en C, le tout sur la ligne Derlig, ce serait
Code:
Cells(Derlig, 3) = "A" & Derlig & "*B" & Derlig
Bonne journée :cool:
 

youne62

XLDnaute Nouveau
Re : Need some help...

Bonjour JNP,

Je suis désolé pour le titre je ne savais pas du tout comment exprimer cette demande d'aide:eek:

Oui je vois pour clearcontents...j'ai vraiment du mal ce matin!^^
Je vais tenter de mettre le fichier ou plutot une esquisse car comme tu le souligne les données sont confidentielles mais je pense que cela pourrait vous aider à tester la macro.

J'ai tester la formulation que tu m'a donné en justifiant les bonnes cellules et colonnes mais cela ne fonctionne pas (sûrment à cause de la macro en elle-même)

Je cherche à t'envoyer le fichier aussi vite que possible.

Merci d'avoir répondu rapidement à ma demande!!
 

youne62

XLDnaute Nouveau
Re : Need some help...

Problème résolu

par apprendtissage encore (il m'en a fallu du temps tout de même)
j'ai codé cela :

Code:
Cells(derlig, 12).Value = ((Cells(derlig, 9)) * (Cells(derlig, 15)))

Sa ne m'a pas l'air très orthodoxe mais efficace.

je cherchais beaucoup plus compliqué en essayant de faire
code
Code:
Cells(derling, 12).formulaR1C1 = Product((Cells(derlig, 9)) * (Cells(derlig, 15)))
entres autres
bref, il me faut donc encore du temps pour essayer de ne plus poster ici quand j'aurais un problème ;)

Merci de ton aide quand même ^^
 

youne62

XLDnaute Nouveau
Re : Need some help...

Merci pour la correction!

J'avais mal compris la première formule que tu m'avais donnée mais effectivement c'était bien la bonne!

pffff dur l'apprentissage... car justement quand tu ajoute un
Code:
"=I" & derling
cela diffère en quoi de
Code:
(Cells(derlig, 9)
?
c'est juste une autre forme d'écriture possible?

Merci de ta réponse en tout cas!
 

JNP

XLDnaute Barbatruc
Re : Need some help...

Re :),
En utilisant (Cells(derlig, 9), tu mets le résultat du calcul dans la cellule.
En utilisant "=I" & derling, tu mets le calcul du résultat dans la cellule.
La différence est subtile, et le résultat aussi :p...
Dans le premier cas, tu mets 9 quand c'est 3 palettes en 3 heures,
dans le deuxième, tu mets = nbre palette * temps par palette...
Maintenant, il n'y a pas de solution meilleure qu'une autre, tout dépends de ce que tu souhaites :D!!!
Bon courage :cool:
 

youne62

XLDnaute Nouveau
Re : Need some help...

Merci pour l'explicatio je pense avori saisie la nuance!!

Dans mon cas ton choix est le plus judicieux car il va falloir que j'explique cela à mon maître de stage.
Ainsi pour la compréhension il vaut mieux mettre le calcul dans la cellule que le résultat du calcul simplement, et c'est excatement ce que tu m'as décrit!

Merci beaucoup!

bye
 

Statistiques des forums

Discussions
312 654
Messages
2 090 563
Membres
104 577
dernier inscrit
GOGNAN