Résolu [Excel] Index Equiv dans une zone Mobile

Résolu [Excel] Index Equiv dans une zone Mobile - Logiciels - Windows & Software

Marsh Posté le 19-09-2011 à 19:25:24    

Bonjour,
 
J'ai bien cherché je pense sur le forum, mais n'ai pas trouvé ma solution.
 
Je vous colle ci dessous les informations de mes 2 onglets :
 
------------------
 
Onglet 1 " Data":
 
Date            Emballage Changement  d'emballage  
15/09/2011 aaa 1  
16/09/2011 BBB 1  
17/09/2011 CCC 1  
18/09/2011 DDD 1  
19/09/2011 EEE 1  Zone mobile ayant comme première cellule  
20/09/2011 FFF 1  =INDEX(D1:D40;EQUIV(AUJOURDHUI();B1:B40))
21/09/2011 GGG 1  
22/09/2011 HHH 1  
23/09/2011 JJJ 1  
24/09/2011 KKK 1  
25/09/2011 aaa 1  
26/09/2011 aaa 0  
27/09/2011 aaa 0  
28/09/2011 aaa 0  
29/09/2011 GGG 1  
30/09/2011 HHH 1  
01/10/2011 JJJ 1  
02/10/2011 KKK 1  
03/10/2011 aaa 1  
04/10/2011 BBB 1  
05/10/2011 BBB 0  
06/10/2011 BBB 0  
07/10/2011 BBB 0  
08/10/2011 EEE 1  
 
-------------------------------
 

onglet 2 " Indicateur" :

 
   
Aujourd'hui 19/09/2011  
   
   
   
   
Nb d'emballage différent sur 10 jours    ??
NB de changement d'emballage sur 10 jours   =somme(zone mobile)?
-----------------------------------
 
 
Alors,  dans l'onglet Data,  
en colonne 1 , les dates
en colonne 2, les noms des emballage
 en C3, la formule  =si( B3=B2;0;1)    Ceci pour qu'Excel me marque un 1 à chaque changement d'emballage.
 
 
 
Maintenant, plus complexe :
 
Je souhaite que, dans l'onglet Indicateur, Excel me donne le nombre d'emballage différent utilisé entre le 19/09 et +10 jours
 
( Si je fais A/B/A/B/A/B/A/B/A/B en comptant les 1, j'en aurais 10, alors que je n'ai que 2 emballages)
 
et en C4, la formule =somme(1ere cellule de la zone mobile: 10eme cellule de la zone mobile)
 
J'ai déjà un petit qqchose avec la formule ( index("colonneC";Equiv(aujourdhui();colonneA)  
Cela me donne la première valeur de ma futur "zone".
 
 
Suis je compréhensible?
Merci d'avance aux pros


Message édité par Valkeer le 21-09-2011 à 18:21:16
Reply

Marsh Posté le 19-09-2011 à 19:25:24   

Reply

Marsh Posté le 20-09-2011 à 17:04:52    

Excel VBA Compter nombre d'occurences uniques
 
 
Ceci devrait repondre à ton souci.
 

Code :
  1. Function Valkeer(DateJ As Date, NbJour As Integer)
  2. 'On déclare une variable tableau dans laquelle on va venir mettre une seule occurence
  3. Dim Table()
  4. 'on calcule la date de fin avec les 10 jours pour ne pas depasser
  5. DateFin = DateAdd("d", NbJour + 1, DateJ)
  6. 'On dimensionne la variable tableau du nombre de jour max
  7. ReDim Table(NbJour)
  8. 'Pointeurs
  9. Trouve = False
  10. z = 0
  11. Cpte = 0
  12. 'On recherche dans la colonne A où se trouve la date à selectionner
  13. For x = 1 To 65536
  14.     If Cells(x, 1) = DateJ Then
  15.         'on affecte 'x' une fois trouvée à une variable. Comme on part de 1, c'est aussi son numéro de ligne.
  16.         CellSchAdr = x
  17.         Exit For
  18.     End If
  19. Next x
  20. 'On va partir de la date trouvée mise en parametre jusqu'a +10 jours
  21. For x = CellSchAdr To CellSchAdr + NbJour
  22. 'on stocke la valeur de la date et celle de l'emballage
  23.     CellActive = Cells(x, 1)
  24.     CellEmb = Cells(x, 2)
  25. 'si on ne depasse pas la date+10 jours
  26.     If CellActive <= DateFin Then
  27.        
  28.         'On regarde dans notre tableau si l'emballage existe
  29.         For i = 1 To NbJour
  30.             If Table(i) = CellEmb Then
  31.                 'si oui, on met le pointeur Trouve à Vrai
  32.                 Trouve = True
  33.             End If
  34.         Next
  35.         'si le pointeur Trouve est faux (donc si on ne trouve pas cet emballage dans le tableau) on l'ajoute au tableau
  36.         If Trouve = False Then
  37.             Table(z) = CellEmb
  38.             z = z + 1
  39.         End If
  40.     End If
  41.     'on reparamatre le pointeur Trouve pour la ligne suivante
  42.     Trouve = False
  43. Next x
  44. 'une fois notre tableau incrémenté avec une seule occurence de chaque emaballage, on les compte
  45. For i = 1 To NbJour
  46.     If Table(i) <> "" Then Cpte = Cpte + 1
  47. Next
  48. Valkeer = Cpte
  49. End Function


 
 
Je pars du principe que ton jour est saisi en Feuil2 et en A1 (donc : 20/09/2011)
 
Donc si sur la Feuil1, en D2 tu saisis :
=Valkeer(Feuil2!A1;10)
 
Là ou est saisie ta date "du jour"
Le nombre de jour pour ta plage ici 10, tu as parlé du 19/09/2011 + 10 jours
 
 
EnJoY
 
:jap:


Message édité par SuppotDeSaTante le 20-09-2011 à 17:06:48

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 21-09-2011 à 18:20:55    

Bonjour,
 
Merci pour cette réponse.
Entre temps, j'ai trouvé une parade de formule
 
Zone mobile = B?:B?  en fonction des dates recherché
 
 
Il faut identifier la première cellule de la zone mobile : en F2 dans mon exemple
=concatener("c",equiv(Date d'entrée,b:b)
 
La dernière cellule , en F3 dans mon exemple
=concatener("c",equiv(Date de fin,b:b)
 
Identifier la zone  en I2
=concatener(F2,"",F3)      résultat==> C6:C15
 
 
On a donc maintenant les coordonnée de la zone mobile
 
Il suffit donc de mettre cette formule dans un cellule :
=SOMMEPROD(1/NB.SI(INDIRECT(I2);INDIRECT(I2)))   ==> 7  
 
Ce qui nous donne le nombre de valeur différente dans la zone, et par conséquent le nombre de mes emballage différent.
 
 
 
Merci pour ta fonction , je crois que je vais me pencher un peu plus sur le VBA
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed