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

Microsoft 365 Identifier des dépendances

WTF

XLDnaute Impliqué
Bonjour le forum,

Je vous sollicite aujourd'hui pour m'aider sur un projet pro.

J’ai une base de données de plusieurs milliers de lignes qui reprend des caractéristiques de sociétés :

  • Date_sit : correspond à la date de l’extraction
  • Type_info :
  • 1-Global : caractéristiques d’une société. La société1 a son siège social dans tel pays. X titres composent son capital
  • 2-Detail : la société1 détient X titres du capital de la société 948 sur un total de Y
  • code_ass_soc_detentrice :
  • nom_soc_detentrice :
  • soc_detenu
  • nbr_titre_total
  • nbr_titre_detenu
L’objectif est de déterminer le périmètre d’un groupe en choisissant une société détentrice (peut être dans un formulaire ?), donc d’identifier toutes ses filles en cascade :






Aujourd’hui je fais des formules en cascade très compliquées sur un fichier très lourd et ca ne fonctionne pas bien.

Je voudrais aussi « couper les boucles », c’est-à-dire ne pas descendre plus bas si je détiens moins de 5%.

Dans mon fichier joint, j’ai mis un exemple de la cible attendue.

J’avoue ne pas trop savoir par quel bout commencer, mais je pense qu’il faut sortir des formules car le calcul est très lourd.



Un grand merci pour votre aide.
 

Pièces jointes

  • TEST.xlsx
    166.8 KB · Affichages: 4
Dernière édition:

WTF

XLDnaute Impliqué
Bon. J'avance très doucement, surtout que je suis une bille en VBA, donc je ne fonctionne que par l'enregistreur de macro...

j'ai mis dans un nouvel onglet, la liste des sociétés "mère".


Etape 1 : Je voudrais à partir d'un sélecteur (menu déroulant ?) pourvoir choisir la société mère dans cette liste.
Il faut donc faire 1 filtres : colonne C = menu déroulant

Mon code donne ca :

VB:
Sub Perimetre()
'
Sub Macro1()
'
' Selectionner les données de la mère
'
    Dim Société_Mère As String
    Société_Mère = Cells(3, 2)

    Range("C1").Select
    Sheets("Titriz").Activate
    ActiveSheet.Range("$A$1:$K$2133").AutoFilter Field:=3, Criteria1:=Société_Mère
     Selection.CurrentRegion.Select
     Selection.Copy

'Aller à la feuille résultat et coller les lignes :
    Sheets("Résultat").Select
    Range("A1").Select
    Selection.End(xlDown).Select
    ActiveSheet.Paste


End Sub

Comment faire pour attacher un menu déroulant au 1er filtre avec la liste des éléments de l'onglet mère ?

Etape 2 :
Je sélectionne toutes les lignes et je les copie sur un nouvel onglet
'=> bon je n'arrive pas à ne pas sélectionner à chaque fois la ligne de titres mais peut être qu'a la fin de ma macro je supprimerais tout d'un seul coup..

Etape 3 :
Je refais l'opération en boucle en reprenant chacun des résultat de l'étape 2 (colonne soc_detenue) pour voir si une société détenue par la mère détient une société en dessous).
Je fais un copier coller de toutes les nouvelles entités dans ma base.
=> la je suis complètement perdu

Etape 4 :
Je répète l'opération jusqu’à ce que j'ai identifié toutes les filles des filles....
 

Pièces jointes

  • TEST.xlsm
    182.4 KB · Affichages: 6
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

pas beaucoup de réponse...
En postant ça la veille de noël dénote d'un certain optimisme ;-)
Je ne sais pas si c'est toujours d'actualité, mais comme j'avais mis ça de coté et que j'ai trouvé un peu de temps, voilà le résultat.
Je cumule les participations pour ne sortir qu'une ligne par société fille.
Dans ton exemple on aurait pour S4 56% (0.8*0.2+0.4)
Pour S741 par exemple ça permet de passer de 229 lignes à 45. Pas sûr a posteriori que ça t'arrange, tu diras.

Pour l'instant je ne sors que le code société et le %.
Valide déjà les résultats sur quelques exemples, ensuite on verra ce que tu veux ajouter comme données.
Il suffit de sélectionner la mère en B3 pour lancer la macro.
En l'état il ne faut pas dépasser 65535 filles. Préciser si ça peut dépasser que j'adapte.

Et bonne année 2020 à tous
eric
 

Pièces jointes

  • Test.xlsm
    189.8 KB · Affichages: 7
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…