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