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 d'une boucle par son paramétrage de cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut Optimisation d'une boucle par son paramétrage de cellules
    Bonsoir,
    j'ai une boucle sur i, qui remplit en conséquence à i, 3 lignes j d'un second tableau; j, j+1, j+2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Cells(j, 20) = ws1.Cells(i, 19)
        Cells(j + 1, 20) = ws1.Cells(i, 20)
        Cells(j + 2, 20) = ws1.Cells(i, 21)
    Dès le début de la boucle on sait que les infos peuvent venir d'un autre endroit, 28,29,30 au lieu de 19,20,21

    Est il préférable d'écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If SITE = "SV" Then
        Cells(j, 20) = ws1.Cells(i, 19)
        Cells(j + 1, 20) = ws1.Cells(i, 20)
        Cells(j + 2, 20) = ws1.Cells(i, 21)
    Else
        Cells(j, 20) = ws1.Cells(i, 28)
        Cells(j + 1, 20) = ws1.Cells(i, 29)
        Cells(j + 2, 20) = ws1.Cells(i, 30)
    End If
    OU

    De paramétrer les noms des colonnes en écrivant pour le premier par exemple:

    Cells(j,20) = "ws1.cells(i,"& P1&")" où P1 est défini une fois pour toute ?
    il y a peut être une erreur de "" d'ailleurs dedans..

    => la syntaxe est elle correcte ?
    => qu'est ce qui est plus rapide ?

    il y a environ 1000 lignes 1 donc 3000 lignes j

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Tu peux peut être utiliser IIf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim K As Long
    K = IIf(SITE = "SV", 19, 28)
    Cells(j, 20) = ws1.Cells(i, K)
    Cells(j + 1, 20) = ws1.Cells(i, K + 1)
    Cells(j + 2, 20) = ws1.Cells(i, K + 2)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    tant qu'on y est, autant tout écrire en une fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(j, 20).Resize(3) = Application.Transpose(ws1.Cells(i, IIf(site = "SV", 19, 28)).Resize(, 3).Value)
    eric

  4. #4
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    J'ai cherché un moment mais dans la mauvaise voie; c'est une fonction Access ?!

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Pas bonjour non plus,

    rien qui ne vienne d'access dans les 2 propositions.
    eric

Discussions similaires

  1. [VB6] Appeler une procedure par son nom.
    Par kenn dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/05/2006, 10h29
  2. Accéder à une propriété par son nom
    Par Neilos dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/09/2005, 22h34
  3. [DLL] Acces a une methode par son index de maniere dynamique
    Par Clorish dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 11/03/2005, 18h14
  4. [Debutant] Optimisation d'une boucle
    Par Javatator dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2004, 19h50

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