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

XL pour MAC Calcul

amelie75

XLDnaute Occasionnel
Bonsoir besoin de votre aide
les infos demander sont en FEUIL2
Objectif : me dire en P4/21 combien de fois le chiffre 1 à 18 et sortie
et pour savoir ça il devra aller chercher les information de D4/D390
idem pour Q4/W4
Merci d'avance pour votre aide
 

Pièces jointes

  • Zeshow (2).xlsx
    678.6 KB · Affichages: 7

soan

XLDnaute Barbatruc
Inactif
Bonjour Amélie,

regarde "FEUIL2" ; c'est inchangé ; fais Ctrl e ➯ travail effectué !

à toi de vérifier très soigneusement tous les résultats.



code VBA (22 lignes) :

VB:
Option Explicit

Sub Essai()
  If ActiveSheet.Name <> "FEUIL2" Then Exit Sub
  Dim dlg&: dlg = Cells(Rows.Count, 3).End(3).Row: If dlg < 4 Then Exit Sub
  Dim N(1 To 18) As Byte, lig&, c1 As Byte, c2 As Byte, v As Byte, k As Byte
  Application.ScreenUpdating = 0: [P4:W21].ClearContents
  For c1 = 4 To 11
    Erase N
    For lig = 4 To dlg
      With Cells(lig, c1)
        If .Interior.ColorIndex = -4142 Then
          v = Val(.Value): If v >= 1 And v <= 18 Then N(v) = N(v) + 1
        End If
      End With
    Next lig
    For k = 1 To 18
      lig = k + 3: c2 = c1 + 12: If N(k) > 0 Then Cells(lig, c2) = N(k)
    Next k
  Next c1
End Sub



edit : la solution de sylvanu est meilleure que la mienne ; c'est ICI.

(je laisse quand même ma solution pour ceux qui ont envie de voir un code VBA)

soan
 

Pièces jointes

  • Zeshow (2).xlsm
    682 KB · Affichages: 6
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@Phil

j'ai vu ton fichier modifié.

d'abord, je vois de suite que tes résultats sont les mêmes que les miens (même si moi je n'affiche pas les 0) ; ensuite, je regarde ta formule de P4 : =NB.SI(D$4:D$390;$O4) ; je me dis : « c'est pas possible ! comment, avec une telle formule, tu as pu éviter les nombres sur fond jaune des en-têtes de colonnes ? ».

j'ai cherché un moment avec la seule lecture de ta formule, puis ensuite mdr !!! j'ai vu que tu as tout simplement effacé les en-têtes de colonnes sur fond jaune !!! oh la bonne blague !!! mais là, tu as triché ! car en faisant ça, tu as changé les données du problème !

alors même si tu as écrit dans ton post #3 que la répétition des jours ne sert à rien, ça m'étonnerait beaucoup qu'Amélie s'en contente ! (ou alors elle n'est pas difficile !) ; car la répétition des jours est bien pratique et utile pour mieux repérer ces nombres 1 à 8 pour chacun des mois ; et ce même si les volets sont figés pour les 3 premières lignes.

ou alors, si on peut s'en passer, alors autant supprimer toutes les lignes dont "D:K" est sur fond jaune, sauf pour la ligne 2.​

soan
 

soan

XLDnaute Barbatruc
Inactif
Bonjour sylvanu,

j'ai vu la formule de ton post #6 ; c'est vraiment une très bonne idée, ton critère "<>JOUR" ! du coup, ma solution avec macro devient inutile ! Amélie peut prendre ta solution plutôt que la mienne !

pour le cas où Amélie préfèrerait ne pas voir les zéros : il suffit de mettre pour la plage P4:W21 ce format de nombre personnalisé : 0;;

je laisse quand même ma solution pour ceux qui ont envie de voir un code VBA.

soan
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
@soan,
Sur XL tout problème peut être résolu par formules, par VBA, par PowerQuery ... le choix est fonction du contexte, et là où l'utilisateur est le plus à l'aise.
Pour supprimer les 0 le plus simple est de faire :
VB:
=SI(NB.SI.ENS(D:D;$O4;$C:$C;"<>JOUR")=0;"";NB.SI.ENS(D:D;$O4;$C:$C;"<>JOUR"))
Mais on peut garder une approche en VBA avec :
Code:
Sub Total()
    [P4:W21].FormulaLocal = _
    "=SI(NB.SI.ENS(D:D;$O4;$C:$C;""<>JOUR"")=0;"""";NB.SI.ENS(D:D;$O4;$C:$C;""<>JOUR""))"
    [P4:W21].Value = [P4:W21].Value
End Sub
 

amelie75

XLDnaute Occasionnel
bonjour et merci
pourquoi on et obliger de faire ctrl e ça ne peut pas se calculer automatiquement
 

Discussions similaires

Réponses
1
Affichages
376
Réponses
13
Affichages
944
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…