VBA EXCEL pour comparer et copier des données

Résolu
Bonjour,
Débutant en VBA j'aimerais bien trouver une aide dans le forum.
J'ai dans ma première feuille(2013) une liste de nom (col C) qui possède également un numéro unique (col B). Dans la colonne F un oui ou un non pour un test réussi.
Dans ma deuxième feuille (2014) j'ai la même liste, qui correspond à l'année suivante et j'aimerais trouver un code qui recherche en comparant les numéros de la col B, si le test a déjà été passé l'année précédente. Si c'est le cas, qu'il copie le oui dans la colonne F de la feuille 2014.
J'espère que je n'ai pas été trop confus mais je ne sais absolument pas comment résoudre ce problème.

Merci d'avance de votre aide

4 réponses

  1. Bonjour,

    Pourquoi utiliser VBA lorsqu'une simple formule RECHERCHEV ou INDEX(EQUIV()) suffit ?
    0
    1. Parce qu'il y a 600 noms et j'aimerais le faire pour l'ensemble de la liste.

      Cordialement
      0
      1. Bonjour berchy

        Pourquoi vouloir passer par une macro en VBA, une simple formule suffit:
        En supposant les codes dans la Feuil2 aussi en colonne B et les retour oui ou rien à faire en colonne F , mettre en F1 la formule suivante :
        =SI(INDEX(Feuil1!F:F;EQUIV(Feuil2!B1;Feuil1!B:B;0))="oui";"oui";"")

        Cdlmnt
        Via
        0
        1. J'y avais pensé mais les noms ne sont pas forcement sur la même ligne, il faut donc rechercher en premier si l'enregistrement existe dans la première feuille et si oui, vérifier si le test a été passé et recopier le oui. D'où mon idée de passer par du VBA.
          C'est des listes d'élèves qui changent d'année en année.

          CDT
          Claude
          0
        2. @berchyRe,

          Comme dis Patrice, que je salue au passage, ma formule fonctionne justement où que soit le numéro unique dans la 1ere feuille puisque les fonctionsINDEX EQUIV (c'est le principe de ces fonctions) font la recherche sur l'ensemble de la colonne B (Feuil1!B:B)

          Fais l'essai et dis-nous
          Si néanmoins tu persistes à vouloir réaliser une macro en VBA, postes un exemple de ton fichier (anonymé, tu remplaces les noms par des noms bidons) sur cjoint.com et tu reviens ici indiquer le lien fourni

          Cdlmnt
          Via
          0
      2. Je ne vois pas où est le problème avec les formules proposées par via55 (bonjour à toi) !!!
        As-tu au moins essayé ???
        0
        1. Au temps pour moi !!!! Je ne connaissais pas la fonction INDEX EQUIV !
          Un petit détail : Si un nom est présent sur la deuxième liste et pas sur la première il s'affiche #N/A. Est-il possible de ne rien afficher ???
          Encore merci à tout ceux qui m'ont aidé et surtout via55 pour la solution.
          Cordialement
          Claude
          0
        2. @berchyBonjour Berchy,

          Pour gérer l'erreur transforme la formule ainsi :
          =SIERREUR(SI(INDEX(Feuil1!F:F;EQUIV(Feuil2!B1;Feuil1!B:B;0))="oui";"oui";"");"")

          Cdlmnt
          Via
          0
        3. Génial, ça fonctionne comme je le voulais. Je vais potasser un bon livre sur Excel pour apprendre les formules.
          Merci Via55

          Bonne journée
          Claude
          0