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 :

Concaténer plusieurs cellules sous VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Par défaut Concaténer plusieurs cellules sous VBA
    Bonjour à tous,

    J'ai longtemps parcouru les fils de discussion de ce forum pour des précédents projets.
    Dans mon cursus Ingénieur en alternance, je me retrouve cette année dans plusieurs projets dont un en vba sous excel.

    projet : migration d'anciennes données SAP vers un nouveau logiciel, je dois controler que toutes les données sont bien présente dans la migration.

    Pour ce faire, j'ai créé un onglet "PRD" avec toutes les anciennes données que je compare à un autre onglet "TRM" (contenant les données migrées). pour comparer j'ai utilisé la méthode suivante :

    Onglet "PRD" : j'ai 14 colonnes, j'ai donc établi 14 variables texte qui me serviront de critère, pour filtrer sur TRM
    en filtrant les 2 feuilles, je compte sur chacune d'elle le nombre de ligne. Si le nombre de ligne comptées sur TRM est différent du nombre de ligne compté sur PRD, alors je repère la ligne.


    Mon problème : Ma macro semble fonctionner, seulement elle prend énormément de temps :
    Avec ma méthode : pour comparer 1 ligne de PRD elle doit filtrer 14 colonnes sur PRD et sur TRM puis compter le nombre de lignes
    Or j'ai plus plus de 1000 lignes à comparer ...

    Est-il possible que quelq'un puisse m'aider à optimiser le code, ou même changer de logique de codage étant donné que c'est bien trop long ?
    Pour ceux que sa peut intéresser, le fichier en question est joint à ce post. Je vous remercie par avance.

    Cordialement.
    Loïc
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    logiquement, contrôler le nombre de lignes serait suffisant, temps inférieur à 0,001 seconde !

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Par défaut
    Bonjour Marc-L,

    D'abord, merci pour votre intérêt à ma problématique.

    Ce que vous dites est exact, en controlant le nombre de lignes sur les deux feuilles, cela me suffit à savoir si apparement il manque ou non des données.
    Seulement, il faut que j'identifie chaque ligne provenant de PRD qui ne se retrouve pas dans TRM, je suis donc bien obligé de filtrer puis compter pour chaque ligne (selon ma logique... après il y a peut etre plus simple).

    Petit update : j'ai relancé la macro sur un fichier contenant des données similaires. la macro s'est éxécutée entièrement en moins de deux minutes.. et des fois, sa prend 10 min.. (cela est peut être due à mon pc)

    une idée d'amélioration ? Merci

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    S'il y a un identificateur unique dans une colonne par ligne, une simple formule de calculs fait l'affaire
    donc un code n'est pas vraiment obligatoire.

    Sinon il faut concaténer les données de chaque ligne puis les comparer de la même manière
    via une Collection ou un objet Dictionary (pour les deux voir l'aide VBA et les exemples dans ce forum).

    Tout dépend aussi du nombre de lignes, l'OS, …

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Par défaut
    Marc-L,

    Je n'ai pas d'identificateur unique dans une colonne spécifique.
    Cependant la concaténation devrait largement régler mon problème. Ca parait bête, mais je ne connaissais pas cette manip', d'où l'intérêt du forum.

    Merci Marc-L, je vais m'y exercer ce soir ! Si problème Résolu je le ferai savoir !

    Bonjour Marc-L,

    C'est effectivement un problème venant de mon pc, bien trop lent.
    La concaténation m'a cependant permis de largement simplifier le programme, en le lançant sur un autre pc j'ai pu traiter 30 000 lignes en 3-4 minutes d'execution seulement.

    Merci pour votre aide précieuse.
    Bien cordialement.
    Loïc TISSOT

    Pour info et pour ceux que ça pourrait aider : Le fichier terminé a été uploadé dans le premier post de cette discussion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] [DEBUTANT]Mesure temps d'exécution d'une macro et/ou d'une fonction
    Par KNIZOU dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/04/2010, 11h36
  2. temps d'excution d'une macro
    Par piero43 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 29/05/2008, 18h20
  3. Optimisation du temps d'exécution d'une requête
    Par LeNovice dans le forum DB2
    Réponses: 6
    Dernier message: 12/07/2007, 13h47
  4. Allongement d'uin temps d'exécution d'une macro
    Par avanrill dans le forum Access
    Réponses: 2
    Dernier message: 06/03/2006, 19h29
  5. Réponses: 9
    Dernier message: 20/06/2005, 12h17

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