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 Code VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut Optimisation Code VBA
    Bonjour a tous,

    je débute en VBA et besoin de développer un fichier de comparaison pour mon travaille.

    il faut comparer les valeurs de chaque cellules de trois colonnes dans deux feuilles qui se trouve dans le même classer, si toute les valeurs égaux "ok" si non il faut savoir la différence concerne qu'elle colonne.

    le problème de mon code que j'ai imbriqué plusieurs boucles ce qui rend l’exécution du code impossible sachant que j'ai plus que 4000 lignes pour chaque feuille, et je ne sais pas comment optimiser la recherche sur VBA.

    et les résultat ne sont pas souvent correcte, je ne vois pas l'erreur.

    en gros je vais simplifier j'ai deux feuilles F1 et F2
    F2
    A B C
    1 a x
    2 b x


    F1
    A B c
    1 a x
    2 b x
    2 b y

    Résultat affichée dans la F1

    D
    ok
    ok
    check C

    j’espère que mes explications sont claire.

    je vous remercie par avance pour votre aide

    Orda


    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
    30
    31
    32
    33
    34
    35
    36
    Sub Bouton1_Cliquer()
     
        Dim i As Long
        Dim j As Long
        Dim K As Long
        Dim L As Long
     
     
        Sheets("Simplified Mapping").Select
        nbcells2 = Application.WorksheetFunction.CountA(Range("$C:$C"))
        Sheets("DLR FDMEE").Select
        nbcells = Application.WorksheetFunction.CountA(Range("$A:$A"))
     
     
            For i = 2 To nbcells
                For j = 4 To nbcells2
                    If Sheets("DLR FDMEE").Cells(i, 3) = Sheets("Simplified Mapping").Cells(j, 3) Then
                        For K = j To nbcells2
                            If Sheets("DLR FDMEE").Cells(i, 4) = Sheets("Simplified Mapping").Cells(K, 4) Then
                                For L = K To nbcells2
                                    If Sheets("DLR FDMEE").Cells(i, 35) = Sheets("Simplified Mapping").Cells(j, 6) Then
                                        Sheets("DLR FDMEE").Cells(i, 44) = "OK"
                                    Else
                                        Sheets("DLR FDMEE").Cells(i, 44) = "CHECK FA"
                                    End If
                                Next L
                            Else
                               Sheets("DLR FDMEE").Cells(i, 44) = "CHECK Account"
                            End If
                        Next K
                    Else
                        Sheets("DLR FDMEE").Cells(i, 44) = "CHECK Source Account"
                    End If
                Next j
            Next i
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 477
    Par défaut Une simple formule suffit
    Bonjour,

    Pourquoi VBA, avec une formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUPPRESPACE(SI(A2<>F1!A2;"Check A ";"") & SI(B2<>F1'!B2;" Check B";"") & SI(C2<>F1'!C2;" Check C";"") & SI(A2&B2&C2=F1!A2&F1!B2&F1!C2;"Ok";""))
    Et si tu tiens au VBA, écris cette formule transformée en R1C1, puis Plage.value = Plage.value pour la remplacer par son résultat.

  3. #3
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut
    Bonjour Patrice740,

    Merci pour la réponse, je ne connaissais pas cette formule, mais je ne sais est ce qu'elle peut s'adapter à mon besoin, j'ai essayé de combiner SUPPRESPACE avec RECHERCHEV car l'ordre dans F2 n'est pas respecter, sauf ca ne fonction pas.
    les données de la même colonne peuvent être répéter, mais il faut vérifier la combinaison entre les 3 cellules de F1 par rapport a F2

    je vous remrcie pour l'aide
    Orda

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 477
    Par défaut
    Bonjour,
    Citation Envoyé par Orda80 Voir le message
    Merci pour la réponse, je ne connaissais pas cette formule, mais je ne sais est ce qu'elle peut s'adapter à mon besoin, ...
    Je n'ouvre jamais les fichiers joints au premier post....
    Voici une application de la formule qui correspond exactement à l'exemple que tu as donné (et les autres cas supplémentaires) :
    Check.xls

  5. #5
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut
    Merci Patrice,

    Normalement les données dans les deux feuilles sont pas dans le même ordre.

    j'ai modifié les données de F1 et F2 pour qu'il se rapproche à mon besoin que tu trouvera en pièce jointe, car il faut rechercher les valeurs avec la combinaison des trois cellules dans F2.

    Cordialement,
    Orda
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2013] Problème d'optimisation code VBA
    Par Tansquer dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/07/2018, 15h28
  2. [XL-2010] optimisation code vba
    Par barrybarr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/08/2015, 19h21
  3. [XL-2010] Aide pour optimisation code VBA
    Par adelas93 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2014, 13h56
  4. Optimisation code VBA Blocs With
    Par Ariaar dans le forum Général VBA
    Réponses: 0
    Dernier message: 13/12/2012, 17h15
  5. Optimiser code VBA
    Par willytito dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/11/2007, 09h49

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