XL 2013 reprendre des cellules d'une feuille dans une autre

madmab

XLDnaute Nouveau
Bonjour,
j'ai une petite base en excel mais je n'arrive pas à reprendre des données spécifiques d'un tableau et les retranscrire dans une autre feuille. Pourriez-vous m'aider s'il vous plait.

J'ai rajouté un fichier excel avec des explications plus détaillées.

Image 1 = ma base . ou il y a m - a - s = matin après-midi-soir

image 2 le formulaire ou les données seront retranscrite.

Ce que j'aimerais faire, c'est sur l'image 2 que lorsque l'on clique dans la liste déroulante sur l'exemple = Mr. Boeglin le formulaire ce remplisse avec les données récoltées sur la ligne de l'image 1.

Etant donné qu'il y a plusieurs facteurs sur les colonnes à respecter , je ne sais pas comment procéder pour les reprendre, il y a la date et matin près-midi et soir a respecter.

tab_plan_patient_03.jpg


tab_plan_patient_02.jpg


J'espère avoir était assez clair dans ma demande

D'avance un grand merci pour votre aide.
Madmab
 

Pièces jointes

  • Test.xlsx
    44.8 KB · Affichages: 3
Dernière édition:

djidji59430

XLDnaute Barbatruc
le principe est de recopier la liste des cellules du matin allouées au prof. on va utiliser la fonction index()
=INDEX(DECALER('Controles (2)'!B$6;EQUIV(PlaningPatient!$B$1;'Controles (2)'!$A$7:$A$21;0);0;1;93);PETITE.VALEUR(SI('Controles (2)'!B$6:CP$6=GAUCHE(B$3;1);COLONNE($B:$CP)-1);LIGNE(INDIRECT("$1:$"&MOIS.DECALER(A4;1)-A4))))
la liste des cellules allouées au prof, c'est
DECALER('Controles (2)'!B$6;EQUIV(PlaningPatient!$B$1;'Controles (2)'!$A$7:$A$21;0);0;1;93)
je decale la cellule 'Controles (2)'!B$6 de n lignes correspondant a l'index du prof dans la liste des profs, puis on fait la plage( 1;93) 1 ligne de 93 (3*31) cellules. Et dans cette liste, on extrait parmi les colonnes (COLONNE($B:$CP)-1)) celles qui correspondent au matin('Controles (2)'!B$6:CP$6=GAUCHE(B$3;1)), ce qui nous donne une matrice de faux et de n° de ligne (faux;faux;3:,1;faux; etc) dont avec LIGNE(INDIRECT("$1:$"&MOIS.DECALER(A4;1)-A4)))) on crée une plage qui ne contient que les valeurs des cellules répondant a la condition.
Pareil pour l'après midi et le soir La formule est identique, il n'y a que la condition 'Controles (2)'!B$6:CP$6=GAUCHE(B$3;1 qui change (le B$3 devient C$3, etc ...

Utilise l'outil formule ==> Vérifications des formules ==> Evaluer la formule et tu verras comment ça se passe


Crdlmt
 

job75

XLDnaute Barbatruc
Bonsoir madmab, djidji59430,

Voyez le fichier joint, je n'ai pas modifié la présentation.

Formule en B4 de la 1ère feuille, à propager à droite et vers le bas :

Code:
=SIERREUR(INDEX('NB prest cl'!$A$3:$A$11;EQUIV(DECALER('Controles (2)'!$A$6;EQUIV($B$1;'Controles (2)'!$A$7:$A$21;0);EQUIV($A4;'Controles (2)'!$B$5:$AU$5;0)+COLONNE()-2);'NB prest cl'!$B$3:$B$11;0));"")
Elle doit être modifiée en B20 :
Code:
=SIERREUR(INDEX('NB prest cl'!$A$3:$A$11;EQUIV(DECALER('Controles (2)'!$A$25;EQUIV($B$1;'Controles (2)'!$A$26:$A$40;0);EQUIV($A20;'Controles (2)'!$B$24:$AR$24;0)+COLONNE()-2);'NB prest cl'!$B$3:$B$11;0));"")
Les initiales des prénoms sont converties à l'aide du tableau A3:B11 de la 3ème feuille.

A+
 

Pièces jointes

  • Test(1).xlsx
    46.3 KB · Affichages: 9

madmab

XLDnaute Nouveau
Bonsoir madmab, djidji59430,

Voyez le fichier joint, je n'ai pas modifié la présentation.

Formule en B4 de la 1ère feuille, à propager à droite et vers le bas :

Code:
=SIERREUR(INDEX('NB prest cl'!$A$3:$A$11;EQUIV(DECALER('Controles (2)'!$A$6;EQUIV($B$1;'Controles (2)'!$A$7:$A$21;0);EQUIV($A4;'Controles (2)'!$B$5:$AU$5;0)+COLONNE()-2);'NB prest cl'!$B$3:$B$11;0));"")
Elle doit être modifiée en B20 :
Code:
=SIERREUR(INDEX('NB prest cl'!$A$3:$A$11;EQUIV(DECALER('Controles (2)'!$A$25;EQUIV($B$1;'Controles (2)'!$A$26:$A$40;0);EQUIV($A20;'Controles (2)'!$B$24:$AR$24;0)+COLONNE()-2);'NB prest cl'!$B$3:$B$11;0));"")
Les initiales des prénoms sont converties à l'aide du tableau A3:B11 de la 3ème feuille.

A+
 

madmab

XLDnaute Nouveau
Bonsoir Job75, Je suis désolé de revenir vers vous car j'ai essayé de tourner la formule pour reprendre le schéma un peu différemment. Maintenant j'aimerais pouvoir le faire pour les collaborateurs et plus pour les patients.

Lorsque l'on sélectionne un nom dans la liste déroulante j'aimerais pouvoir reprendre les données de la feuille "Controles(2)" comme si dessous.
Est-il possible de la faire ?

Je met le fichier en pièce jointe les "Explications" sont sur la première feuille en espérant être assez clair dans ma demande.

Merci BCP.

Madmab
 

Pièces jointes

  • Test1.xlsx
    110.4 KB · Affichages: 11

madmab

XLDnaute Nouveau
Bonsoir madmab, djidji59430,

Voyez le fichier joint, je n'ai pas modifié la présentation.

Formule en B4 de la 1ère feuille, à propager à droite et vers le bas :

Code:
=SIERREUR(INDEX('NB prest cl'!$A$3:$A$11;EQUIV(DECALER('Controles (2)'!$A$6;EQUIV($B$1;'Controles (2)'!$A$7:$A$21;0);EQUIV($A4;'Controles (2)'!$B$5:$AU$5;0)+COLONNE()-2);'NB prest cl'!$B$3:$B$11;0));"")
Elle doit être modifiée en B20 :
Code:
=SIERREUR(INDEX('NB prest cl'!$A$3:$A$11;EQUIV(DECALER('Controles (2)'!$A$25;EQUIV($B$1;'Controles (2)'!$A$26:$A$40;0);EQUIV($A20;'Controles (2)'!$B$24:$AR$24;0)+COLONNE()-2);'NB prest cl'!$B$3:$B$11;0));"")
Les initiales des prénoms sont converties à l'aide du tableau A3:B11 de la 3ème feuille.

A+
Bonjour, bonsoir job75,

Je suis a nouveau bloqué car je n'arrive pas a trouver ou est l'erreur de la formule, j'ai refais quelques modifications. le code est sur la feuille "planP"

=SIERREUR(INDEX(COLLEGUES!$A$3:$A$20;EQUIV(DECALER(planG!$A$6;EQUIV($B$1;planG!$A$7:$A$32;0);EQUIV($A4;planG!$B$5:$CO$5;0)+COLONNE()-2);COLLEGUES!$A$3:$A$20;0));"")

Merci
 

Pièces jointes

  • General.xlsm
    110.6 KB · Affichages: 1

job75

XLDnaute Barbatruc
Bonjour madmab, le forum,

Commencez par supprimer les références circulaires de la feuille planG en supprimant les 15 formules existantes dans la plage C18:AV18.

Ensuite entrez 01/03/2022 (mars 2022) en A1 de la même feuille.

La feuille planP se mettra bien à jour.

A+
 

Pièces jointes

  • General(1).xlsm
    100.5 KB · Affichages: 2

job75

XLDnaute Barbatruc
Pour ce qui est de la feuille "planC" il me paraît impossible de la remplir par formules Excel.

Par contre avec cette fonction VBA c'est possible, voyez ce fichier (2) :
VB:
Function RecherchePlanG(nom As Range)
Application.Volatile
Dim initiale As String, c As Range, dat As Range, F As Worksheet, P As Range, n As Byte, ordre As Byte, a(1 To 2)
initiale = Application.VLookup(nom, Sheets("COLLEGUES").Columns("A:B"), 2, 0)
Set c = Application.Caller
Set dat = Intersect(c.EntireColumn, nom.Offset(1).EntireRow)
Set F = Sheets("planG")
Set P = F.Columns(Application.Match(dat(1), F.Rows(5), 0)).Resize(, 3)
n = Application.CountIf(P, initiale)
ordre = c.Row - dat.Row
If ordre > n Then RecherchePlanG = "": Exit Function
Set c = P.Cells(1)
For n = 1 To ordre
    Set c = P.Find(initiale, c, xlValues, xlWhole)
    If n = ordre Then Exit For
Next n
a(1) = F.Cells(c.Row, 1)
a(2) = F.Cells(6, c.Column)
RecherchePlanG = a 'matrice (vecteur horizontal)
End Function
Le code doit être placé impérativement dans un module standard.

La fonction renvoie une matrice et les cellules où elle se trouve doivent être validées comme indiqué.

Elle est volatile et chez moi le recalcul des 372 formules se fait en 0,10 seconde, c'est acceptable.
 

Pièces jointes

  • General(2).xlsm
    115.3 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs