Planning de charge
Bonjour,
Je m'intéresse à vba depuis peu, pour créer un planning de charge. Ce planning doit permettre de suivre par agent les chantiers affectés et leur avancement (ceci j'ai pu le réaliser en utilisant les MFC et les formules classiques).
La où je bloque :
Tout ces chantiers ont un coeff de complexité, allouant un nombre d'heures de préparation par chantier. Je peux donc faire apparaître une charge journalière de préparation par chantier.
J'aimerais maintenant pouvoir sommer par jour la charge de préparation par agent tous chantiers confondus.
Le moyen par lequel j'essaie d'y parvenir actuellement :
Faire apparaître la charge journalière par chantier dans les cases du planning pour chaque chantier, puis faire une somme sur la journée. J'essaie de le faire en déclarant les variables sous forme de tableau + en faisant une boucle itérative mais ça ne fonctionne pas.
Voici le code, il s'agit ici simplement de remplir les cases du planning avec la charge journalière concernée, je n'ai pas encore cherché à faire les sommes journalières.
Sub chargej()
'dimensionnement des variables
Dim i, j As Integer
Dim xdatejour(1, 365) As Variant
For j = 1 To 365 'j = colonnes
xdatejour(1, j) = worksheets("charge").Range("D11:NF11").Value
Next j
Dim xdateaffect(24, 1) As Variant
For i = 1 To 24 'i = lignes
xdateaffect(i, 1) = Sheets("calculs").Range("E4:E28").Value
Next i
Dim xdateprepa(24, 1) As Variant
For i = 1 To 24 'i = lignes
xdateprepa(i, 1) = Sheets("calculs").Range("I4:I28").Value
Next i
Dim xchargejour(24, 1) As Variant
For i = 1 To 24 'i = lignes
xchargejour(i, 1) = Sheets("calculs").Range("D4:D28").Value
Next i
Dim xplanning(24, 365) As Variant
For i = 1 To 24
For j = 1 To 365
xplanning(i, j) = Sheets("charge").Range("D13:NF37").Value
Next j
Next i
For i = 1 To 24
For j = 1 To 365
If xdateaffect(i, 1) <= xdatejour(1, j) <= xdateprepa(i, 1) Then
xplanning(i, j).Value = xchargejour(i, 1).Value
End If
Next j
Next i
End SubLe debogage bloque sur le IF et renvoie l'erreur 13 : incompatibilité de type
je ne trouve pas la solution...
Si quelqu'un pouvait m'éclairer ça serait top,
merci
bonjour,
la syntaxe du if n'est pas correcte, essaie
If xdateaffect(i, 1) <= xdatejour(1, j) and xdatejour(1, j)<= xdateprepa(i, 1) ThenNon ça ne change rien... même erreur même ligne
Sub chargej()
'dimensionnement des variables
Dim i, j As Integer
Dim xdatejour(1, 365) As Variant
For j = 1 To 365 'j = colonnes
xdatejour(1, j) = worksheets("charge").Range("D11:NF11").Value
Next j
Dim xdateaffect(24, 1) As Variant
For i = 1 To 24 'i = lignes
xdateaffect(i, 1) = Sheets("calculs").Range("E4:E28").Value
Next i
Dim xdateprepa(24, 1) As Variant
For i = 1 To 24 'i = lignes
xdateprepa(i, 1) = Sheets("calculs").Range("I4:I28").Value
Next i
Dim xchargejour(24, 1) As Variant
For i = 1 To 24 'i = lignes
xchargejour(i, 1) = Sheets("calculs").Range("D4:D28").Value
Next i
Dim xplanning(24, 365) As Variant
For i = 1 To 24
For j = 1 To 365
xplanning(i, j) = Sheets("charge").Range("D13:NF37").Value
Next j
Next i
For i = 1 To 24
For j = 1 To 365
If xdateaffect(i, 1) <= xdatejour(1, j) And xdatejour(1, j) <= xdateprepa(i, 1) Then
xplanning(i, j).Value = xchargejour(i, 1).Value
End If
Next j
Next i
End SubC'est peut être lié au fait que les tableaux sont dans des classeurs différents ?
re bonjour,
sans chercher à comprendre ce que tu cherchex à faire, il y a encore d'autres erreurs de syntaxe voici la correction
Sub chargej()
'dimensionnement des variables
Dim i, j As Integer
Dim xdatejour As Variant
xdatejour = Worksheets("charge").Range("D11:NF11").Value
Dim xdateaffect As Variant
xdateaffect = Sheets("calculs").Range("E4:E28").Value
Dim xdateprepa As Variant
xdateprepa = Sheets("calculs").Range("I4:I28").Value
Dim xchargejour As Variant
xchargejour = Sheets("calculs").Range("D4:D28").Value
Dim xplanning As Variant
xplanning = Sheets("charge").Range("D13:NF37").Value
For i = 1 To 25
For j = 1 To 365
If xdateaffect(i, 1) <= xdatejour(1, j) And xdatejour(1, j) <= xdateprepa(i, 1) Then
xplanning(i, j).Value = xchargejour(i, 1).Value
End If
Next j
Next i
End Subre bonjour,
Merci pour les corrections
Le code s'exécute sans bugs mais rien ne se passe... les valeurs ne s'inscrivent pas dans les cases voulues
rkts a écrit :re bonjour,
Merci pour les corrections
Le code s'exécute sans bugs mais rien ne se passe... les valeurs ne s'inscrivent pas dans les cases voulues
normal, tu n'as pas d'instruction qui écrive dans les cases
ajoute
xplanning(i, j).Value = xchargejour(i, 1).Value
sheets("charges").cells(i+11,j+3)=xplanning(i,j)mais, cela ne donnera aucun résultat car ta colonne I (xdateprepa) est vide
Merci j'ai corrigé toutes les erreurs et j'obtiens le résultat voulu.
Merci encore