tableau a plusieurs dimensions

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 !

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:
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

Dernière édition:
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.
 
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

Dernière édition:
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?
 
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.
 
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

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

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
 
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

- 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
Retour