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 :

VBA Faire correspondre un onglet avec un autre (x200)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut VBA Faire correspondre un onglet avec un autre (x200)
    Bonsoir à tous,

    Dans l'élaboration de mon programme de gestion, j'ai un nouveau problème.

    Tout d'abord, voici un bref résumé de mon programme:

    J'aimerais obtenir un suivi des paiements de chaque médecin. Tout d'abord, j'encode des données dans un tableau correspondant à un médecin (l'onglet comporte le nom du médecin, ex: "Bartin Claire"). Ensuite, en appuyant sur un bouton comportant une macro, les données se sauvegardent dans la feuille à côté (qui comporte comme nom d'onglet "Bartin Claire synthèse). Après s'être sauvegardées dans le tableau, les données s'effacent du tableau de l'onglet principal du médecin "Bartin Claire" afin de pouvoir réutiliser ce tableau ... Il n'y a pas qu'un seul médecin, et donc il va y avoir un autre onglet avec un autre nom "Defoy Thomas" et "Defoy Thomas synthèse". Ainsi de suite ...
    J'ai déjà effectué, grâce à des membres du forum, le tableau comportant les sauvegardes. Cependant, celui-ci se trouve dans le même onglet du médecin. Donc tout se trouve dans l'onglet "Bartin Claire" (voir photos). En d'autres termes, j'ai rajouté des onglets pour y mettre le tableau de sauvegarde afin de se faciliter la tâche pour l'impression.

    - Tableau principal de l'onglet "Bartin Claire" où l'on va encodé des données et ensuite vont se supprimer:

    Nom : tab1.PNG
Affichages : 444
Taille : 74,7 Ko

    - Tableau où se sauvegarde les données (toujours dans l'onglet "Bartin Claire"):

    Nom : tab2.PNG
Affichages : 424
Taille : 52,0 Ko

    - Tableau où j'aimerais sauvegarder les données au lieu du 2ème tableau de sauvegarde le l'onglet "principal" du médecin (qui sera donc supprimé quand tout ira bien):

    Nom : tab3.PNG
Affichages : 510
Taille : 82,6 Ko

    Voici le fichier en question:

    Nouveau modèle synthèse - Copie-V2.xlsm

    J'ai encodé quelques données pour que vous sachiez à quoi correspondent les colonnes.

    Voici le code VBA pour la sauvegarde du tableau dans le même onglet:

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub sauvegarde()
        Dim n%, nn%    
        With ActiveSheet
            n = .Range("D52").End(xlUp).Row       
            If n = 1 Then Exit Sub: n = n - 1        
                nn = .Range("D" & .Rows.Count).End(xlUp).Row + 1      
                    If Range("L" & nn).Value <> "" Then       
                        nn = nn + 1  
                    End If
            Application.ScreenUpdating = False
            .Range("D" & nn).Resize(n).Value = .Range("C2").Resize(n).Value
            .Range("E" & nn).Resize(n).Value = .Range("G2").Resize(n).Value
            .Range("F" & nn).Resize(n).Value = .Range("D2").Resize(n).Value
            .Range("G" & nn).Resize(n).Value = .Range("E2").Resize(n).Value
            .Range("H" & nn).Resize(n).Value = .Range("K2").Resize(n).Value
            .Range("I" & nn).Resize(n).Value = .Range("L2").Resize(n).Value
            .Range("J" & nn).Resize(n).Value = .Range("F2").Resize(n).Value
            .Range("K" & nn).Resize(n).Value = .Range("N2").Resize(n).Value
            .Range("L" & nn).Resize(n).Value = .Range("J2").Resize(n).Value
            .Range("A" & nn) = .Range("T5")
            .Range("C" & nn) = .Range("T3")
            .Range("B" & nn) = .Range("T6")
             nnn = .Range("D" & .Rows.Count).End(xlUp).Row
            .Range("A" & nnn & ":T" & nnn).Borders(xlEdgeBottom).Weight = xlMedium
            .Range("B2:F51").ClearContents
            .Range("H2:L51").ClearContents
            .Range("O2:O51").ClearContents
            .Range("Q2:Q51").ClearContents
            .Range("T5:T6").ClearContents
        End With
    End Sub

    Que faut-il faire pour faire correspondre ce code dans l'onglet de synthèse. Et que ce soit pareil à chaque fois que j'ajoute une feuille (étant donné qu'il y a que 2 médecins mais il y en aura bien 200 au bout) donc ici ça devra être pareil pour Defoy Thomas et sa synthèse, qu'à chaque fois se soit lier?

    Merci de votre aide !

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sommes-nous en présence, si j'ai bien compris, d'un projet où tu aurais une centaines d'onglets, quantité qui évolue proportionnellement aux nombres de médecins ?
    si tel est le cas ... me vient d'emblée une problématique de "conception" avant même que me vienne l'idée d'effleurer ton code et le problème que tu rencontres.

    en regardant ta copie écran, on voit un très joli masque de saisie est une très jolie feuille de stockage des données.
    Et on lit ensuite que c'est la feuille du "médecin x" et qu'il ensuite faire la même chose pour presque 5 fois l'alphabet
    Là tu démolie ta construction initiale en travaillant pour chaque médecin, tu dois la laisser ainsi ta base, et traiter tes médecins comme des "valeurs possibles dans ta base"

    En ajoutant une colonne pour identifier ton médecin (un numéro unique par exemple), tu montes la structure de ton projet sur 2 feuilles :

    - une feuille pour la "saisie courante" : tu peux saisir les actes de tous les médecins de la journée, d'un seul etc... ça ne sais pas comment est organisé ton activité.
    - une feuille pour le "stockage" : c'est ta base de données en quelque sorte, on a tous les médecins identifiés grâce à la nouvelle colonne d'identifiant et les données proviennent de l'exportation de ta "saisie courante"

    En là, c'est royal. Tu peux même convertir cette base de données en tableau structuré excel, ce qui facilite la navigation à l'intérieur (que ce soit par formule, tableau croisé, graphique etc...)

    Tu as ton centre de stockage et son outil d'alimentation, tu n'as plus qu'à utiliser tout ce temps gagné pour créer ton "centre de traitement".
    En fonction de ton besoin, tu crée une feuille "modèle" avec les informations que tu voudrais sur un (ou plusieurs) médecin(s). Tu utilises des cellules pour choisir tes infos (médecins, périodes, type d'acte...enfin tes champs de la base de données)

    Par exemple, une feuille avec un récap' mensuel d'un médecin. Tu réserve des cellules où tu peux choisir le médecin et la période. Ton masque est rempli par formules Excel en utilisant ce que tu as choisi dans tes cellules réservés.

    C'est vraiment aller au casse pipe que de ne pas mettre en oeuvre ce type de méthode, de mon avis personnel.

    Dis-nous ce qu'il en est, et si cette aventure te tenterait

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut
    Bonsoir,

    Merci pour ta réponse.

    Ton idée est très intéressante! Ce n'est même pas pour une 100 mais au moins 250 médecins .. Je me dis aussi que çava être compliqué. Cependant, le but est en fait d'avoir un suivi par médecin. C'est à dire que je vais lui envoyer le détail du tableau afin qu'il ait un aperçu de ses gardes annuelles.

    Donc si ton idée permet d'avoir le suivi détaillé du médecin en question, je suis partant!

    Je pense même à:

    Est-il possible, de créer une un onglet avec la liste de tous les médecins, un onglet avec l'encodage de la garde (le tableau "principal"), un onglet où l'on sauvegarde les données et dans ce même onglet, il y aura du coup toutes les gardes à la suite des autres et donc faire une recherche en tapant le nom du médecin et le tableau n'afficherait que les sauvegardes de ce médecin ? Ainsi j'aurai facile d'envoyer le suivi au médecin. Ceci correspond aussi à ton idée ?


    Bien à toi,

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ceci correspond relativement bien à ce que je t'ai décris.

    Avoir une feuille contenant diverses matrices de correspondance est important pour gagner en souplesse, par exemple :

    - un tableau pour retrouver un médecin avec son identifiant
    - un autre avec tes actes facturés pour mettre les CCAM et leur libellé littéral dans une colonne à côté
    etc..


    95% de ton projet, il est réalisable SANS vba, les 5% restants c'est pour un peu de customisation ou des traitements en lot, comme générer 250 pdf de récap' mensuel. Là le code sert juste à changer 250 fois le nom du médecin dans ton masque (qui se remplit par formule) pour l'enregistrer 250 en pdf.

    donc si cette idée te plait, tu vas avoir le plaisir de naviguer dans trois parties de ce forum de façon chronologique :

    1) Conception : si tu as des questions sur la façon de concevoir l'une de tes trois "feuilles types" (feuille saisie, feuille stock, feuille avec les matrices)
    2) General Excel : si tu as des question, après Conception, lorsque tu voudras présenter tes données par formule Excel
    3) VBA (ce forum) : quand ton fichier fonctionnera parfaitement "manuellement", que tu pourras choisir un médecin et obtenir sa vue mensuelle, là si t'as envie d'ajouter des trucs moins orthodoxes et natifs d'Excel, tu finiras ton projet ici.


    Je pense qu'il est trop tôt pour cette discussion que tu viens d'ouvrir.
    Tu as un peu de réflexion à faire sur cette nouvelle vision de ton projet, et une conception à préparer

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut
    Merci beaucoup, tu m'as bien éclairé!

    Voilà comment je compte m'y prendre:

    - 1er onglet: Liste des médecins: Tableau avec Nom, prénom, autres données ... les pages suivantes se réfereront à chaque fois à ce tableau.

    - 2ème onglet: Tableau d'encodage des gardes (mon tableau principal dans mes sujets): Où je vais encoder toutes les données relatives à une garde d'un médecin. J'aurai donc une cellule où j'irai chercher le médecin en question. Ensuite, je cliquerai sur "Sauvegarder", un bouton ... qui irait répertorier ces données dans le 3ème onglet et effacerait le tableau du 2ème onglet.

    - 3ème onglet: Historique des gardes: Reprend toutes les données sauvegardées de chaque garde, médecins, à la suite des autres. Sous forme de tableau Excel, pour faciliter les saisies et/ou formules.

    - 4ème onglet: Synthèse du médecin: Même tableau que le 3ème onglet. Cependant, je ferais une recherche selon le médecin qui n'afficherait que les données sauvegardées de ce médecin en question. Peut-être est-il faisable de faire cette opération dans le 3ème onglet que de créer un 4ème?

    - 5ème onglet: Tableau des paiements du médecin: Cet onglet comporterai un tableau (2 colonnes pour le moment) en rapport avec le tableau des sauvegardes. Si je fais une recherche de médecin, il m'affiche les paiements effectués pour lui. Je peux faire une recherche par date, mensuel ou l'année.

    - 6ème onglet: Cloture: En lien avec l'historique des gardes (onglet 3), reprendrait toutes les gardes qui ne sont pas cloturées (la cloture serait référencer dans une des colonnes de l'onglet 3). Ensuite, je pourrai rechercher par médecin et aussi insérer un bouton "Aller à" qui me dirigerait directement vers l'onglet 3... Je pense ajouter un bouton cloture dans l'onglet 3 ainsi, plus besoin de cet onglet. En cliquant sur le bouton cloture, il me trouverait toutes "non cloture".

    Je pense que déjà là, j'obtiens une bonne base.

    Je compte effectué une macro qui me permet donc de sauvegarder les données de l'onglet 2 à l'onglet 3 et qui effacerait le tableau de l'onglet 2. Ensuite comment fait-on pour faire intéragir mon tableau ? Càd si je souhaite dans l'onglet 3 n'afficher que ce qui a en rapport avec une certaine colonne (ex: colonne médecin, je tape dans mon champs activeX le nom du médecin et le tableau génère toutes les données en rapport avec ce médecin)? Tout mon travail sera un peu basé sur ça ... Y a t il une maniere de le faire sans code VBA ?

    Merci!

    Petit lien vers ma conception pour ne pas s'y perdre : http://www.developpez.net/forums/d16...n/#post8804238

Discussions similaires

  1. [Toutes versions] VBA - Faire matcher des cellules avec des colonnes d'un autre onglet
    Par romain31200 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/09/2015, 09h52
  2. [XL-2003] Faire correspondre une colonne avec une autre et copié les données dans la bonne colonne
    Par mairiemeudon dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/06/2010, 15h31
  3. [VBA] Faire correspondre une ligne a une photo
    Par Léponge85 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/06/2008, 13h25
  4. Réponses: 1
    Dernier message: 21/02/2007, 01h29
  5. faire correspoundre un automatiquement avec un autre
    Par didaigd dans le forum Access
    Réponses: 7
    Dernier message: 17/02/2007, 18h21

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