Macro valeur entre deux dates
Bonjour,
J'ai un fichier récapitulatif de production avec une macro. Cette macro ouvre des fichiers de suivi pour récupérer différentes information.
J'aimerais ajouter à cette macro une fonction supplémentaire, il faudrait que je récupère la production réaliser entre deux date.
J'ai la formule suivante mais je ne sais pas comment l'ajouter à ma macro: =SOMMEPROD((Objectifs!B38:B49>='Synthese Projet'!AL2)*(Objectifs!B38:B49<='Synthese Projet'!AL3)*(Objectifs!D38:D49))
En colonne B il y a les dates
En colonne D le nombre de produits réaliser par jour.
En cellule AL2 la date de début
En cellule AL3 la date de fin.
Je met en PJ les deux fichiers: Synthèse
et fichier de suivi
Mot de passe de la macro: Lila
Merci d'avance pour votre aide.
Bonjour,
Pouvez-vous essayer ceci :
Dim ProdIntervalle as double
Dim fobj as worksheet, fsynt as worksheet
Set fobj = Sheets("Objectifs")
Set fsynt = Sheets("Synthese Projet")
ProdIntervalle = application.sumproduct((fobj.range("B38:B49")>=fsynt.range("AL2")) * _
(fobj.range("B38:B49")<=fsynt.range("AL3")) * fobj.range("D38:D49"))
Cdlt,
Bonjour,
Pouvez-vous essayer ceci :
Dim ProdIntervalle as double Dim fobj as worksheet, fsynt as worksheet Set fobj = Sheets("Objectifs") Set fsynt = Sheets("Synthese Projet") ProdIntervalle = application.sumproduct((fobj.range("B38:B49")>=fsynt.range("AL2")) * _ (fobj.range("B38:B49")<=fsynt.range("AL3")) * fobj.range("D38:D49"))
Cdlt,
Bonjour,
Merci dans un premier temps pour ton aide.
Je viens d'ajouter la macro que tu m'as fourni a celle que j'avais déjà comme ceux ci. Mais cela ne fonction pas. Je ne sais pas si elle est bien placé.
ActiveWorkbook.Sheets("AVANCEMENT").Range("I13").Copy
fdep.Range("AG" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B7").Copy
fdep.Range("AI" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("D12").Copy
fdep.Range("AJ" & ln).PasteSpecial xlPasteValues
classeur.Close False
Next ln
Dim ProdIntervalle As Double
Dim fobj As Worksheet, fsynt As Worksheet
Set fobj = Sheets("Objectifs")
Set fsynt = Sheets("Synthese Projet")
ProdIntervalle = Application.SumProduct((fobj.Range("B38:B49") >= fsynt.Range("AL2")) * _
(fobj.Range("B38:B49") <= fsynt.Range("AL3")) * fobj.Range("D38:D49"))
End Sub
Bonjour,
Pour que le code soit plus lisible, vous pouvez utilisez le logo avec les balises </> pour l'insérer dedans.
Il faudrait que j'ai la macro en entier pour juger.
Car pour l'instant, le code est peu compréhensible :
Sub benetop()
Dim classeur as workbook
Dim fdep as worksheet, favanc as worksheet, fobj As Worksheet, fsynt As Worksheet
Dim ProdIntervalle As Double
Set classeur = workbooks("???") '<<<<
Set fdep = Sheets("???") '<<<<<<<
Set favanc = ActiveWorkbook.Sheets("AVANCEMENT")
Set fobj = Sheets("Objectifs")
Set fsynt = Sheets("Synthese Projet")
With favanc
.Range("I13").Copy
fdep.Range("AG" & ln).PasteSpecial xlPasteValues
.Range("B7").Copy
fdep.Range("AI" & ln).PasteSpecial xlPasteValues
.Range("D12").Copy
fdep.Range("AJ" & ln).PasteSpecial xlPasteValues
End with
classeur.Close False
'Next ln '<<<< next sans for
ProdIntervalle = Application.SumProduct((fobj.Range("B38:B49") >= fsynt.Range("AL2")) * _
(fobj.Range("B38:B49") <= fsynt.Range("AL3")) * fobj.Range("D38:D49"))
End Sub
Et quant au problème de départ, la variable ProdIntervalle stocke bien une valeur suite au calcul (enfin normalement) mais c'est normal qu'il ne se passe rien car cette valeur n'est renvoyée dans aucune cellule du classeur.
Bonjour,
Pour que le code soit plus lisible, vous pouvez utilisez le logo avec les balises </> pour l'insérer dedans.
Il faudrait que j'ai la macro en entier pour juger.
Car pour l'instant, le code est peu compréhensible :
Sub benetop() Dim classeur as workbook Dim fdep as worksheet, favanc as worksheet, fobj As Worksheet, fsynt As Worksheet Dim ProdIntervalle As Double Set classeur = workbooks("???") '<<<< Set fdep = Sheets("???") '<<<<<<< Set favanc = ActiveWorkbook.Sheets("AVANCEMENT") Set fobj = Sheets("Objectifs") Set fsynt = Sheets("Synthese Projet") With favanc .Range("I13").Copy fdep.Range("AG" & ln).PasteSpecial xlPasteValues .Range("B7").Copy fdep.Range("AI" & ln).PasteSpecial xlPasteValues .Range("D12").Copy fdep.Range("AJ" & ln).PasteSpecial xlPasteValues End with classeur.Close False 'Next ln '<<<< next sans for ProdIntervalle = Application.SumProduct((fobj.Range("B38:B49") >= fsynt.Range("AL2")) * _ (fobj.Range("B38:B49") <= fsynt.Range("AL3")) * fobj.Range("D38:D49")) End Sub
Et quant au problème de départ, la variable ProdIntervalle stocke bien une valeur suite au calcul (enfin normalement) mais c'est normal qu'il ne se passe rien car cette valeur n'est renvoyée dans aucune cellule du classeur.
Bonjour,
la macro de départ est la suivante:
Option Explicit
Dim ln&, chemin, nomFichier, classeur, fdep As Worksheet
Sub ZoneTexte1_Cliquer()
Set fdep = ActiveSheet
For ln = 7 To Range("AH" & Rows.Count).End(xlUp).Row
chemin = Range("AH" & ln)
nomFichier = Dir(chemin & "*.xls*")
Set classeur = Workbooks.Open(chemin)
ActiveWorkbook.Sheets("AVANCEMENT").Range("B23").Copy
fdep.Range("C" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B21").Copy
fdep.Range("F" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B22").Copy
fdep.Range("I" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B25").Copy
fdep.Range("J" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B24").Copy
fdep.Range("K" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B4").Copy
fdep.Range("Q" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("D8").Copy
fdep.Range("R" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B4").Copy
fdep.Range("S" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("D9").Copy
fdep.Range("T" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B4").Copy
fdep.Range("U" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("D10").Copy
fdep.Range("V" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B5").Copy
fdep.Range("W" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("D11").Copy
fdep.Range("X" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B6").Copy
fdep.Range("Y" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("D13").Copy
fdep.Range("Z" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("H9").Copy
fdep.Range("AA" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("H10").Copy
fdep.Range("AB" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("H12").Copy
fdep.Range("AC" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("I9").Copy
fdep.Range("AD" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("I10").Copy
fdep.Range("AE" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("I11").Copy
fdep.Range("AF" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("I13").Copy
fdep.Range("AG" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("B7").Copy
fdep.Range("AI" & ln).PasteSpecial xlPasteValues
ActiveWorkbook.Sheets("AVANCEMENT").Range("D12").Copy
fdep.Range("AJ" & ln).PasteSpecial xlPasteValues
classeur.Close False
Next ln
End Sub
A celle ci j'aimerais ajouter la macro que vous m'avez fournis, l'information recueilli doit renseigner la colonne K
merci pour votre aide.
Bonjour,
Je comprends pas tout malheureusement.
Je vois que la colonne K est déjà alimentée par la cellule B24 d'avancement.
Je comprends pas pourquoi cette boucle ? Sur toutes les lignes, vous recopiez les valeurs ?
Et la macro que je vous ai fourni n'est que la vôtre réorganisée (enfin un extrait) et placée sous les balises pour une lecture plus facile du code.
Bonjour,
Je comprends pas tout malheureusement.
Je vois que la colonne K est déjà alimentée par la cellule B24 d'avancement.
Je comprends pas pourquoi cette boucle ? Sur toutes les lignes, vous recopiez les valeurs ?
Et la macro que je vous ai fourni n'est que la vôtre réorganisée (enfin un extrait) et placée sous les balises pour une lecture plus facile du code.
Je pense que l'on sait pas compris, j'ai du mal m'exprimé.
Dans mon fichier Suivi TEST il y a un onglet "Objectif" dans lequel on renseigne la production en colonne D, K, R, AE, AL ET AS face à des dates colonne B.
Dans mon fichier Synthèse je voudrais avoir la production (dans la colonne AK, AL, AM, AN, AO et AP) entre deux date (date que je renseigne en cellule AL2 et AL3)