Automatisation calcul

loulou35

XLDnaute Nouveau
Bonjour à tous,

Je suis nouvelle sur ce forum, j'ai déjà eu beaucoup d'aide de votre part sans même m'inscrire, aujourd'hui je viens vers vous pour des sujets VBA qui dépassent (a mon sens) mes connaissances.

Je cherche à créer une macro excel:

Objectif:
Dans la feuille 2 Rapprochement:Remplir la colonne Mandays (C)

Comment?
A partir de la feuille 1 (Export) pour chaque projet calculer la somme des Mandays (colonne BF) en fonction d'un autre critère qui est la date (colonne BC) (genre une box dans laquelle on saisirait la date a partir de laquelle on veut sommer)

Ou?
Inserer pour chaque projet le résultat en Colonne Mandays (C) de la feuille (Rapprochement)

Petit plus: rajouter une fonction permettant de lister les projets pour lesquels la somme des Mandays n'a pas été calculée et les copier dans un dernier onglet (Ligne en erreur)

Please help, je ne cherche pas forcement a avoir quelque chose de tout fait, j'ai la logique mais ne maitrise pas encore assez VBA pour réaliser cette macro, quelqu'un peut m'aider?
 

Pièces jointes

  • Exemple.xlsx
    11 KB · Affichages: 64
  • Exemple.xlsx
    11 KB · Affichages: 67
  • Exemple.xlsx
    11 KB · Affichages: 71

mutzik

XLDnaute Barbatruc
Re : Automatisation calcul

bonjour,

1. je sais pas le autres, mais moi j'ai un fichier totalement vide (à part la 1ère ligne) sans aucune valeur et aucun exemple précis
donc, le nom du fichier est usurpé (lol)

2. je pense qu'une formule sommeprod ou autre devrait te permettre d'arriver à tes fins, mais sans plus de précisions de ta part, ça va être dur ...
 

loulou35

XLDnaute Nouveau
Re : Automatisation calcul

Bonjour Bertrand, merci bcp de ta réponse même si je ne suis pas avancé, j'espère etre plus clair dans ce msg

Le fichier n'est pas vide, fais un "Scroll" horizontal tu pourras voir que les 5 premières lignes du tableau sont remplies.

Ce fichier est utilisé pour suivre l'allocation des ressources (humaines) sur des projets, aussi je cherche à automatiser le calcul du nombre de JH (Mandays) passés sur un projet depuis une date (La date dont je parle dans mon premier msg)
Puis-je automatiser le calcul des Mandays avec une sommeprod? Si oui comment par VBA?


Merci encore de ta réponse rapide,

Louloutte
 

Modeste

XLDnaute Barbatruc
Re : Automatisation calcul

Bonsoir,

Pour rassurer Bertrand :) et, qui sait, peut-être amener Louloutte à se pencher avec plus d'attention sur son fichier, je ne puis que confirmer que celui-ci ne contient vraiment pas grand chose: il y a bien des données dans les 5 premières lignes, mais dans les colonnes AC et au-delà ... pas de quoi se mettre grand chose sous la dent!

Par contre, le "zeueliste" ... c'est celui qui s'occupe des zieux?? :confused:

Edit: salut François :)
 

Gardien de phare

XLDnaute Accro
Re : Automatisation calcul

Re Modeste et Mutzik et le forum et Louloutte,

Il y a bien 5 lignes à partir de AC, bon après, quoi en faire ?

Zeueliste, zieuxeliste ? sais pas mais on voit à peu près, plus c'est proche du tarif sécu et plus il faut se dire qu'un RV à 12 mois, c'est rapide.
 

loulou35

XLDnaute Nouveau
Re : Automatisation calcul

Bonjour et Re!

Encore merci a vous de vous interesser à mon problème
Je suis consciente que je n'ai pas donné beaucoup de données. (je referai un exemple plus complet dès que possible même si je pense que l'important n'est pas la)

Plus de précisions sur le fichier:

La feuille "Export" est en fait une base de donnée avec de nouvelles lignes ajoutées quotidiennement qui me permet de suivre le consommé en jh (Colonne TIME_Mandays BF) des projets répertoriés par le PRJ TTK ID (colonne AV).
Chaque projet à un ID unique.

Ce que je veux: dans la feuille "rapprochement" est "d'automatiser une somme.si "sur la colonne Mandays (Feuile Export) avec pour chaque projet de la feuille "Rapprochement"

J'espère avoir été plus claire.

Merci beaucoup de votre réactivité mes loulous, on se sent tout de suite moins seul(e)

Louloutte
 

job75

XLDnaute Barbatruc
Re : Automatisation calcul

Bonjour à tous,

Mais c'est qu'il est super bien votre fichier Louloutte, je verrais bien ça en Rapprochement!C2 :

