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 durée de procedure vba excel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant en Master Statistiques
    Inscrit en
    Juin 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant en Master Statistiques
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2012
    Messages : 45
    Par défaut Optimisation d'une durée de procedure vba excel
    Bonjour à tous !

    J'ai une petite question pour optimiser un programme qui met trop de temps à se derouler. j'ai 2 feuilles excel nommée PE (nombre de ligne = l) et RSA non orienté (nombre de ligne = k) que je dois croiser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    For i = 2 To k
     
     
    For j = 2 To l
     
     
     
            If Sheets("RSA Non orienté").Cells(i, 18) = Sheets("PE").Cells(j, 2) Then
     
            Sheets("RSA Non orienté").Cells(i, 20) = "Inscrit PE"
     
             End If
     
        Next j
     
     
     
        If Sheets("RSA Non orienté").Cells(i, 20) = "" Then
     
        Sheets("RSA Non orienté").Cells(i, 20) = "Non inscrit PE"
     
     
     
        End If
     
     
        Next i
    En gros si la colonne 18 de la feuille RSA et la colonne 2 de PE sont égale alors la colonne 20 de RSA = "Inscrit PE" et si elle est vide alors on écrit "non inscrit PE"

    J'aimerais bien qu'il passe au i suivant dès qu'il trouve l'égalité histoire qu'il ne parcours pas tout le fichier à chaque fois par éxemple, ce qui ferait gagner du temps.

    Des idées ?

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            If Sheets("RSA Non orienté").Cells(i, 18) = Sheets("PE").Cells(j, 2) Then
     
                Sheets("RSA Non orienté").Cells(i, 20) = "Inscrit PE"
                Exit For
     
            End If

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant en Master Statistiques
    Inscrit en
    Juin 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant en Master Statistiques
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2012
    Messages : 45
    Par défaut
    Merci beaucoup en effet j'ai gagné du temps

    Y'a-t-il d'autres moyens pour optimiser où est ce optimisé au maximum ?

  4. #4
    Membre expérimenté Avatar de Denis la Malice
    Homme Profil pro
    FabManager
    Inscrit en
    Février 2013
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : FabManager
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2013
    Messages : 133
    Par défaut Plus vite, plus vite
    Dans la cellule T2 de la feuille "RS non orienté", mets la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(SIERREUR(RECHERCHEV(R2;'Inscrit PE'!B:B;1;FAUX);"X")=R2;"Inscrit PE";"Non inscrit PE")
    Recopie cette formule sur toute la colonne (jusqu'à la ligne l).

    Plus de code VBA, le résultat est automatiquement à jour.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant en Master Statistiques
    Inscrit en
    Juin 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant en Master Statistiques
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2012
    Messages : 45
    Par défaut
    merci beaucoup !

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

Discussions similaires

  1. Appel d'une procédure Outlook depuis VBA excel
    Par sergiani dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 16h29
  2. Détecter une fenêtre internet active VBA Excel
    Par mmmxtina dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/06/2009, 17h36
  3. [XL-2000] trier et renommer une table access depuis vba excel
    Par lascrabbleuse dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/04/2009, 16h05
  4. Pointer sur une cellule fusionnée en Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 56
    Dernier message: 03/02/2009, 11h48
  5. Réponses: 3
    Dernier message: 09/04/2006, 09h10

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