IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Traitement de données généalogiques (conception et mise en place technique)


Sujet :

Macros et VBA Excel

  1. #41
    Invité
    Invité(e)
    Par défaut
    en fait tu peux parfaitement intégré tes sources, et ma démarche à toujours été de d'aider à y parvenir.

    à l’époque de la généalogie musicale, je t'avais dis que tu étais le maitre et que la solution devait t'appartenir et te ressembler.

    je reste sur ce postula et je ne veux que te fournir les armes pour te le permettre.

    Code prosé par patrick : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim wb As Workbook, nomdelamacro$
     
    Set Wb = Workbooks.Open("c:\mondossier\A_modele_Chambon_baptemes6.xlsm")
    nomdelamacro = "creation_squeeze_gedcom_d_apres_XL"
    Application.Run "'" & wb.Name & "'!" & nomdelamacro

    Code adaptation voir poste #14 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub test()
     
    Dim Wb As Workbook, nomdelamacro$
    Set Wb = Workbooks.Open("c:\mondossier\A_modele_Chambon_baptemes6.xlsm")
    nomdelamacro Wb
     
    End Sub
    Sub nomdelamacro(ByRef Wb As Workbook)
    End Sub

    tu as 25 ans de plus que mois et alors la belle affaire, je ne m'apitoie pas sur les gens que j’apprécie!

    j'ai la fâcheuse tendance à aller à l’essentiel, quand je reprend le code de quelqu'un d'autre j'en biffe 80% on se refait pas mais l’essai vraiment de t'aider!

    j'ai fais exactement le même travail pour un amis et pourtant je ne t'impose pas mon code, SqLite et VB.net! non?
    Dernière modification par Invité ; 18/05/2019 à 01h28.

  2. #42
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Que les données soient des données généalogiques ou tout autres, ça ne change rien à la démarche informatique à mettre en place. Pour un informaticien, traiter des données généalogiques ou des données traitant de la vente de petits pois par mauvais temps, c'est kif. il y a toujours trois questions à ce poser.

    Quelles sont tes sources? Tu dis que ce sont de multiples documents, photos, etc... Je suppose qu'au delà de leur consistance réelle, elles sont "encodées" dans tes (22) feuilles Excel.
    Comment sont-elles organisées? (Sont-elles organisées? ). il ne pourra y avoir de traitement informatique que si l'on peut mettre en place un algorithme qui les traite.
    Comment doit-on les transformer pour les intégrer à GedCom (les mettre au format qui...)?

    Tant que nous n'aurons pas vu de quoi sont constituées tes feuilles (avec les exceptions, les "bizarreries", ...), nous parlerons dans le vide et nous serons obligés de théoriser. Ce qui serait intéressant pour pouvoir intégrer tes sources, c'est de voir tes feuilles, puis, avec un ou deux exemples, de voir le traitement qui doit être appliqué aux données pour les formater "GedCom".

    A partir de là, ce sera normalement assez simple de mettre en place le code à réaliser.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #43
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Bonjour à tous deux,
    Et merci, vous vous donnez beaucoup de mal. J’apprécie votre aide mais vous n’avez pas assez d’infos pour qu’elle soit tout à fait adéquate. Voici donc quelques réponses et précisions.
    Par ma faute (je remanie sans cesse) vous vous basez sur des états de mon travail qui sont dépassés. Je précise donc que je travaille maintenant sur un seul classeur qui rassemble toutes les feuilles et 3 versions du code (naissance, mariage, décès) et que je suis en train d’appliquer le conseil de Pierre : je divise ma tartine de 431 lignes en « briques » beaucoup plus petites. Je vous montrerai quand ce sera fait. Vos posts maintenant :
    Pierre écrit :
    "encodées" dans tes (22) feuilles Excel.
    Alors oui, elles sont « encodées », mais pas dans 22 feuilles excel (à l’époque je parlais de 22 classeurs), mais dans environ 70 feuilles contenues dans un seul et même classeur, nommé « consolidation » (puis new_new_consolidation) parce que tu trouvais absurde de travailler sur 22 classeurs.
    Voir post 13:
    Suivant les conseils de P. Fauconnier j'ai tout réuni dans un seul classeur, 69 worskheets et le code; ensuite j'ai variabilisé le nom des feuilles et des macros comme vous me l'aviez indiqué l'un et l'autre;
    Mais en fait j'ai 79 feuilles dans mon classeur ! Pourquoi ? Parce que quand mes feuilles étaient d'un seul tenant (jusqu'à 250 lignes ou enregistrements), telles que saisies à l'origine, l'impression s'arrêtait spontanément en cours de route et personne sur cet excellent forum ne m'a suggéré une idée utile. Personne. Plutôt que d'attendre, j'ai examiné les résultats et comme il semblait que l'impression pouvait aller jusqu'à environ 25 lignes, j'ai décomposé mes tables en sous-tables de 25 lignes au maximum, ce qui m'a donné 79 feuilles, et ça marche.

    Tu veux savoir (c’est indispensable)
    Comment sont-elles organisées? (Sont-elles organisées? ).
    J’ai très tôt décidé de standardiser la structure des feuilles en ayant toujours le même nombre de colonnes placées dans le même ordre et ayant le même contenu parce que ma méthode (oui, oui !) consiste à déboguer une sub puis à la copier pour traiter une autre feuille : il est donc indispensable que les coordonnées des données (ligne, colonne) restent identiques d’une feuille à l’autre.
    Ces indications pourront être vérifiées en examinant le classeur joint (exempt de code)
    Tu continues ainsi :
    il ne pourra y avoir de traitement informatique que si l'on peut mettre en place un algorithme qui les traite.
    L’algorithme existe virtuellement depuis longtemps, mais ici le pseudo-code est suffisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Regarde dans la cellule( x, y)
    S’il y a quelque chose, rédige la phrase A en incorporant ce que tu as trouvé, sinon rédige la phrase B (en tenant compte du type de contenu, donc du No de colonne)
    Tu demandes encore :
    Comment doit-on les transformer pour les intégrer à GedCom (les mettre au format qui...)?
    La réponse est simple : en faisant précéder chaque phrase rédigée par le tag approprié.

    Maintenant, excuse-moi, mais ces questions ne sont pas pertinentes. J’ai déjà indiqué ou sous-entendu plusieurs fois ce que j’ai répété hier :
    Je suis arrivé depuis des mois à imprimer, et aussi à sauvegarder, des gedcoms utilisables
    Cela signifie
    1) que mes données sont organisées,
    2) que l’algorithme de traitement existe implicitement,
    3) qu’un code a été rédigé à partir de cet algorithme virtuel
    4) et qu’il donne d’assez bons résultats.
    Donc ce dont j’ai besoin, c’est de réponses à des questions qui n’en ont jamais reçu ; en fait une seule question (que j’ai déjà posée au moins une fois, mais je ne retrouve pas le post (Robert a raison, je suis un littéraire et mes discussions prennent vite les dimensions de romans), et quand je saurai ça, le job sera terminé. Vous avez ça dans une sub séparée à la fin du code que je vous ai transmis hier.
    Pourquoi l’impression de mes gedcoms démarre-t-elle si je parcours le code avec F8 et ne fonctionne-t-elle pas lorsqu’elle est activée par le même code en cours d’exécution ?
    Les quelque 70 lignes de ce post ne servent qu'à expliquer la phrase en italique qui le termine.
    Merci de votre patience et de votre soutien.
    Cordialement
    touche_a_tout
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  4. #44
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Désolé, un oubli de plus, voici le classeur annoncé. C'est du .xls ne contenant aucun code
    t_a_t
    facsimile_Actes_paroissiaux_France.xls
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  5. #45
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    En fait même si Pierre et moi n'avons pas tous les tenants et abroutissant, nous avons compris qu'il n'étais plus question de 22 fichier. Mais d'un seul classeur avec 78 onglet (New truc.xlsm)

    La remarque de Pierre sur les 22 fichier était selon mois plus perturbé par la maintenance des 22 macros associées qu'aux fichier eux même.

    Comme pour ces 78 macros que tu envisages de copier dans tes 78 feuilles, alors que nous t'expliquons depuis le poste #14 que tu peux faire une seule macros et que tu peux lui passer tes 78 feuilles une à une en paramètres.

    parce que ma méthode (oui, oui !) consiste à déboguer une sub puis à la copier pour traiter une autre feuille

  6. #46
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Bonjour,
    Mea culpa, j'aurais dû écrire que ma méthode "consistait" (et non pas "consiste"), car elle n'est plus la même. Avec "consolidation" j'ai réuni le contenu des 22 classeurs en un seul, avec un classeur distinct comme lanceur. Avec new_consolidation, j'ai incorporé la fonction de lanceur au classeur contenant les feuilles et j'avais à ce stade 78 feuilles et 78 modules; avec new_new_consolidation, j'ai toujours 78 (environ) feuilles mais un seul module qui contient une seule macro avec les feuilles en paramètres; je suis en train de la déboguer. Je bute sur le fait que le paramètre variable s'applique à la fois au nom de la macro et à des éléments qu'elle contient. Je cherche. Désolé de vous avoir laissés sur une fausse piste.
    Si vous acceptez (si le forum accepte) que je mette en annexe un classeur truffé de code VBA je le ferai tout de suite, de manière à ce que vous voyiez précisément de quoi on parle.
    Merci de me suivre dans ce marathon.
    Cordialement
    touche_a_tout
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  7. #47
    Invité
    Invité(e)
    Par défaut
    il faut reste générique et bien comprendre que tu peux passer un objet en paramètres!

    quand tu passe d'une pièce à l'autre c'est toi en tan "qu'objet" qui passe en paramètres et si tu te coupe le doigt dans la cuisine te en garde le stigmate en sortant!

    ce que je veux dire c'est que tu peux passer l’onglet en paramètres!

    Code Exemple : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
    Dim i As Integer
    For i = 1 To 3
        TraitementFeuilles1To3 ThisWorkbook.Sheets("Feuil" & i)
    Next
    End Sub
    Sub TraitementFeuilles1To3(ByRef FeuilleX As Worksheet)
        Dim i As Integer
        With FeuilleX
            For i = 2 To .Range("A1").CurrentRegion.Rows.Count
                .Cells(i, "B") = "toto"
            Next
        End With
    End Sub

  8. #48
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Bonsoir,
    Merci. Je vois tout à fait ce que tu veux dire. Je dois adapter ton code au fait que mon paramètre qui identifie mes feuilles n'est pas un entier, mais un string (parmi quelques dizaines de strings) stocké dans une feuille ad hoc de mon classeur. J'avais déjà essayé ce type de solution avant de voir ton post mais ça ne marchait pas. Je m'y remets.
    Merci encore. Bonne soirée.
    Cordialement
    t_a_t
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  9. #49
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je vois tout à fait ce que tu veux dire. Je dois adapter ton code au fait que mon paramètre qui identifie mes feuilles n'est pas un entier, mais un string
    Non je suis en tain de dire que tu peux tout simplement passé ta feuille (onglet,sheet,Worksheet)!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sub TraitementFeuilles1To3(ByRef FeuilleX As Worksheet)

  10. #50
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Bonjour et bon dimanche,
    Désolé, il y a des fois où je ne comprends simplement pas. En attendant j'ai fait à mon idée et ça marche ! J'ai codé avec mes gros sabots et ce n'est pas très rapide à l'exécution. Ca tourne depuis environ 13 h 45 et j0en suis à la 17ème feuille sur environ 70: presque le quart. je vais sortir et je laisserai tourner; j'ai un chrono qui enregistre l'heure de début et l'heure de fin (si tout va bien). Il ne me reste plus qu'à plusser.
    A plus tard de mes nouvelles.
    Cordialement
    t_a_t
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  11. #51
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Re,
    En réalité ça marche avec 2 bugs pas résolus:
    - je n'arrive pas à trier mes gedcoms en fonction du groupe de feuilles dont ils sortent (erreur à la création du sous-répertoire je suppose)
    - je n'ai pas réessayé l'impression; elle foirait au stade précédent et je n'ai pas retravaillé sur cette procédure.
    sur le 1er point j'aurai besoin d'aide mais je posterai mon code quand la maniclette aura fini de tourner.
    Cordialement
    touche_A_tout
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  12. #52
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Bonsoir,
    Pas de résultats ce soir; il restait des fautes de frappe dans les onglets (ça se corrige et ça repart) et dans ma banque de paramètres, et là, il faut repartir de zéro ! C'est arrivé 3 fois, y c. en mon absence ! Pas de nouvelles avant demain mais j'ai bon espoir.
    Encore merci
    Cordialement
    t_a_t
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  13. #53
    Invité
    Invité(e)
    Par défaut
    Tu fais l'arbre généalogique Adam et Eve pour que ce soit si long?

  14. #54
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Hé hé ! Hélas non C'est mon code qui est lent. Et il y a une quantité de coquilles. Comme j'étais absent, j'ai trouvé le désastre en rentrant après 21 heures. Je laisse tourner pendant la nuit, mais c'est le même sketch: en cas d'arrêt personne pour déboguer
    Bonne nuit
    t_a_t
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  15. #55
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    mets un fichier je vais regarder!

  16. #56
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Bonjour,
    C'est tellement long (des heures) entre deux retouches que j'ai réduit les "volumes". En principe, à part les références, ça ne change rien au code, qui ne fonctionne plus d'ailleurs! Dans ma "maquette" B_maquette_consolidation.xlsm, je n'ai plus que 8 feuilles et chacune d'elles n'a que 2 à 3 enregistrements (avec 2 lignes d'en-têtes). J'ai ajouté une feuille "registre" pour voir le temps que prends un tour.Ca va beaucoup plus vite (mais ça bogue). Je me perds dans les boucles. Et je me cramponne aux "Call" comme à des bouées !
    Merci d'y jeter un coup d'oeil.
    Bien à toi
    t_a_t
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  17. #57
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    re,
    Attends !
    Ne te fatigue par à regarder les "briques" comme dit Pierre, elles fonctionnent, ce sont les 3 lanceurs, un pour les naissances, 1 pour mariages, 1 pour décès, qui cafouillent.
    Merci et bon courage !
    t_a_t
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  18. #58
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    @Dysorthographie
    Bonsoir,
    J'espère que tu n'as pas perdu ton temps sur mon fichier vaseux (maquette à échelle réduite). Depuis mon post j'ai bossé ferme sur le code (et supprimé tous les "Call") et modifié la conception: au lieu d'un gedcom.txt par feuille, j'en ai un pour toutes les feuilles naissances, idem mariages, idem décès. A ce stade ça fonctionne nickel. Reste 2 problèmes:
    1) Ce changement de conception n'est pas viable. Avec un total de 8 feuilles de 1 à 4 lignes, j'ai déjà eu un dépassement de capacité (et j'ai supprimé une ou deux choses inutiles), alors avec 70 feuilles de 20 à 25 lignes chacune, je fais tout exploser ! Je dois revenir en arrière.
    2) Je n'ai pas réussi à créer de sous-répertoires pour trier les gedcom.txt.
    Je vais chercher encore. Veux-tu voir mon fichier en attendant ?
    Bien cordialement
    touche_a_tout
    There is always an easy solution to every human problem - neat, plausible. And wrong.

  19. #59
    Invité
    Invité(e)
    Par défaut
    Bonsoir Pierre alias touche-a-tout,
    oui bien sur que je veux bien regarder ton fichier.

  20. #60
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 482
    Points : 46
    Points
    46
    Par défaut Traitement de données généalogiques (conception et mise en place technique)
    Bonsoir et merci,
    Il a un nom un peu spécial: test parce que pour moi supprimer les "Call" était un essai; call va de soi; maq parce que c'est une maquette à échelle réduite.
    Dans le bloc impression, il y a 2 variantes pour la sauvegarde, celle avec un sous-répertoire est mise en commentaire parce qu'elle bloque. Je viens de faire des essais mais je n'y arrive pas.
    Voilà le travail: test_call_maq_consolid.xlsm
    Bien à toi
    Pierre
    There is always an easy solution to every human problem - neat, plausible. And wrong.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/09/2006, 13h08
  2. [C#] Application.Run sans Form
    Par papouAlain dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/06/2006, 16h36
  3. [C#]Fenetre de chargement avant Application.run()
    Par 5:35pm dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2006, 03h02
  4. [VBA][EXCEL]Erreur '1004' avec "Application.Run"
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2006, 10h50
  5. Application.run ?
    Par bobymaw dans le forum Langage
    Réponses: 5
    Dernier message: 29/12/2005, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo