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 :

Recherche multicritère et remplacement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut Recherche multicritère et remplacement
    Bonjour,

    J'ai un tableau dans ma feuille1 avec dans la colonne A des données "NOM", en colonne B des données "REPERE" et en colonne C "NUMERO" qui forment un couple.
    Dans ma feuille 2, un autre tableau avec dans la colonne A des données "NOM_2", puis dans les colonnes suivantes des couples "REPERE_2" (en colonne B) et "NUMERO_2" (en colonne C) etc... D-E ... F-G....
    Ceci pour toutes les lignes du tableau.

    Ce que je souhaite faire, c'est mettre à jour le champs "NOM" (feuille1, colonne A) en fonctions des conditions suivantes:

    - pour chaque ligne de la feuille 1:
    à partir des données "REPERE" et "NUMERO" de ma feuille 1,
    effectuer une recherche sur la feuille 2 de ces valeurs sur les couples "NOM_2" et "NUMERO_2",
    si les valeurs (format: texte) sont identiques,
    il faut récupérer la valeur "NOM_2" de la ligne où le couple de valeurs a été trouvé identique pour le recopier dans "NOM" sur la feuille 1,
    si aucune valeur identique n'a été trouvé le contenu de "NOM" reste inchangé.

    Si quelqu'un peut me fournir un listing de programme VBA pour que je puisse réaliser ceci, ou me m'orienter sur les fonctions à utiliser pour y arriver...

    Je débute et il me faut traiter plusieurs tableau de ce style pour le debut de la semaine prochaine... en attendant je fais ça manuellement et c'est trés long!

    En vous remerciant pour votre aide

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir,

    peux tu mettre un classeur exemple au format ZIP, sans donnée personnelle.

    cordialement

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Bonjour,

    Je joins un petit fichier excel compressé pour essayer de vous expliquer plus concretement ce que je veux faire.

    En esperant que ça vous aide.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Voici qui devrait faire ton bonheur

    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
    37
     
    Sub EffectuerMiseAJour()
        Dim rngRecherche As Range
        Dim rngDepart As Range
        Dim wksRecherche As Worksheet
        Dim sAdresse As String
        Dim rng As Range
        Dim c As Range
     
        Set wksRecherche = Worksheets("Feuil2")
        Set rngDepart = Worksheets("Feuil1").Range("A3:A65536")
        Set rngRecherche = wksRecherche.UsedRange
     
        ' Rechercher chaque nom de la colonne 1
        For Each c In rngDepart
            If c.Value = vbNullString Then Exit For ' Sortie de la boucle à la première entrée vide
     
            ' Rechercher le repere
            Set rng = rngRecherche.Find(What:=c.Offset(0, 1).Value, LookIn:=xlValues)
            If Not rng Is Nothing Then
                sAdresse = rng.Address ' Prendre en note l'adresse de départ de la recherche
     
                ' Si le numéro correspond
                If rng.Offset(0, 1).Value = c.Offset(0, 2).Value Then
                    c.Value = rng.Rows(1).EntireRow.Cells(1).Value
                Else
                    ' sinon, poursuivre la recherche du repere...
                    Do
                        Set rng = rngRecherche.FindNext(rng)
     
                        ' Si le numéro correspond
                        If rng.Offset(0, 1).Value = c.Offset(0, 2).Value Then c.Value = rng.Rows(1).EntireRow.Cells(1).Value
                    Loop While Not rng Is Nothing And rng.Address <> sAdresse
                End If
            End If
        Next c
    End Sub

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Merci!
    C'est ce qu'il me fallait!

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

Discussions similaires

  1. faire un état d'après recherche multicritère
    Par bilouk dans le forum Access
    Réponses: 4
    Dernier message: 12/01/2006, 18h30
  2. Formulaire Recherche MultiCritère et RunTime
    Par fbu78 dans le forum Runtime
    Réponses: 9
    Dernier message: 06/01/2006, 17h52
  3. Recherche multicritère
    Par Darlay Jean_Louis dans le forum Access
    Réponses: 2
    Dernier message: 26/10/2005, 09h54
  4. Réponses: 2
    Dernier message: 01/10/2005, 18h42
  5. recherche multicritères
    Par onlineduel dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2004, 16h15

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