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 :

Regrouper Des données selon leur nom


Sujet :

Macros et VBA Excel

  1. #1
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut Regrouper Des données selon leur nom
    Bonsoir à tous,

    J'ai un tableau ou je devrais entrer à chaque début du mois des nouvelles données pour chaque nom présents (environ 2000 personnes).

    Nom	Quota	Date
    A	1	01/01/2011
    A	2	01/02/2011
    B	4	01/01/2011
    B	5	01/03/2011
    B	1	01/04/2011
    A	5	01/03/2011
    C	8	01/02/2011
    D	5	01/05/2011
    D	4	01/06/2011
    C	2	01/03/2011
    E	3	01/04/2011
    Mais de cette façon la taille du ficher s'agrandira considérablement.

    Y a-t-il une solution pour alléger la taille de ce fichier en regroupant toutes les données entrées sous leurs noms respectifs ?

    Merci d'avance.

  2. #2
    Membre du Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Novembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 52
    Points : 55
    Points
    55
    Par défaut
    Je verrai davantage Access faire cela qu'excel.
    Avec une table Concernant l'identité de la personne (T_identite) et une autre Concernant les dates T_date).Comme il s'agirai d'une relation plusieurs-plusieurs entre ces 2 tables, on ajouterai une table de jonction (J_Identite_date), dans laquelle justement on placerai le champs quota.

    On est vraiment là dans le domaine d'une application Access me semble -t-il.
    Ensuite on peut alimenter cette base, avec un formulaire Access, ou avec une feuille de données excel contenant les données en colonne et contenant le nom des champs en première ligne.
    N'oubliez pas de noter et modifier le titre de votre sujet en plaçant [RESOLU] devant , une fois qu'une réponse satisfaisante vous a été donnée.

    Ce qui compte ne peut pas toujours être compté, et ce qui peut être compté ne compte pas forcément.Einstein.

  3. #3
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir florianne,

    Une application Access, je n'ai jamais fais une.

    C'est sur les bases de données sont bien fait pour ça.

    Mais dans mon cas, Excel/VBA ne peut-il pas résoudre ce problème ?

  4. #4
    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 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je ne vois pas très bien comment réduire la taille du fichier.

    Dans tous les cas, tu vas devoir utiliser une table avec au moins trois champs (ceux que tu as représentés).

    Après, si le champ "NOM" permet de rechercher des données dans une table via RechercheV, c'est bien et tu pourras compléter les données automatiquement. Mais tu ne gagneras pas grand-chose comme taille.

    Par contre, on peut imaginer une feuille qui servirait de "rapport" via un filtre élaboré qui extrairait sur une autre feuille sur laquelle on reprendrait une seule fois les données complémentaire du nom, puis la liste des quotas et les dates.

    A ce stade, j'ai des difficultés à cerner ce que tu souhaites précisément.
    "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...
    ---------------

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    On a bien trop d'infos pour répondre

    • Ton tableau sera comme présenté, il n'aura que 3 colonnes ?
    • Les nouvelles données seront donc en colonne quota ?
    • Il n'y a que la 1er de chaque mois qui sera pris en compte ?
    • version d'Excel ?
    • finalité ?
    • etc...



    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  6. #6
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonjour Pierre, Ormonth,

    Ton tableau sera comme présenté, il n'aura que 3 colonnes ?
    Il y a 7 colonnes en tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Les nouvelles données seront donc en colonne quota ?
    Non, les nouvelles données entrées seront pour les sept colonnes

    Il n'y a que la 1er de chaque mois qui sera pris en compte ?
    Oui l'opération se fera à chaque début du mois pour un certain nombre de noms avec leurs données respectives.

    version d'Excel ?
    2003 et 2007

    finalité ?
    J'aimerais que lorsque je fais entrer des nouvelles données, ces derniers viennent se positionner sous leur nom correspondant, ce qui facilitera la localisation des noms recherchés après.

    Et qu'il y ait un seul nom sans doublons avec tous ces données présentes dans la feuille

    Merci d’avance.

    EDIT :

    J'avais pensé à cette solution, mais je ne suis pas sur qu'elle soit applicable pour ce nombre de données (2000 * 12 = 24000) ?
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    bonsoir,

    L'approche à retenir sera, comme dit par Pierre celle d'une table de données avant tout, leur exploitation se ferait par code et les rapports voulus feraient l'objet de feuilles de "mise en page" (idem à un imprimé dont tu remplis les cases).

    Une possible approche ?

    Un classeur de données ou :
    • tu aurais 12 feuilles (1 par mois) qui auraient toutes la même structure sur les colonnes 1 et 2
    • chaque nom serait entré 1 fois en colonne 2 de la feuille 1
    • En colonne 1 de chaque feuille tu aurais des N° 1,2,3 incrémentés au gré des entrées de noms de façon identique ( un FillAcrossSheets fait ça très bien). Ces N° faisant office d'Id, donc une variable compteur écrite dans une cellule d'une feuille paramètres,.
    • En colonne 2 des feuilles 2 à 12 = vierges
    • Tu sais que tu as 5 colonnes de données (vu que le nom ne change pas et que la date non plus). donc pour chaque quota tu écrits en colonne 3 (offset (0,XX x 5), XX allant de 0 à ....?


    Tu te retrouves donc avec une seule occurrence de noms et 12 occurrences d'iD (moins lourd).
    Le reste est de la gestion de Cells(row,column) et d'identification des lignes voulues et pas mal de construction qu' Access a sans doute en natif...

    Ce n'est qu'un brainstorming rapidos

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  8. #8
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir Ormonth,

    Peut-être Quelques choses comme ça !
    Fichiers attachés Fichiers attachés

  9. #9
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    Oui, OK pour le principe de structure, pour le reste pas trop

    Si tu as 2000 noms, le principe est de n’avoir que 2001 lignes (avec la ligne d’étiquettes), c’est tout, c’est l’approche des feuilles de « données »

    Donc il est hors de question d’avoir plusieurs fois le même nom en colonne A (en dehors de homonomies bien sûr) et 1 nom = 1 ID, dans ton exemple avoir différents ID pour le même nom ou type de critère d’unicité met en l’air tout effort de structuration.

    Donc si colonnes de noms uniques, comment vais-je faire pour entrer différents évènements à la même date au même nom ?

    C’est là que l’approche sommairement décrite précédemment intervient.


    Sur toutes les feuilles tu n’as qu’une colonne identique l’ID la « # » pour ton exemple.
    Sur la Feuille 1 tu as ensuite la colonne nom qui servira de correspondance noms / ID et sur les Feuilles 2 à 12 elle est inamovible, mais vierge.
    Ensuite, on les colonnes de données qui elles seront variables en nombre de paquets selon le nombre de quotas nom – mois enregistrés.
    Tu aurais donc pour ton exemple 6 colonnes en plus soit :
    Quota Ajouté Retenu Type Payé Tranches
    La colonne date disparait puisque par structure c’est l’onglet de feuille qui représente le 1er jour du mois.

    Ensuite si dans un mois tu as plusieurs quotas à enregistrer, tu fais un traitement séquentiel.
    Ça demande à bien (mais comme tout projet) construire ta maquette Avant !
    Il est essentiel que l’ordre de ces 6 (ou plus) colonnes soit fixe (toujours identique).
    Vois, ci-dessous, l’image jointe de la feuille janvier avec A qui a 3 « quotas » (1,4 et 6) pour ce mois là.
    Nom : Ormonth-Data.jpg
Affichages : 3615
Taille : 54,4 Ko

    (Si ton nombre de quota possible est fini, mettons 8, tu peux faire du séquentiel indexé, dirons nous, en imposant alors la position du quota 4 en Colonne U soit la 21 (2 col fixes + 3*6)+1 = 21).
    Tu perds en taille de fichier, mais tu gagnes en facilité et rapidité de traitement. Ce qui veut dire qu’alors tu aurais, si client A, I2 à T2 de vides.)

    Le principe est de chercher à dupliquer le moins possible de données, et d’obtenir une structure qui te permette par des algos simples (mais moins simples à empiler) de repérer à coup sûr une données avec un Cells(R,C) ce qui sera aisé avec le N° d’ID pour avoir le N° de ligne et le nom d’une cellule d’étiquette pour le N° de colonne.
    Pour les colonnes, pas besoin de mettre des noms partout, si séquentiel simple, il suffit de nommer les 8 1eres colonnes, puis les colonnes quotas Q2,Q3 etc, les reste étant en coordonnée relative / Qx, si en Séquentiel indexé, tout peut être en relatif par rapport à Q1.

    Bon c’est encore une fois du brainstorming et de l’écriture de pensée rapide directe, mais c’est une approche

    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. [AC-2013] Requete regroupant des données selon un intervalle
    Par Gros_poirot dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/06/2015, 03h01
  2. Regrouper des données selon les valeurs d'un champ
    Par ecarbill dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/06/2015, 07h30
  3. supprimer des fichiers selon leur nom
    Par qmike dans le forum VBScript
    Réponses: 3
    Dernier message: 12/06/2012, 09h28
  4. [XL-2007] extraire des données selon leur nature et les réintegrer classees
    Par tchock_nenette dans le forum Excel
    Réponses: 9
    Dernier message: 08/04/2012, 14h06
  5. Lire des fichiers selon leur nom
    Par guiguilelotois dans le forum LabVIEW
    Réponses: 4
    Dernier message: 18/05/2009, 13h55

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