tableau a plusieurs dimensions

pasquetp

XLDnaute Occasionnel
bonjour,

pour le boulot j'ai fait une macro qui facilite les taches logistiques

j'ai cependant un souci avec une formule qui fait ramer a mort l'ordi

=SI(NB.SI.ENS($G$2:G2,G2,$H$2:H2,H2)=1,1,0)

elle est repete sur environ 43,000 cellulles ( c'est variable car il s'agit d'inventaire en entrepot donc ca evolue quotidiennement)

le moindre changement fait ramer le pc a mort

alors je me suis dis que au lieu de passer par une formule, je pourrai opter sur les tableaux a plusieurs dimensions

quelqu'un s'y connaitrait il?

je recherche a faire ce que la formule ci dessus fait

si la valeur g2 et h2 sont retrouves identiquement par exemple en g480 et h480 alors il faut marquer 0 en colonne AH480

autre exemple si la valeur trouve en G34000 ET la valeur h34000 n'ont jamais ete identifie aupartavant alors il faut que AH34000 soit la valeur 1

Merci de l'aide que vous pourrez m'apporter

Pierre
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : tableau a plusieurs dimensions

Bonsoir
il s'agit d'inventaire en entrepot
???

Si la liste était classée sur G & H il suffirait de prendre 1 si H & G sont différents de ceux de la ligne d'au dessus et 0 s'ils sont pareils.
Mais quel rapport avec un inventaire d'une part, et une macro que vous avez faite d'autre part ?
 

pasquetp

XLDnaute Occasionnel
Re : tableau a plusieurs dimensions

bonsoir,

excusez moi ces details

je recherche une autre solution que la formule mentionnee. elle fait charger le pc

voici un fichier exemple

auriez vous une idee pour avoir la meme resultat que la formule?
 

Pièces jointes

  • Classeur1.xlsm
    9.1 KB · Affichages: 23
  • Classeur1.xlsm
    9.1 KB · Affichages: 36
  • Classeur1.xlsm
    9.1 KB · Affichages: 29
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : tableau a plusieurs dimensions

Il ne faut pas se faire d'illusion, avec plus de 40000 lignes ça prendra toujours quelques secondes s'il faut le faire à chaque fois que quelque chose change. Mais ce qui m'ennuie c'est de ne pas comprendre à quoi ça sert. Si c'est parce que c'est utilisé par une macro, peut être n'en aurait elle plus besoin si elle était écrite différemment.
 

Dranreb

XLDnaute Barbatruc
Re : tableau a plusieurs dimensions

Effectivement comme je m'en doutais pas besoin de cette colonne.

Notez que si vous la voulez quand même, il serait possible de la calculer en faisant la synthèse :
VB:
Private Sub Worksheet_Activate()
Dim Plage As Range, TSyn(), TAp1(), Article As SsGroup, Emplac As SsGroup, _
   Détail, L As Long, Ap1 As Double
Set Plage = ColUti(Feuil2.[A2:C2])
ReDim TSyn(1 To 20000, 1 To 2), TAp1(1 To Plage.Rows.Count, 1 To 1)
Plage.Columns(3).FormulaR1C1 = "=ROW()-1"
For Each Article In GroupOrg(Plage, 2, 1)
   L = L + 1
   TSyn(L, 1) = Article.Id
   TSyn(L, 2) = Article.Count
   For Each Emplac In Article.Contenu
      Ap1 = 1: For Each Détail In Emplac.Contenu
         TAp1(Détail(3), 1) = Ap1: Ap1 = 0: Next Détail, Emplac, Article
Me.[B3].Resize(20000, 2).Value = TSyn
Plage.Columns(3).Value = TAp1
End Sub
 

Pièces jointes

  • GrpOrgPasquetp.xls
    367 KB · Affichages: 49
  • GrpOrgPasquetp.xls
    367 KB · Affichages: 58
  • GrpOrgPasquetp.xls
    367 KB · Affichages: 47
Dernière édition:

pasquetp

XLDnaute Occasionnel
Re : tableau a plusieurs dimensions

Merci de votre reponse et votre aide

votre code est super complexe je dois avouer mais ca marche

toutefois je souhaite vraiment employer cette colonne.

je suis navre de vous ennuyer . ca ne me derange pas si le code pour calculer cette colonne prendra quelques secondes

en continuant a me documenter, j'ai decouvert que les arrays seraient une solution

qu'en pensez vous?
 

pasquetp

XLDnaute Occasionnel
Re : tableau a plusieurs dimensions

bonsoir ,

merci de votre intervention

j'ai fait un test sur 40,000 je crains que la formule donne un temps d'attente tres elevee. la macro est rapide mais la formule cree le souci dont je parlais. je pense qu'il faudrait des donnees pures et non des formules.
 

Dranreb

XLDnaute Barbatruc
Re : tableau a plusieurs dimensions

Bonjour.

Ma dernière version calcule les nombres d'emplacements différents par articles, les nombres d'articles différents par emplacements, et la colonne des 1 pour les 1ères apparitions.
 

Pièces jointes

  • GrpOrgPasquetp.xls
    260 KB · Affichages: 27
  • GrpOrgPasquetp.xls
    260 KB · Affichages: 39
  • GrpOrgPasquetp.xls
    260 KB · Affichages: 37

Si...

XLDnaute Barbatruc
Re : tableau a plusieurs dimensions

salut

une autre propositon (dans ce contexte) à tester quant à la durée pour de grandes listes.
La liste des articles sans doublon doit-être déjà présente ! Sinon un Ctrl C, Ctrl V, Supprimer doublon fera l'affaire.
 

Pièces jointes

  • NombreSi.xlsm
    38.4 KB · Affichages: 28

Dranreb

XLDnaute Barbatruc
Re : tableau a plusieurs dimensions

en continuant a me documenter, j'ai decouvert que les arrays seraient une solution
Ils ne suffiraient pas à eux seuls. Pour éviter une double boucle pénalisante dans une procédure qui ne ferait que mettre cette colonne sans faire de classement ni d'indexation il faudrait un Dictionary:
VB:
Sub Colonne1èreApparition()
Dim Plage As Range, Te(), Ts(), D As New Dictionary, L As Long, Z As String
Set Plage = ColUti(FDonn.[A2:C2])
Te = Plage.Resize(, 2).Value
ReDim Ts(1 To UBound(Te, 1), 1 To 1)
For L = 1 To UBound(Te, 1)
   Z = Te(L, 1) & "|" & Te(L, 2)
   If D.Exists(Z) Then Ts(L, 1) = 0 Else Ts(L, 1) = 1: D(Z) = Empty
   Next L
Plage.Columns(3).Value = Ts
End Sub
Nécessite la référence Microsoft Scripting Runtime
 

pasquetp

XLDnaute Occasionnel
Re : tableau a plusieurs dimensions

Merci encore de vos idees

je vous remercie de vos efforts

je vous remets la structure du fichier

je recherche juste a avoir le resultat de la colonne AH sous forme de macro et non de formule

la macro Dranreb est tres efficace mais je ne maitrise pas un tel langage informatique

serez il possible d'avoir un code avec array ou boucle ou autre afin d'avoir la colonne AH remplie

Encore Merci pour votre aide
 

Pièces jointes

  • Book1.xlsm
    9.5 KB · Affichages: 30
  • Book1.xlsm
    9.5 KB · Affichages: 29
  • Book1.xlsm
    9.5 KB · Affichages: 29