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 :

Explication sur code "Application.Match"


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2010
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Explication sur code "Application.Match"
    Bnojour à tous,

    Dans une autre discution j'avai demandé des solutions pour accélérer l'exécution de ma macro qui traitait plusieurs 1000 de lignes et on m'avait fait deux type de solution la première je l'ai mis en place et celàs fonctionne, mais apparament la deusième solution dvrait être plus rapide.

    Mon problème est que je débute en VBA et je ne comprend pas tous. Est ce que quelqu'un pourais m'expliquer le fonctionnement de cette macro qui m'avais été faite en exemple?

    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
    Sub test()
     
    'Note : Application.Match correspond à la fonction EQUIV
     
    Dim rngBF1 As Range, rngBF2 As Range, cell As Range
    Dim retour As Variant
    Dim temp As Variant, i As Long
    i = 1
     
    Set rngBF1 = Sheets("Feuil1").Range("A1:" & Sheets( _
                 "Feuil1").Cells(Rows.Count, 1).End(xlUp).Address)
    Set rngBF2 = Sheets("Feuil2").Range("A1:" & Sheets( _
                 "Feuil2").Cells(Rows.Count, 1).End(xlUp).Address)
     
    ReDim temp(1 To rngBF1.Count)
     
    For Each cell In rngBF1
        If Not IsError(Application.Match(cell, rngBF2, 0)) Then
            retour = Application.Match(cell, rngBF2, 0)
            temp(i) = Sheets("Feuil2").Cells(retour, 2).Value
        Else
            temp(i) = "sans correspondance"
        End If
        i = i + 1
    Next
     
    Sheets("Feuil1").Range("B1").Resize(i, 1).Value = Application.Transpose(temp)
     
    End Sub
    Vous remerciant d'avance pour vos précieux conseils

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour 44jeje44 le forum en clear tu veus faire quoi exactement??? dans pratiquement tous les cas il vaut mieux utiliser des formules excel bien plus rapide que le vba!!!! quitte a "etirer" ta formule par programmation "autofill"par la suite

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2010
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    En résumé,

    Je fait un fichier de synthese mensuel sur l'activité de la maintenance.

    Je fait 5 extractions d'un logicel de GMAO en fichier Excel, qui me permet de ressortir toutes les demandes d'interventions avec un numéro d'équipements, un lieu, les technicien, le temps passé, le temps d'arrêt, les pièces de rechange consommées, la dates....

    Et via une macro je copie les 5 fichiers (avec 1 seul onglet utilisé) dans un même fichier et je fait dans un autre onglet une synthese des 5.

    A savoir chaque ligne d'un onglet ne correspond pas à la mêmes dans les autres, donc je fait une comparaison via la valeur d'une case dans une colone définie (N° d'avis, N° OT) et je copie les informations qui m'intéresses de chaques onglets dans une même ligne pour chaque intervention soit environ 3000 par mois.

    Je sais pas si j'ai été claire dans mes explications.
    Acctuellement j'ai une macro qui fonctionne très bien mais je cherche à l'améliorer en temps de traitement (et en même temps a me perfectionné)

Discussions similaires

  1. besoin d'explications sur un code
    Par NAHIAG dans le forum C
    Réponses: 8
    Dernier message: 28/05/2006, 12h37
  2. Besoin d'explications sur un bout de code
    Par zizitop dans le forum C
    Réponses: 7
    Dernier message: 26/04/2005, 14h51

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