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 :

Rechercher par macro VBA - correspondances de bases de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut Rechercher par macro VBA - correspondances de bases de données
    Bonjour à tous,

    Je me trouve face à un problème pour la création d'une macro sous VBA.
    Je dispose d'une liste d'une dizaine d'opérations bancaires dans la feuille 1. Je cherche à identifier si ces opérations se trouvent dans une liste de 10000 transactions rejetées se trouvant en feuille 2. La feuille 1 est sans cesse mise à jour, c'est pour ça que je souhaite réaliser une macro.

    Il me faudrait faire :
    - grâce à contenu de la colonne I de la feuille 1, pour chaque ligne
    - rechercher dans la colonne G de la feuille 2 s'il y a une correspondance
    - si oui, remplir la colonne K de la feuille 1, pour chaque ligne, avec le texte suivant "Le paiement est rejeté le jj/mm/aaaa pour la somme totale $$$" où la date provient de la colonne E de la feuille 2 (pour la ligne ayant une correspondance) et la somme totale $$$ provient de la colonne I de la feuille 2.
    - si non, remplir la colonne L de la feuille 1 avec le texte "Aucun rejet identifié"

    Plusieurs problèmes se posent à moi :
    - Je ne parviens pas à utiliser Application LookUp avec la boucle FOR et le IF
    - refaire l'opération pour chaque ligne
    - la longueur du contenu de la colonne I de la feuille 1 peut changer
    - impossible de mettre à jour le texte en colonne K de la feuille 1 avec les informations de la ligne de la feuille 2 ayant une correspondance en colonne G de la feuille 2.

    Quelqu'un pourrait-il me donner des pistes pour voir plus clair dans cette tâche ?
    Bien cordialement,
    Antonin

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

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

    Je te conseil de passer par un dictionnaire, ça te facilitera la vie

    Objet Dictionary

    Tu verras, c'est vraiment rapide

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

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

    pour ce genre d'activité "simple" je ne macrote pas, t'as essayé de passer par une rechercheV ?

    je sais que c'est pas ta question mais c'est juste au cas ou

    A paufiner : =SI(ESTNA(RECHERCHEV(I2;Feuil2!G:I;1;FAUX));"Pas de rejet";"rejeté le "&RECHERCHEV(I2;Feuil2!G:I;2;FAUX)&"pour la somme de "&RECHERCHEV(I2;Feuil2!G:I;3;FAUX))

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par augur6 Voir le message
    Bonjour,

    pour ce genre d'activité "simple" je ne macrote pas, t'as essayé de passer par une rechercheV ?

    je sais que c'est pas ta question mais c'est juste au cas ou

    A paufiner : =SI(ESTNA(RECHERCHEV(I2;Feuil2!G:I;1;FAUX));"Pas de rejet";"rejeté le "&RECHERCHEV(I2;Feuil2!G:I;2;FAUX)&"pour la somme de "&RECHERCHEV(I2;Feuil2!G:I;3;FAUX))
    Je suis désolé Augur mais il n'est pas possible de récupérer la colonne E où se tient la date alors que l'on fait une recherche sur la colonne G !!
    On ne peut pas récuperer un Numéro d'index en négatif et pour Vlookup ce sera pareil

    Si la colonne de la date serait situé après la colonne G j'aurais totalement adhéré à ta solution car je suis du même avis que toi : faire des macros que quand c'est utile ...

    Donc du coup sans macro c'est peut-être possible mais par macro cela me semble plus simple

    imaginons que

    j'ai des variables Lign_F1 qui bougera sur les lignes de la feuille1 et Lign_F2 qui bougera sur les lignes de la feuille2
    donc je boucle sur la feuille1 avec Lign_F1
    et pour chaque ligne de la feuille1 je recherche sur la feuille2 la correspondance en bouclant avec Lign_F2

    quand c'est trouver tu fais toutes les actions que tu dois faire.

    lorsque tu passes au suivant Lign_F1 sera augmenter de 1 etLign_F2 reviendra à 1

    tu vas avoir besoin de definir la dernière ligne de feuille1 et feuille2 (2 variables différentes comme par exemple : Der_Lign_F1 et Der_Lign_F2)

    il te faudra aussi utiliser l'ojet Cells : Cells(N°ligne,N°colonne)

    Voilà je t'ai donné des briques à toi de faire le reste

    Reviens nous voir avec ta production on t'aidera à débugger

    a bientôt


    PS: Je sais certains Dieux ( ) trouverais une solution sans macro en ajoutant décaler par exemple mais je suis pas persuadé que ce soit simple

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2018
    Messages : 19
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    PS: Je sais certains Dieux ( ) trouverais une solution sans macro en ajoutant décaler par exemple mais je suis pas persuadé que ce soit simple
    Dieu j'en suis loin... mais je prends

    =SI(ESTNA(RECHERCHEV(I2;Feuil2!G:I;1;FAUX));"Pas de rejet";"rejeté le "&RECHERCHEV(I2;Feuil2!G:I;2;FAUX)&" pour la somme de "&INDEX(Feuil2!E:G;EQUIV(I2;Feuil2!G:G;1);1))



    bon j'avoue que passé 10 000 lignes le PC doit etre poussif

  6. #6
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut
    Citation Envoyé par augur6 Voir le message
    Dieu j'en suis loin... mais je prends

    =SI(ESTNA(RECHERCHEV(I2;Feuil2!G:I;1;FAUX));"Pas de rejet";"rejeté le "&RECHERCHEV(I2;Feuil2!G:I;2;FAUX)&" pour la somme de "&INDEX(Feuil2!E:G;EQUIV(I2;Feuil2!G:G;1);1))
    Citation Envoyé par Trystan441 Voir le message
    Bonjour,

    Je te conseil de passer par un dictionnaire, ça te facilitera la vie
    Merci Trystan441, augur6 et Igloobel pour la réactivité.

    Concernant la formule d'augur6, celle-ci identifie bien les correspondances mais il y a un probleme dans le texte : elle m'affiche le contenu de la colonne H de la feuille 2 pour la date et rien pour la somme totale. J'ai essayé de changer tes plages de colonnes dans les &Recherche et &Index mais ça donne un #N/A. C'est dommage, mais je pense que ton idée est une bonne piste.

    EDIT : En inversant tes &Recherche et &Index, tout fonctionne. Il ne me manque plus qu'a faire afficher la date en format date (actuellement, c'est au format standard type "4355644"). Merci, je continue la mise sous macro.

    Je me penche aussi sur le dictionnaire et les briques d'Igloobel pour voir si je m'en sors avec ça.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/04/2015, 16h46
  2. Recherche par mot clé dans une base de donnée
    Par sihamsisim dans le forum ASP
    Réponses: 1
    Dernier message: 24/04/2008, 20h59
  3. recherche par date vba excel
    Par fred014 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/03/2007, 13h35
  4. Modifier la structure d'une table par macro / vba
    Par zermatt dans le forum Access
    Réponses: 8
    Dernier message: 21/01/2007, 15h32
  5. [php/mySQL]Recherche par motclé sur toute la base
    Par boniface dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/06/2006, 14h54

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