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 Sub

Le 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

578charge-prepav1.xlsm (74.57 Ko)

bonjour,

la syntaxe du if n'est pas correcte, essaie

If xdateaffect(i, 1) <= xdatejour(1, j) and xdatejour(1, j)<= xdateprepa(i, 1) Then

Non ç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 Sub

C'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 Sub

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

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

Rechercher des sujets similaires à "planning charge"