Calcul matriciel avec collage formule
Bonjour à tous,
Je cherche à automatiser la création d'un tableau de suivi.
J'ai différent onglet de zone avec des items rattachés à des centres. Cette feuille est préalablement filtré par noms de centre.
Je souhaite sommer le temps et l'avancement des items des différents centres pour les afficher dans une feuille "global".
Pour cela j'imagine une variable avec une matrice pouvant contenir le temps et mes différents avancement.
Souhaitant que ce calcul soit automatique même si on ajoute un item dans un centre je pense qu'il faut coller la formule créer dans la matrice et là je suis perdu
Les exemples sont plus parlant que des longs discours, attaché un fichier qui fonctionne (Suivi Tx Lot 2) et l'autre à construire automatiquement (test2).
Si vous avez des meilleurs pistes pour le fonctionnement recherché je suis ouvert
Bonjour,
Je constate que mon sujet ne vous fait pas rêver certainement trop de sujet qui s'emboite
J'ai mis de côté le calcul matriciel pour commencer par le début...
Voici ma problématique du jour, comment faire une somme sur des éléments qui varies. La solution envisagée est de regarder à un instant t les items qui appartiennent à un centre, de créer la formule à partir du premier item du centre et du dernier et de coller la formule dans une cellule. Ainsi l'utilisateur après pourra rajouter des items dans un centre en insérant une ligne avant la dernière ligne de ce centre.
Mon problème est de récupérer la 1er et dernière ligne des items rattachés au centre. A vrai dire pour la dernière ligne je dois pouvoir récupérer la variable de ma boucle mais je bloque sur la récupération de la 1er.
Sub sum()
Dim Wb_dep As String
Dim zone, centre As String
Dim i, e, p As Integer
Dim rg As Range
Wb_dep = ...
Sheets("Chantier Global").Select
For p = 13 To Workbooks(Wb_dep).Sheets("Chantier Global").Range("A65536").End(xlUp).Row
zone = Cells(13, 1)
centre = Cells(13, 2)
For i = 5 To Workbooks(Wb_dep).Sheets(zone).Range("A65536").End(xlUp).Row
If Cells(i, 2) = centre Then
Set rg = ActiveSheet.Range(Cells(), Cells())
Sheets("Chantier Global").Cells(p, 4).Formula = "=SUM(" & rg.AddressLocal & " )"
End Sub
Si quelqu'un pouvait m'aiguiller
J'ai finalement avancer avec un sommeprod, cela à bien fonctionner pour sommer des temps en recherchant le centre dans l'onglet de la zone approprié.
Par contre j'ai un problème pour sommer mes avancements. Et là je bloque...
"En manuel" j'ai cette formule pour le centre 1 =SOMMEPROD('P66'!H11:H18;'P66'!P11:P18)/SOMME('P66'!H11:H18)
"en automatique" =SOMMEPROD(('P66'!$B$5:$B$199='Chantier Global'!B17)*('P66'!H5:H199;'P66'!P5:P199)/SOMME('P66'!H5:H199))
qui me renvoi #valeur je ne comprends l'erreur pas de #valeur dans la zone de calcul et matrice de la même taille...
Sub sum()
Dim Wb_dep As String
Dim zone, centre As String
Dim i, e, p As Integer
Dim rg As Range
Wb_dep = ...
Sheets("Chantier Global").Select
For p = 13 To Workbooks(Wb_dep).Sheets("Chantier Global").Range("A65536").End(xlUp).Row
zone = Cells(p, 1)
centre = Cells(p, 2)
For i = 5 To Workbooks(Wb_dep).Sheets(zone).Range("A65536").End(xlUp).Row
If Cells(i, 2) = centre Then
Sheets("Chantier Global").Select
Cells(p, 4).Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT(('" & zone & "'!R5C2:R199C2='Chantier Global'!RC[-2])*('" & zone & "'!R5C7:R199C7))"
Cells(p, 6).Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT(('" & zone & "'!R5C2:R199C2='Chantier Global'!RC[-4])*(('" & zone & "'!R5C8:R199C8,'" & zone & "'!)/SUM('" & zone & "'R5C8:R199C8)))"
End If
Next i
Next p
End Sub
une idée ?
Bonjour,
Je n'arrive pas à me dépatouiller de ma formule avec sommeprod.
J'ai réussi à obtenir mon temps de prod par centre en recherchant le centre dans un onglet :
manuellement : =SOMME('P66'!G12:G19)
Avec la recherche du centre : =SOMMEPROD(('P66'!$B$5:$B$199='Chantier Global'!B14)*('P66'!$G$5:$G$199))
Par contre j'ai un #valeur! pour le calcul de mon % d'avancement de déroulage :
En manuel : =SOMMEPROD('P66'!H12:H19;'P66'!P12:P19)/SOMME('P66'!H12:H19)
En auto =SOMMEPROD(('P66'!$B$5:$B$199='Chantier Global'!B14)*('P66'!H5:H199;'P66'!P5:P199)/SOMME('P66'!H5:H199))
Et là je sèche, j'ai essayé avec un INDIRECT mais je n'arrive pas non plus.
Si une âme charitable passe par là, il aura toute mon estime.