Recherche de donnée et copie sur une feuille INDEX EQUIV ???

Bonjour, j'ai un problème,

je suis un peu perdu, et je n'arrive pas à trouver la solution.

Je vous explique la situation :

J'ai en feuille 1 un tableau avec : des dates, des themes, des noms

J'aimerai qu'en feuille 2 les dates soient récupérer automatiquement sur la feuille 1 par rapport à la présence des personnes aux thèmes.

Quand une personne participe plusieurs fois au même thème, la première date me suffira.

Je vous joint un fichier simplifié de ce que je souhaiterai, cela sera plus parlant.

J'ai essayé avec INDEX et EQUIV mais ça ne marche pas, est il possible de me trouver la solution via formules et par macro si non possible par formules.

Je vous remercie d'avance, j'attends vos réponses avec impatience.

29presence.xls (14.50 Ko)

Bonjour,

J'aimerai qu'en feuille 2 les dates soient récupérer automatiquement sur la feuille 1 par rapport à la présence des personnes aux thèmes.

ce n'est pas clair, voulez-vous renseigner les cellules Feuil1!C5:H5 à selon les données de la Feuil2 ?

En fait, j'ai inscrit manuellement les dates en feuil2.

Les infos seront remplit manuellement en Feuil1 et j'aimerai que les dates se remplissent automatiquement en Feuil2.

Est ce clair ?

Je veux que Feuil2 C8:I17 se remplissent à partir des données de Feuil1

Merci de vous intéresser à ma problématique.

Bonjour,

j'ai nommé la plage Feuil1!B7:H10 --> THEME

et la plage Feuil1!B12:H21 --> NOM

à tester

Sub test()
With Sheets("Feuil2")
 .Range("C8:I17").ClearContents
 .Activate
 .Range("C8").Select
End With
For n = 8 To 17
  For t = 3 To 9
   With Range("THEME")
    Set c = .Find(Cells(6, t), LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
        firstAddress = c.Address
        col = c.Column
        If Not IsError(Application.Match(Sheets("Feuil2").Cells(n, 2), Sheets("Feuil1").Columns(col), 0)) Then
         colT = Application.Match(Sheets("Feuil2").Cells(n, 2), Sheets("Feuil1").Columns(col), 0)
         Cells(n, t) = Sheets("Feuil1").Cells(5, col)
         GoTo nextT
        End If

      nb = Application.CountIf(Range("THEME"), Sheets("Feuil2").Cells(6, t))
      For i = 1 To nb
            c.Value = Cells(6, t)
            Set c = .FindNext(c)
            col = c.Column
            If Not IsError(Application.Match(Sheets("Feuil2").Cells(n, 2), Sheets("Feuil1").Columns(col), 0)) Then
              colT = Application.Match(Sheets("Feuil2").Cells(n, 2), Sheets("Feuil1").Columns(col), 0)
              Cells(n, t) = Sheets("Feuil1").Cells(5, col)
              Exit For
            End If
       Next i
    End If
  End With
nextT:
 Next t
Next n
End Sub

Franchement, je dis RESPECT !

Chose bizarre, les résultats sont corrects, mais j'ai remarqué qu'en cliquant sur TEST, certaines dates changeaient sur la colonne THEME 4 (certaines personnes ont validés 2 fois le thème 4 et il prend la deuxième date en compte), chose qu'il ne fait pas sur le THEME 1 qui est dans le même cas.

Je ne sais pourquoi !

J'ai cherché toute la journée, j'ai fait des trucs extra ordinaires sur excel mais là je suis scotché !

Un grand merci !


Pourrais tu m'expliquer le code si jamais j'agrandie la zone à une année complète et si j'agrandie le nombre de personne à 20.

Forcément, pour les zones à changer, ce sera simple, par contre il y aura surement d'autres valeurs à changer.

Merci d'avance

Bonjour,

Pourrais tu m'expliquer le code si jamais j'agrandie la zone à une année complète et si j'agrandie le nombre de personne à 20.

Forcément, pour les zones à changer, ce sera simple, par contre il y aura surement d'autres valeurs à changer.

il faudrait adapter les chiffres des boucles selon le rapport Feuil2

For n = 8 To 17 ' lignes des noms

For t = 3 To 9 'colonnes de themes

et aussi, comme tu as dit, modifier l'adresse des plages nommées

OK, c'est ce que je pensais, par contre j'avais des doutes sur ce genre de code : Cells(n, t) = Sheets("Feuil1").Cells(5, col) ou Sheets("Feuil2").Cells(6, t)).

As tu trouvé la raison concernant le thème 4 ??

Bonjour,

je ne comprend pas ce que tu veut dire pour le theme 4 ?

tous les noms sont à 2017-01-01

c'est à dire le premier trouvé lorsque colonne theme = colonne nom

sauf pour nom 6 et nom 8

car ceux-ci ne sont pas présent en colonne 2017-01-01 même si theme 4 est présent

voici ce qui m'affiche quand je clique sur test :

capture d ecran 2017 06 17 a 00 09 31

ok je comprend mieux,

je crois que le format de date c'est modifié entre nos 2 pc,

copie la macro sur le fichier original, celui que tu as transmit dans ton 1er post,

n'oubli pas de nommer la plage Feuil1!B7:H10 : THEME

et refait un test

ps/ finalement je n'ai pas utilisé la plage nommée: NOM dans la macro

Ça fait exactement la même chose, je le fait fonctionner sur une version d'excel 2003 (Windows 7 pour mon boulot)

Le fichier en .xlsm que tu m'a créé, je l'ouvre sur mon mac et ça fait exactement la même chose.

Ce qui est bizarre, c'est que le problème ne s'effectue que sur le THEME 4, car le NOM 1 à également effectué le THEME 1 le 01/01/2017 et le 02/01/2017 et là il prend la 1ère valeur (01/01/2017)

J'ai trouvé la cause, en fait il prend les données par ordre de ligne :

Le 01/01/2017, THEME 4 est inscrit sur la ligne 10

Le 03/01/2017, THEME 4 est inscrit sur la ligne 9

La macro prend en priorité la ligne 9 donc le 03/01/2017 !

bonjour,

ha oui c'est bien ça, ma recherche était déjà par colonne,

il faudrait modifier la ligne

Set c = .Find(Cells(6, t), LookIn:=xlValues, LookAt:=xlWhole)

par

Set c = .Find(Cells(6, t), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns)

Ok, merci beaucoup je vais modifier cela !

Un grand merci, je vais m'amuser à l'adapter complètement à mon projet.

Bonne nuit et bon week-end.

merci! pour ce retour, bon w.e. à toi également

Rechercher des sujets similaires à "recherche donnee copie feuille index equiv"