GEDCOM (Généalogie) - Création des familles

Bonjour à tous,

Je m’arrache les cheveux (Mais j’en ai plus…)

Après extraction de fichier Gedcom (Généalogie) vers Excel, il s’avère que certains fichiers ne sont pas complets et renseignés de la même façon. Pas de problème pour les individus (ID_IDIVIDU) et les parents (ID_PERE et ID_MERE) mais c’est la famille qui me manque (ID_FAM) assez souvent.

Donc la solution est de les créer en effectuant une boucle sur les ID_PERE et ID_MERE pour créer une famille (Ex. FAM1) et ainsi de suite mais tout cela lié aux individus.

Exemple

I1 (ID_INDIVIDU) a pour père I2 (ID_PERE) et pour mère I3 (ID_MERE) donc fait partie de la famille 1 soit FAM1 (L'ordre des familles n'a pas d'importance c'est suivant les familles créées précédemment)

Mais I3 à aussi I2 et I3 comme parent donc sa famille est FAM1

Dans les boucles dès lors que les parents sont nouveaux il y a une nouvelle famille qui prend le dernier numéro de famille et ainsi de suite…

Je vous vous joint un fichier avec pour exemple la FAM1 et la FAM2... l'indexation des familles s'effectuer de la ligne 2 à la dernière ligne non vide de la colonne A

Et pour ma part l’idée des recherches et création par boucle … ce n’est pas mon fort, même que je suis un tantinet « Nul »

Je vous joint un fichier pour prendre connaissance de ma problématique.... en espérant que l'un de vous ai la solution de génie mais je n'ai aucun doute...

Pour info ce n'est pas urgent.... Merci par avance

34gedcom-individus.xlsx (165.99 Ko)

bonjour,

une proposition, a tester

57gedcom-individus.xlsm (231.81 Ko)

Bonjour H2so4,

Un seul mot "BLUFFANT" !!! Merci beaucoup mais je vais essayer de comprendre cette programmation qui est très efficace et qui va me permettre de gagner un temps considérable. C'était l'élément manquant que j'avais pour reconstruire une famille avec ses enfants.

Donc maintenant je vais pouvoir intégrer l'ensemble des données d'un fichier Gedcom dans un fichier Excel paramétré pour la gestion de la généalogie (Sosa et collatéraux inclus) que je mets à disposition. Je ne manquerai pas de mentionner dans la programmation l'auteur de cette manipulation. Encore merci H2so4

Bonjour à tous,

si je ne m'abuse h2so4, avec If idp <> "" And idm <> "" Then tu exclues les familles mono-parentales.
Il n'y en a peut-être pas ici mais est-ce voulu et souhaitable ?
eric

Bonjour Eriic,

Très bonne idée, effectivement dans certains fichiers il peut y avoir des familles monoparentales.... plus communes depuis le début du siècle mais pas en grand nombre.

Effectivement pour les contemporains (Moins de 100 ans) c'est vraiment plus fréquent.

Mais cela risque de compliquer la programmation ? Qu'en pensez-vous ?

Bonjour à tous,

si je ne m'abuse h2so4, avec If idp <> "" And idm <> "" Then tu exclues les familles mono-parentales.
Il n'y en a peut-être pas ici mais est-ce voulu et souhaitable ?
eric

Effectivement, j'exclus les familles mono-parentales. S'il faut les inclure, il suffit de remplacer le And par Or

Bonjour,

Si vous obtenez cette erreur :

gedcom

Ajouter au début du programme :

Application.DisplayAlerts = False

puis a la fin du programme. :

Application.DisplayAlerts = True

Alerte présente sur Excel 365.

A bientot

bonjour,

code adapté, commenté et complété avec la proposition de Moul

Sub aargh()
    Dim tabfam()
    With Sheets("gen_individus")
        Set dictfam = CreateObject("scripting.dictionary")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        nf = 0
        For i = 2 To dl 'on parcourt tous les individus
            idi = .Cells(i, 1) 'id individu
            idp = .Cells(i, 2) 'id père
            idm = .Cells(i, 3) 'id mère
            If idp <> "" Or idm <> "" Then 'au moins un parent
                fam = idp & idm 'dientifiant de famille composé de l'id du père et de la mère
                If dictfam.exists(fam) Then 'si famille existe
                    dictfam(fam) = dictfam(fam) & "," & idi 'on ajoute l'Id de l'individu (=enfant)
                Else
                    nf = nf + 1 'si non on a une nouvelle famille (on incrémete, le compteur de famille)
                    dictfam(fam) = "FAM" & nf & "," & idi 'on l'ajoute au dictionnaire avec son identifiant sous forme FAM + n°de famille et le premier enfant
                End If
            End If
        Next i

        ReDim tabfam(1 To dl, 1 To 1) 'table qui associe à chaque individu, l'identifiant de la famille et la composition de la famille
        For i = 2 To dl 'chargement de la table
            idi = .Cells(i, 1)
            idp = .Cells(i, 2)
            idm = .Cells(i, 3)

            If idp <> "" Or idm <> "" Then
                fam = idp & idm
                tabfam(i - 1, 1) = dictfam(fam)
            End If
        Next i

        .Range("E2").Resize(dl - 1, 1) = tabfam 'on charge la table en colonne E
        Application.DisplayAlerts = False
        .Range("E2").Resize(dl - 1, 1).TextToColumns DataType:=xlDelimited, comma:=True 'on met chacune des infos dans des colonnes distinctes.
        Application.DisplayAlerts = True
    End With
End Sub

Merci H2so4, et à Eriic et Moul pour leurs bonnes idées.

Super cela fonctionne parfaitement.... et j'ai effectué des tests "grandeur nature" et je peux maintenant recomposer les familles donc aussi les fratries. D'ailleurs dans le fichier que j'avais fourni il y a une famille monoparentale en ligne 47 et cela me donne la famille "FAM38"

Ma prochaine étape sera de pouvoir créer un fichier Gedcom d'après le fichier Excel (mais c'est pas pour demain) d'ailleurs vous pouvez consulter cette page pour visualiser le fonctionnement de ce fichier. FICHIER EXCEL GENEALOGIE

Cela fait déjà plus de 3 ans que je fais évoluer ce fichier. A la base j'étais parti sur une alimentation par formule mais avec plus ou moins 800 individus mon fichier explosait. Donc j'ai tout reprogrammé en VBA et avec une gestion via un formulaire. Pour ma part mon fichier recense 5900 individus sans problème. Plusieurs internaute mon fourni leur fichier Gedcom pour l'intégrer au fichier Excel et cela fonctionne. Par contre j'ai eu un fichier de 14000 individu et je l'avoue cela commence à ralentir en terme de gestion mais cela fonctionne toujours.

Mille merci !

Rechercher des sujets similaires à "gedcom genealogie creation familles"