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 :

optimisation de code


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur en retraite, développeur bénévole ...
    Inscrit en
    Octobre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur en retraite, développeur bénévole ...

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Par défaut optimisation de code
    Bonjour,
    Je cherche une solution plus rapide qu'une boucle pour le problème suivant:
    Je dois traiter un tableau de plusieurs milliers de lignes. En colonne une se trouve un string du style "CXXX111", soit 4 caractères suivis de 4 chiffres.
    Je souhaite séparer les caractères (qui resteront en colonne une) et les chiffres, à mettre en colonne 2 (pour l'exemple), et en même temps réaliser des conversions sur d'autres colonnes (du style transformer le contenu d'un colonne dont le type est "douteux" en nombre au format currency).
    Pour le moment, je traite avec une boucle, mais cela est long (plusieurs secondes, même sur une machine puissante), et comme cette opération doit se répéter plusieurs fois, je cherche si une solution plus rapide (calcul direct sur l'ensemble du range) existerait, et sa syntaxe (j'ai regardé du coté de "range.application", mais sans succès) ?
    Merci pour vos idées éventuelles.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je ne traite ici (respect du principe de traitement d'une seule difficulté par discussion) que la première des deux difficultés (éclatement sur deux colonnes)
    Intéresse-toi à la méthode TextToColumns (rubrique Range.TextToColumns, méthode de ton aide interne VBA) avec utilisation de la largeur fixe.
    L'utilisation de l'enregistreur de macros et de l'onglet Données -->> convertir te permettra d'en connaître le code

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur en retraite, développeur bénévole ...
    Inscrit en
    Octobre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur en retraite, développeur bénévole ...

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Par défaut
    Merci pour cette réponse rapide. Je vais creuser de ce coté en séparant les diverses transformations et faire quelques tests pour voir ce que je gagne.
    Sur le principe, ma question était sans doute mal posée: Mon problème n'était pas tant la fonction (ou les fonctions) en elle même, mais la recherche de la méthode la plus efficace (rapide), sachant que ma solution via une boucle me semble très lente. Je pensais donc aborder un problème générique unique, et non la somme de plusieurs.
    J'en suis à mes début sous VBA excel, et il me reste pas mal de choses à découvrir.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Pas besoin de macro pour faire ça.
    Tu sélectionnes ta colonne A > Ruban Données > Convertir > Largeur fixe > Suivant
    Tu places le curseur entre le quatrième et cinquième caractère > Suivant > Terminer.

    Si tu tiens à le faire par macro, tu fais la même chose avec l'enregistreur automatique de macro activé.
    Ca te fournira 90% du code.

    Citation Envoyé par Denis Raguin Voir le message
    et en même temps réaliser des conversions sur d'autres colonnes
    Le faire "en même temps" suppose le faire à l'intérieur d'une boucle, ce qui est en contradiction avec ton hypothèse de départ.

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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