Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU]Report suivant conditions

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ternoise

XLDnaute Occasionnel
Bonsoir le Forum

Je me retrouve, une fois de plus avec un problème
En pièce jointe, mon fichier épuré.

Ce code me convenait très bien depuis la première utilisation.

.FormulaR1C1 = "=SUMPRODUCT((INDEX(T,,2)=RC2)*(INDEX(T,,3)=R11C),INDEX(T,,9)+INDEX(T,,10))"
.Value = .Value 'supprime les formules
.Interior.Color = &HFF00&

Avec le temps j'aimerais ajouter une condition suivant la valeur d'une autre colonne
L'explication est dans le module 1


Pouvez-vous m'aider ?

Merci
 

Pièces jointes

Dernière édition:
Re : Report suivant conditions

Re à tous

C'est un code dans ce style que je recherche !

Merci de toute aide
David
 
Re : Report suivant conditions

Bonjour Ternoise,

Avec plusieurs types de valeurs pour le tableau, l'entrée d'une formule SOMMEPROD n'est pas la bonne méthode.

Utilisez cette macro :

Code:
Sub Actualisation()
Dim t, ub&, P As Range, i&, nom$, j%, dat#, k&
t = Sheets("DIRECTION").Range("B9:R" & Sheets("DIRECTION").[C65536].End(xlUp).Row)
ub = UBound(t)
Set P = [C12].Resize([B21].End(xlUp).Row - 11, [Q11].End(xlToLeft).Column - 2)
Application.ScreenUpdating = False
Application.EnableEvents = False
P.ClearContents 'RAZ
For i = 1 To P.Rows.Count
  nom = P(i, 0)
  For j = 1 To P.Columns.Count
    dat = P(0, j)
    For k = 1 To ub
      If t(k, 2) = nom And t(k, 3) = dat Then
        P(i, j) = t(k, 9) + t(k, 10)
        If t(k, 4) Like "*REPOS*" Then P(i, j) = "REPOS"
        If t(k, 4) Like "*FERIE*" Then P(i, j) = "JF"
        If t(k, 4) Like "*MALADIE*" Then P(i, j) = "MAL"
        Exit For
      End If
    Next
  Next
Next
Application.EnableEvents = True
End Sub
J'ai aussi créé une MFC à 3 conditions sur le tableau.

Fichier joint.

A+
 

Pièces jointes

Re : Report suivant conditions

Re,

C'est le genre de truc que vous devez maintenant pouvoir programmer tout seul :

Code:
Sub Actualisation()
Dim t, ub&, P As Range, i&, nom$, j%, dat#, k&
t = Sheets("DIRECTION").Range("B9:R" & Sheets("DIRECTION").[C65536].End(xlUp).Row)
ub = UBound(t)
Set P = [C12].Resize([B21].End(xlUp).Row - 11, [Q11].End(xlToLeft).Column - 2)
Application.ScreenUpdating = False
Application.EnableEvents = False
P.ClearContents 'RAZ
P.Interior.ColorIndex = 36 'jaune clair
For i = 1 To P.Rows.Count
  nom = P(i, 0)
  For j = 1 To P.Columns.Count
    dat = P(0, j)
    For k = 1 To ub
      If t(k, 2) = nom And t(k, 3) = dat Then
        P(i, j) = t(k, 9) + t(k, 10): P(i, j).Interior.ColorIndex = 4 'vert
        If t(k, 4) Like "*REPOS*" Then P(i, j) = "REPOS": P(i, j).Interior.ColorIndex = 6
        If t(k, 4) Like "*FERIE*" Then P(i, j) = "JF": P(i, j).Interior.ColorIndex = 45
        If t(k, 4) Like "*MALADIE*" Then P(i, j) = "MAL": P(i, j).Interior.ColorIndex = 3
        Exit For
      End If
    Next
  Next
Next
Application.EnableEvents = True
End Sub

Sub CodeCouleur() 'permet de connaître chaque code couleur
MsgBox ActiveCell.Interior.ColorIndex
End Sub
J'ai bien sûr retiré la MFC.

A+
 

Pièces jointes

Re : Report suivant conditions

Re,

Une chose évidente, mais qu'il est bon de rappeler semble-t-il 🙄

Quand il y a plus de 3 couleurs dans un tableau ça exaspère l'utilisateur car il faut avoir en tête à quoi elles correspondent.

A+
 
Re : Report suivant conditions

Re,
Merci beaucoup cela fonctionne a merveille
Je me retrouve donc avec une dernière difficulté.

Avant votre code, j'ai intégré une copie du tableau vers un autre emplacement.
Après le code, j'avais intégré un petit bout de code provenant de Si...
' For Each C In [C12😛20]
' If Not IsNumeric(C) Then C(1, 25).Copy C
' Next

qui me permettais de remplacer les valeurs non numérique. Forcement cela ne convient plus.

J'aimerais donc un code qui remplace seulement les cellules vides.
Une idée pour cela ?

' If Not IsNumeric(C) Then C(1, 25).Copy C

Sinon...
C'est le genre de truc que vous devez maintenant pouvoir programmer tout seul
Sachez que j’essaie toujours de me débrouiller mais pas facile quand on débute en VBA. L'age y fait peut être aussi !

plus de 3 couleurs dans un tableau ça exaspère

Depuis 5 ans nous travaillons avec ces couleurs donc cela ne gène pas.

Mille merci de votre aide
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…