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 :

Remplir un tableau: l'équivalent en macro vba de la combinaison des fonctions excel index+equiv


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut Remplir un tableau: l'équivalent en macro vba de la combinaison des fonctions excel index+equiv
    Bonsoir chers amis,
    Je souhaiterai remplir un tableau de données mais en utilisant une macro. En effet, d'habitude j'utilise la combinaison des fonction index et equiv. Cependant, lorsque je dois traité 15000 lignes, l'analyse est très lente et cela me retarde considérablement. Quelqu'un pourrait-il m'aider à résoudre ce problème.
    J'ai mis en pièce jointe un fichier excel qui illustre ce que j'aimerai faire mais je souhaiterai avoir une macro qui me le fasse.
    Merci d'avance.
    Mignane
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    bonsoir,
    pour un premier début de solution j'utilise la fonction evaluate mais lorsque je fait référence à une rangée de cellule dans la feuil1 ça ne fonctionne pas.
    Ci-dessous mon cas test pour une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim i, j As Integer
    Dim cond1, cond2 As Double
    Dim cond3 As Double
    With Worksheets("Feuil2")
    cond1 = Range("J4")                          'element
    cond2 = Range("J5")                          'noeud
    cond3 = Range("C15")                         'condition
    .Cells(15, 8) = Evaluate("index(Feuil1!AE8:AE1300,match(1,(Feuil1!C8:C1300 = " & cond1 & ")*(Feuil1!E8:E1300 = " & cond2 & ")*(Feuil1!B8:B1300 = " & cond3 & "),0))")
    End With
    End Sub
    Auriez-vous une idée?

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonsoir,

    Essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Cells(15, 8) = Evaluate("index(Feuil1!AE8:AE1300,match(1,(Feuil1!C8:C1300 = """ & cond1 & """)*(Feuil1!E8:E1300 = """ & cond2 & """)*(Feuil1!B8:B1300 = " & cond3 & "),0))")
    Cordialement.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,
    ça marche mais pourquoi on utilise les 3 guillemets (""")?

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    ça marche mais pourquoi on utilise les 3 guillemets (""") ?
    Lorsque tu effectues une recherche de texte, tu indiques qu’il s’agit d’une chaine de caractères en encadrant ce texte avec des quotes.
    Exemple : 213 est un nombre alors que "213" est une chaine de caractères.
    Dans ton cas, les 2 variables cond1 et cond2 sont des chaines de caractères, il faut donc les encadrer avec des quotes.
    De plus, avec VBA pour transcrire une quote, tu dois la doubler.
    Tu peux faire le test suivant pour visualiser la différence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
    cond1 = "201L-202L"
    cond2 = "201L"
    cond3 = 37
    Debug.Print "index(Feuil1!AE8:AE1300,match(1,(Feuil1!C8:C1300 = " & cond1 & ")*(Feuil1!E8:E1300 = " & cond2 & ")*(Feuil1!B8:B1300 = " & cond3 & "),0))"
    Debug.Print "index(Feuil1!AE8:AE1300,match(1,(Feuil1!C8:C1300 = """ & cond1 & """)*(Feuil1!E8:E1300 = """ & cond2 & """)*(Feuil1!B8:B1300 = " & cond3 & "),0))"
    End Sub
    Cordialement.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Merci pour l'exemple.
    J'ai réussi à appliquer cette macro sur mon cas mais je n'ai vraiment rien gagner en temps de calcul. Y a-t-il un moyen d'améliorer ce temps de calcul.
    Si oui? comment?

  7. #7
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Dans l’exemple donné, tu inscris une valeur recherchée en Feuil2!H8 en fonction de paramètres inscrits en J4, J5 et C15 de Feuil1.
    Il est difficile de voir en quoi le temps de calcul pose problème.
    Bien que tu fasses état de 15000 lignes, on ne voit rien transpirer dans ton code.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    Sur le fichier joint, je n'ai mis qu'une petite partie des valeurs à exploiter et j'ai fait une copie des valeurs (normalement ya tout un processus de calcul avant). Mon fichier réel fait 50 Mo et rien que pour l'ouvrir ça rame.
    Merci encore pour votre aide je vais mettre le sujet en mode résolu.
    Cordialement.
    Mignane

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

Discussions similaires

  1. [XL-2007] VBA problème pour passer des données EXCEL vers WORD
    Par nocontrol dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/07/2011, 10h01
  2. utilisation des fonction excel dans VBA
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2009, 11h24
  3. Macro VBA fonctionnant a la fois dans Excel 2003 et Excel 2007
    Par sebmetz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/07/2008, 18h40
  4. [vba excel] remplir un tableau
    Par tarmin dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 28/02/2007, 11h30
  5. [VBA-E] Problème de tableau dans macro VBA
    Par Chouls dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2006, 15h20

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