Code:
=SOMME.SI(Export!AV:AV;B2;Export!BF:BF)
S'il faut en plus une condition de date utilisez SOMMEPROD (Excel 2003) ou SOMME.SI.ENS (Excel 2007/2010).

A+
 

job75

XLDnaute Barbatruc
Re : Automatisation calcul

Re,

Mais en fait Louloutte veut construire le tableau automatiquement.

Alors cette macro dans le fichier joint :

Code:
Sub Tableau()
Dim dat As Variant, d As Object, cel As Range, lig&, adr1$, adr2$
Feuil2.Activate 'CodeName de la feuille 'Rapprochement'
Rows("2:" & Rows.Count).ClearContents
dat = [F1] '= InputBox("Date (facultative) de début de compte :", "Date")
If IsDate(dat) Then dat = CDate(dat) Else dat = "aucune"
[F1] = dat
Set d = CreateObject("Scripting.Dictionary")
On Error Resume Next 's'il n'y a pas de valeurs
With Feuil1 'CodeName de la feuille 'Export'
  For Each cel In .Range("AV2:AV" & Rows.Count).SpecialCells(xlCellTypeConstants)
    If Not d.Exists(cel.Value) Then d.Add cel.Value, cel.Offset(, 1)
    lig = cel.Row
  Next
  adr1 = "'" & .Name & "'!" & .Columns("AV").Resize(lig).Address(ReferenceStyle:=xlR1C1)
  adr2 = "'" & .Name & "'!" & .Columns("BC").Resize(lig).Address(ReferenceStyle:=xlR1C1)
End With
[A2].Resize(d.Count) = Application.Transpose(d.Items)
[B2].Resize(d.Count) = Application.Transpose(d.Keys)
If dat = "aucune" Then
  [C2].Resize(d.Count).FormulaR1C1 = "=COUNTIF(" & adr1 & ",RC2)"
Else
  [C2].Resize(d.Count).FormulaR1C1 = "=SUMPRODUCT((" & adr1 & "=RC2)*(" & adr2 & ">=R1C6))"
End If
[C2].Resize(d.Count) = [C2].Resize(d.Count).Value 'facultatif, supprime les formules
End Sub
Nota 1 : je ne me sers pas de la colonne BF de la feuille Export car il y a toujours un 1.

Si ce n'est pas toujours le cas dites-le.

Nota 2 : j'ai mis l'InputBox en commentaire au cas où l'on y tiendrait absolument...

A+
 

Pièces jointes

  • Exemple(1).xls
    67 KB · Affichages: 39
  • Exemple(1).xls
    67 KB · Affichages: 44
  • Exemple(1).xls
    67 KB · Affichages: 50

job75

XLDnaute Barbatruc
Re : Automatisation calcul

Re,

En fait une seule formule avec SOMMEPROD suffit dans tous les cas :

Code:
Sub Tableau()
Dim dat As Variant, d As Object, cel As Range, lig&, adr1$, adr2$
Feuil2.Activate 'CodeName de la feuille 'Rapprochement'
Rows("2:" & Rows.Count).ClearContents
dat = [F1] '= InputBox("Date (facultative) de début de compte :", "Date")
If IsDate(dat) Then dat = CDate(dat) Else dat = "aucune"
[F1] = dat
Set d = CreateObject("Scripting.Dictionary")
On Error Resume Next 's'il n'y a pas de valeurs
With Feuil1 'CodeName de la feuille 'Export'
  For Each cel In .Range("AV2:AV" & Rows.Count).SpecialCells(xlCellTypeConstants)
    If Not d.Exists(cel.Value) Then d.Add cel.Value, cel.Offset(, 1)
    lig = cel.Row
  Next
  adr1 = "'" & .Name & "'!" & .[AV1].Resize(lig).Address(ReferenceStyle:=xlR1C1)
  adr2 = "'" & .Name & "'!" & .[BC1].Resize(lig).Address(ReferenceStyle:=xlR1C1)
End With
[A2].Resize(d.Count) = Application.Transpose(d.Items)
[B2].Resize(d.Count) = Application.Transpose(d.Keys)
With [C2].Resize(d.Count)
  .FormulaR1C1 = "=SUMPRODUCT((" & adr1 & "=RC2)*(" & adr2 & ">=N(R1C6)))"
  .Value = .Value 'facultatif, supprime les formules
End With
End Sub
Le calcul sera juste un peu plus long qu'avec NB.SI (sur un grand tableau).

Fichier (2).

A+
 

Pièces jointes

  • Exemple(2).xls
    67 KB · Affichages: 41
  • Exemple(2).xls
    67 KB · Affichages: 47
  • Exemple(2).xls
    67 KB · Affichages: 42

Discussions similaires

Réponses
8
Affichages
442
Réponses
6
Affichages
323
Réponses
5
Affichages
259

Statistiques des forums

Discussions
312 673
Messages
2 090 778
Membres
104 664
dernier inscrit
jth