XL 2016 VBA & Charge capa conditionnelle

sebastien450

XLDnaute Occasionnel
Bonjour,
Afin d'aller plus loin dans l'analyse j'aurais besoin d'extraire, via VBA une charge capa conditionnelle.
La difficulté réside dans le balayage suivant les 2 axes ( colonnes & lignes) et d'insérer une condition de couleur de cellule.
J'ai fait un fichier simplifié avec le résultat attendu,

Merci à vous,
Sébastien450
 

Pièces jointes

  • Classeur2.xlsx
    12.5 KB · Affichages: 27

sousou

XLDnaute Barbatruc
Bonjour
Un essai que tu peux modifier facilement, suivant ton utilisation réelle.
J'ai considéré qu'il y avait 16 points de mesure par jour (largeur de la fusion des jours) contrairement à ce que tu montres dans l'exemple (17).
A voir si c'est vraiment cela?
 

Pièces jointes

  • Charge.xlsm
    23.7 KB · Affichages: 9

sebastien450

XLDnaute Occasionnel
Je reviens sur mes propos : Il faudrait faire la somme de la valeur contenue dans les lignes 4,12, et 20.
Parfois la valeur est de 1, parfois elle sera de 0,5, ou de 2.... Compter le nombre de case ne suffit malheureusement pas.=> J'ai trouvé en ajoutant la valeur de : Cells(liste(lg), n + monOffset - 1).Value"
 

sebastien450

XLDnaute Occasionnel
Bonsoir sousou,
Excuse moi mais j'ai du refondre un peu le code par rapport à mon fichier origine,
Du coup je me retrpouve avec quelque chose de ce type :

VB:
 v = 5296274: g = 15132391: monoffset = 0: ja = 6750207: bl = 16764006 'variable code couleur, ect ect
liste = Array(8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216)
For X = 4 To 4000 'je balaye les colonnes pour avoir ma date du jour
    If Cells(1, X).Value = CDate(Year(Now) & "/" & Month(Now) & "/" & Day(Now)) Then Exit For ' je trouve la colonne ou se situe la date du jour
Next X

'schema horaire en 2x8 donc step de 16 et boucle sur 16 => A revoir si 3x8 pour passer à 24.
        For c = X To X + 2016 Step 24  ' Je balaye jusqu'a ma colonne du jour + 24 sur un pas de 24 si 3x8 et 16 si 2x8"
                                Cells(1, c).Select: comptv = 0: comptg = 0: compth = 0: compts = 0 ' je selectionne ma date du jour & MAJ des indicateurs a 0
                                monoffset = c
                                For lg = 0 To UBound(liste) ' sur mes ranges définis plus haut (des lignes)'
                                   For n = 0 To Cells(1, X).mergearea.Count - 1 ' je balaye suivant le nombre de cellules comprise dans la colonne de la date (fusion) ??
                                        If (Cells(liste(lg), n + monoffset).Interior.Color = v Or Cells(liste(lg), n + monoffset).Interior.Color = ja Or Cells(liste(lg), n + monoffset).Interior.Color = bl) And IsNumeric(Cells(liste(lg), n + monoffset).Value) Then comptv = comptv + Cells(liste(lg), n + monoffset).Value
                                        If Cells(liste(lg), n + monoffset).Interior.Color = g And IsNumeric(Cells(liste(lg), n + monoffset).Value) Then comptg = comptg + Cells(liste(lg), n + monoffset).Value
                                        compts = comptg + comptv
                                    Next
                                Next
                                'blabla je fais des actions de copie avec compts, comptg, comptv
            next
    end
    '

Ma difficulté est que je fait avoir tantot un planning 2X8 = 16 colonnes tantot 3X8 = 24.
Et là je séche... car il faudrait le définir avant mon STEP 24 et donc avoir une nouvelle variable
 
Dernière édition:

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo