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 :

fusion de liste un peu spécial


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut fusion de liste un peu spécial
    Bonjour tt le monde

    voila, je vous explique mon probleme.
    j'ai deux liste, une liste de défaut et une liste de processus.
    en fait, chaque défaut concerne un numero d'article. chaque article est dans un processus d'entrée ou de sortie d'un stock. je voudrais pouvoir retrouver si le défaut est apparu pendant le processus d'entrée ou de sortie de l'article en question et le noter en face du défaut. je joint un fichier afin de mieux comprendre. (a noter que cette liste peut faire jusqu'a 50 000 lignes voir plus).
    Voila merci a vous pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,


    tes articles peuvent etre dans un processus d'entrée et de sortie,

    As tu des infos sur l'heure et la date du defaut ? sinon tu ne peux pas faire la différence juste sur le numéro d'article.

    Comment obtiens tu ta liste des défauts ??

    Peux tu nous donner un ptit bout, quelques lignes de ton fichier originale pour les défaut. histoire d'avoir les colonnes utilisables.

    Pareille pour ton fichier de processus
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    ouvre le fichier joint de mon premier message,
    feuille défaut: jour et heure du défaut; numero du défaut; N° d'article
    feuille processus: jour et heure du début du processus; pareil pour la fin du processus; N° d'article, et processus en cours.

    ce sont les fichiers originaux, je les ai dans un fichier d'historique de l'installation dont je m'occupe, je les ai juste exporter sur excel. Sauf que le fichier original des processus peut faire jusque 150 000 lignes par mois et les défaut jusque 5 000 lignes par mois.

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Ok j'avais pas tout vu dans ton fichier.

    Mais ne vaut-il pas mieux faire ça avec un langage qui peut attaqué directement les fichiers originaux. suivant ce que c'est bien sur..

    Sinon en macro c'est possible si tu t'y connais un peu.. la g pas trop le temps de la faire mais d'ici quelque jour si tu peux attendre.

    en gros il faut que pour chaque defaut
    tu parcours le fichier des processus
    que pour chaque processus tu compare la date et l'heure du défaut avec la plage de date et d'heure du processus.
    si ca correspond tu écris le type de processus et tu sors de la boucle.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    oui, c'est ça.chaque défaut a un numero d'article, il faut trouver dans la liste des processus ce numero d'article et voir si le defaut est survenue pendant que l'article rentrais dans le stock, ou en y sortant. et mettre la reponse devant la ligne du defaut.

    en effet je peut attendre quelques jours ( et pis de toute façon j'ai pas le choix).
    tu as l'air de dire que c'est pas si dure, j'aimerais dire comme toi, pour moi c la migraine assuré pour l'instant.
    la liste que tu as es l'original que j'ai exporté dans excel, la seule différence est que l'original peut avoir plus de 50 000 lignes, c tout. (la tu n'as qu'une partie d'une journée et l'original couvre un mois entier).

    je te remercie de t'interesser à mon probleme. (d'autant plus que c'est pour le boulot et qu'il faut vraiment que je passe ce probléme).

  6. #6
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    n'oublie pas les limites d'excel suivant la version que tu utilise.

    pour excel 2003 le fichier ne peut contenir que 65536 lignes sur chaque feuille.

    Pour savoir et pour prévoir un peu tu vas faire comment pour ton export de 150000 lignes de processus ???
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par mail.spam Voir le message
    n'oublie pas les limites d'excel suivant la version que tu utilise.

    pour excel 2003 le fichier ne peut contenir que 65536 lignes sur chaque feuille.

    Pour savoir et pour prévoir un peu tu vas faire comment pour ton export de 150000 lignes de processus ???
    chaque chose en son temps, je pense qu'au lieu de le faire au mois, je le ferais a la semaine, et je fusionnerais ensuite, c la liste des processus qui est longue suivant le temps qu'elle couvre. pour la liste des défauts, je pense qu'elle ne depassera jamais les 5 000 lignes. (actuellement maxi 1500 lignes pour un mois mais l'activité est au tiers de sa capacité)

    enfin, je verrais apres, ou alors mettre 5 jours par feuille pour les processus et une seule feuille pour les défauts, enfin, je prends les problemes un par un sinon je vais me perdre, mine de rien, j'ai deja pas mal avancé car je ne connaissais pas du tout excel au début. et la que je doit attaquer le vba, ca se complique ( les macro que j'ai fait jusque maintenant c'etais d'enregistrer des taches avec "enregistrer une macro" et apres quelque modif en cherchant petit a petit sur le net.

  8. #8
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Voici un fichier qui devrai t'aider.

    La seul contrainte est de garder la meme structure de feuille par la je veux dire le meme nom

    si tu a besoin d'ajouter des feuilles processus c'est prévu.
    il faut seulement que tu les nomme de la meme façon et que tu garde la première ligne pour les titres de colonnes
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    bonjour,

    et bien, j'ai essayé sur ma liste, ca a l'air de fonctionner comme il faut, le probleme c qu'en lisant ta macro, je n'y comprend rien, pas facile de progresser quand on a aucun support et qu'on est tt seul, enfin, je finirais bien par y arriver, en tout cas un grand merci.
    au risque d'abuser, ya t'il une facon de l'accelerer? car avec toute les lignes qu'il y auras, ca va etre vachement long? j'ai deja essayer de faire un screenupdating, mais c pareil.

  10. #10
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    bas le pb c'est qu'il faut que tu fasse cette recherche pour chaque defaut et que pour chaque defaut tu vérifie chaque processus

    le seul truc que tu peux ajouter c'est

    après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Defaut").Cells(LigneDefaut, 4).Value = Sheets("Processus (" & i & ")").Cells(j, 4).Value

    à la ligne 34

    ça permettra de passer au prochain défaut quand il trouve correspondance avec le processus

    Tu t'y connais un peu en programmation ou pas du tous

    car il faut quand meme quelque base comme les boucles, les conditions, ensuite c'est que le language qui change
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    oui, bravo, ca accelere un peu
    ben non, malheureusement, je commence a faire les trucs de débutant, j'ai deja fait quelque macro mais c'etais avec "enregistrer une macro" et puis j'essais a chaque fois de les améliorer moi-même mais c tout.

    j'y arriverais mais déja je parle pas anglais et puis beaucoup d'explication sur le net sont ppour les gens qui commence plus ou moins a se débrouiller, alors, je progresse mais a la vitesse d'une tortue

    je pense a un truc, les "debut du processus" et les défauts" sont dans l'ordre chronologique. en regardant la premiere ligne des défaut: il interviens a 2/05/2008 01:59:19 donc le deuxieme défaut serat forcément plus tard, pourquoi débuter la recherche du processus au début de la liste et pas au processus qui concerne la ligne d'avant?

    tu comprends ce que je veux dire?

  12. #12
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    J'ai fais une modif suite à ce que tu m'as dis..

    Essaie ça
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    génial, je l'ai essayé sur une liste de 28 défauts et 5170 processus et ca ne met que 3 secondes, demain j'essairais a plus grande echelle au boulot, je te tiendrais au courant. si je savais faire ca je ferais des malheur.
    et bien voila, il va falloir que j'essai de comprendre ce que tu as fait et a m'attaquer au probleme suivant.

    merci beaucoup d'avoir passer du temps dessus.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Bonjour tt le monde,

    Bon ben j'ai essayer la macro a plus grande échelle, ca marche mais c fastidieux, en partie je pense, parce que trop long.
    je vois deux chose pour l'instant qui ralentisse drolement:

    il faudrais: qu'il ignore les cellules articles qui sont vides (pas sur mais je crois que ca joue)

    qu'il cherche que dans la page du jour, en effet j'ai fait 31 feuilles "Processus ()" qui correspondent a 31 jour ou au moins, plutot qu'il parcoure les 31 pages (a plus ou moins 5 000 lignes chacunes) que s'il ne trouve pas, qu'il ne parcoure que deux pages et sinon, qu'il passe a la ligne de défaut suivant.

    Je complique les choses mais j'espers que ca va le faire?

  15. #15
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Si je peux me permettre, j'ai regardé en diagonal le code proposé et pour ce genre d'opération il est préférable et nettement plus rapide d'utiliser une boucle combinée avec la fonction Find au lieu de 2 boucles imbriquées.

    D'autre part les boucles ne sont pas limitées au contenu réel de la feuille mais boucle jusqu'à la ligne 65536, ce qui fait en gros 60000 lignes de trop.

    Voilà la direction vers laquelle se diriger
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    bonjour fring


    merci de t'interesser a mon probleme
    je peut pas dire, je suis debutant, mais n'hésite pas a proposer ou a apporter des modifs, si tu as raison, tout le monde en profiteras et progresseras, ce site est fait pour cela.

    tu doit le savoir dailleur

    malheureusement, si je savais, j'essaierais moi meme, mais la je nage completement, je comprends plus rien

    en fait, je comprends pas comment faire mais c vrai, la des qu'il y a un numero qu'il ne trouve pas, il parcoure les 20 ou 30 feuilles restante, a 57000 lignes chacune, c sur que ca fait beaucoup, il faudrais qu'il change de page des qu'il trouve une cellule vide, ou mieux, comme je l'ai dis plus haut ne chercher que dans les 100 ligne suivante (par exemple) et qu'il passe a la recherche suivante s'il ne trouve pas

  17. #17
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Avant d'aller plus loin, une question.

    Si j'ai bien compris, tu as une feuille de processus par jour, vu que lors de l'apparition du défaut, la date est indiquée, il ne faut effectuer la recherche que dans la feuille correspondant à cette date non ? Si oui, comment sont nommées tes feuilles ?
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    oui, en fait pour ce que je veut faire, voir le debut de la conversation.

    sinon, au vu des contraintes, et vu que j'ai une liste de 150 000 "processus"(mais dans l'avenir ca monteras a 200 000 ou meme 300 000!!) et bien on a dis, on va faire une feuille par jour, donc pour le 1er du mois, c Processus (1) ; pour le 2 : Processus (2) et ainsi de suite par contre je n'ai qu'une feuille "Defaut" (qui je pense ne depasseras jamais 5000 lignes, mais je peut me tromper)

  19. #19
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Un même processus peut-il provoquer plusieurs fois une erreur dans une même journée ? Autrement dit, la plage horaire est-elle importante ?
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    oui bien sur en fait, tout est par rapport a un numero d'article, l'article concerne un processus d'entrée et un processus de sortie, il peut faire par exemple 10 défauts, 4 pendant son entrée dans le stock et 6 pendant le processus de sortie. en fait on tourne autour des 1% de défaut/processus mais quand un article est "pourrie" il peut faire plein de défaut. la plage horaire est importante car c cela qui nous dis si le defaut est survenue pendant l'entrée ou la sortie et pour d'autres choses mais c une autre histoire.....

    je rajoute, que cet article peut entrer et sortir dans la meme journée, voir la minute qui suit, la plage est donc tres importante

    au passage, je signale, que des articles peuvent ne pas se trouver dans les processus alors qu'il sont dans les defauts (pour un defaut informatique, l'article a perdu son numero) et c la entre autre, qu'on perd du temps sur la macro car vu qu'il ne la trouve pas, il va regarder tout les processus (donc jusque 31 feuilles de 65000 lignes) avant de passer a l'autre ligne de défaut

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Enlever doublons d'une liste un peu spéciale
    Par Norris dans le forum Framework .NET
    Réponses: 7
    Dernier message: 13/12/2012, 18h58
  2. envois de var $_GET un peu spécial
    Par frechy dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/11/2004, 11h00
  3. contrainte d'unicité un peu spéciale....
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 23/11/2004, 17h54
  4. Réponses: 4
    Dernier message: 05/07/2004, 13h17
  5. ORDER BY un peu spécial
    Par gromez dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 29/04/2004, 11h17

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