Dupliquer valeur d'1 cellule en fonction du nbr affiché dans autre cellule

Bonjour,

Je m'excuse tout d'abord pour le nom du titre, je n'ai pas su l'exprimer autrement.

Je vous laisse le fichier test ci-joint qui vous illustrera mieux ma demande.

12fichier-test.xlsm (29.27 Ko)

Dans une feuille excel qu'on va appeler "BASE", j'ai une liste de métiers (médecin, consultant, directeur...), avec le nombre de personnes demandé par jour travaillé (colonnes avec dates sur l'année 2020). Ces métiers sont dispatchés par projet.

1ère PARTIE : >> Macro

Dans l'objectif d'optimiser une saisie sur un logiciel, j'ai une macro qui me réalise une duplication de lignes de métiers, en fonction du maximum de personnes à affecter dans l'année. Exemple, dans une seule ligne de la feuille "BASE", j'ai :

  • Colonne Métier = Médecin,
  • Colonne Calendrier 02/01/2020 : J'ai "2" qui travaillent le 02/01/2020,
  • Colonne Calendrier 03/03/2020 : J'ai "4" qui travaillent le 03/03/2020,
La Macro va venir dans une autre feuille appelée "Duplication", me mettre 4 lignes "Médecin" car c'est le nombre maximal que j'aurai à affecter dans l'année 2020.

2ème PARTIE : >> RECHERCHEV

Devant les lignes dupliquées de la feuille "Duplication", j'ai la même structure calendaire que la feuille "BASE", c'est à dire des colonnes avec des dates de l'année 2020.

Dans chaque cellule de ce calendrier, je mets une RECHERCHEV qui va me mettre 8h de travail quand la cellule du calendrier "BASE" comporte un nombre. Exemple :

Feuille "BASE", dans une seule ligne :

J'ai Médecin dans colonne "Métier"

J'ai "2" dans colonne 02/01/2020 (donc 2 médecins affectés au 02/01)

J'ai "4" dans colonne 03/03/2020 (donc 4 médecins affectés au 03/03)

Feuille "Duplication", ce que je dois NORMALEMENT avoir : Ma macro (duplication de lignes), puis ma RECHERCHEV (les 8h affichées à la bonne date) me permettent d'avoir :

Ligne 1 : Medecin | 8h dans la colonne 02/01 et la colonne 03/03

Ligne 2 : Medecin | 8h dans la colonne 02/01 et la colonne 03/03

Ligne 3 : Medecin | 8h dans la colonne 03/03

Ligne 4 : Medecin | 8h dans la colonne 03/03

(parce que j'en ai 4 au max d'affectés en feuille "BASE")

3ème PARTIE : Mon problème

Ce que j'ai aujourd'hui, c'est le résultat suivant :

Ligne 1 : Medecin | 8h dans la colonne 02/01 et 03/03

Ligne 2 : Medecin | 8h dans la colonne 02/01 et 03/03

Ligne 3 : Medecin | 8h dans la colonne 02/01 et 03/03

Ligne 4 : Medecin | 8h dans la colonne 02/01 et 03/03

Je souhaite une formule ou une macro qui peut m'aider à mettre juste 8h là où il faut. Exemple :

J'ai un maximum de 4 Médecins maximum dans un projet.

2 travaillent le 02/01, 4 travaillent le 03/03.

Je veux afficher 8h sur 2 lignes de "Médecin" uniquement le 02/01, puis 8h sur 4 lignes de "Médecin" le 03/03.

J'espère que j'ai pu bien expliquer mon souhait. Aidez-moi svp

Je vous remercie infiniment par avance.

Salut Aydounette,

J'ai voulu me pencher sur ton sujet mais je rencontre quelques difficultés de compréhension.

1/ Tu parles de macro mais ton fichier ne présente pas une seule ligne de code...

2/ Tu parles de colonne métier, fais tu référence à la colonne 'Fonction', c'est ça ?

3/ Tu prends toujours pour exemple 2 médecins le 02/01/2020 et 4 le 03/01/2020. Dans ton tableau, on ne voit jamais ces chiffres en face d'une ligne 'Médecins'...

De ce que j'ai compris, tu aimerais que "8" s'affiche uniquement lorsque le médecin travail ce jour là mais dans ta feuille 'Duplication pr saisie logiciel' j'ai l'impression que ça fait déjà ça...

Je veux bien un peu plus d'explications, ça doit être clair pour toi car tu es dedans mais moi j'ai un peu plus de mal

Bonne journée et bonnes fêtes,

Baboutz

Bonjour Baboutz,

--MESSAGE ANNULE ET REMPLACE L'AUTRE--

Je tiens tout d'abord à vous remercier pour votre réponse, j'avais perdu espoir, mais c'est ma faute car j'ai dû mal m'exprimer !

En effet, je m'excuse vraiment pour ces petites erreurs :

1/ Tu parles de macro mais ton fichier ne présente pas une seule ligne de code...

Je suis désolée, j'ai dû mal l'enregistrer avec mon fichier lors de sa création. Elle est maintenant présente:

6fichier-test.xlsm (57.62 Ko)

2/ Tu parles de colonne métier, fais tu référence à la colonne 'Fonction', c'est ça ?

Exactement, fonction = métier, je l'ai modifié.

3/ Tu prends toujours pour exemple 2 médecins le 02/01/2020 et 4 le 03/01/2020. Dans ton tableau, on ne voit jamais ces chiffres en face d'une ligne 'Médecins'...

J'ai juste donné quelques exemples au hasard pour illustrer mon problème, j'ai dû prendre un exemple plus réel pardon. J'ai bien expliqué sur le fichier avec des commentaires à coté des tableaux. Mon exemple réel :

Je veux donc dans la feuille Duplication :

4 lignes Médecin :

2 lignes uniquement où on retrouve 8h au 04/01

4 lignes où on retrouve 8h au 11/01

Ma Macro fait que j'ai :

4 lignes avec 8h au 04/01 (ce qui est faux, je n'ai que 2)

et 8h au 11/01 (ce qui est bon)

De ce que j'ai compris, tu aimerais que "8" s'affiche uniquement lorsque le médecin travail ce jour là mais dans ta feuille 'Duplication pr saisie logiciel' j'ai l'impression que ça fait déjà ça...

En effet la Macro fait très bien son rôle de dupliquer les lignes en fonction du max, c'est tout. Pour afficher les 8h, j'utilise une RECHERCHEV et pas de MACRO, sauf que ce n'est pas correct. C'est là où s'arrêtent mes limites.

Cette formule RECHERCHEV me duplique des 8h en fonction de la concaténation que j'ai créé, de manière simple et normale. Maintenant, elle n'est pas correct car elle ne répond pas à mon souhait exactement.

Il me faut une formule ou MACRO qui me mettrait des 8h selon le nombre de personne que j'ai par jour de la feuille BASE.

J'ai beaucoup mieux illustré sur mon fichier avec des images, commentaires et couleurs, je pense que vous allez mieux comprendre.

Je vous remercie.

Cordialement,

Aydounette

Salut Aydounette,

Voilà, j'ai l'occasion de revenir vers toi.

En tout cas bravo, c'était très bien expliqué, les images dans le fichier avant/après c'est top, si tout le monde pouvait faire comme toi, cela serait génial !

Voilà la formule que devrait contenir chacune de tes cellules pour corriger ton problème, à mettre en F6 et à étirer :

=SI(NB.SI(INDIRECT("E6:E"& LIGNE());$E6)>RECHERCHEV($E6;Base!$F$2:$AA$22;COLONNE()-4;FAUX);"";SI(RECHERCHEV($E6;Base!$F$2:$AA$22;COLONNE()-4;FAUX);8;0))

Est-ce bien ce dont tu avais besoin ?

Bonne journée et bonnes fêtes de fin d'années,

Baboutz

Bonjour Baboutz,

Vous êtes GÉNIALISSIME ! Je vous remercie, ça marche PARFAITEMENT bien !

Si vous pouvez juste svp m'expliquer le rôle du Indirect et Ligne pour ma propre culture Excelienne si ce n'est pas trop demandé.

Je vous remercie encore une fois.

Cordialement,

Aydounette.

Re Aydounette,

Avec plaisir, merci de ton retour !

J'ai hésité à t'expliquer la formule dans mon post précédent comme certaines personnes s'en fichent et ne remercient pas...

Mais c'est très cool de voir que tu veux apprendre

LIGNE() fonctionne comme COLONNE(), c'est à dire que la fonction te renvoie le numéro de la ligne ou est insérée la formule. En F6, tu obtiendras donc 6. Il est possible d'ajouter le nom de la cellule : LIGNE(F6) te renverra 6 également.


INDIRECT() permet de spécifier une cellule que tu as « coupée ». Normalement si tu veux la valeur de E6, tu tapes simplement E6 mais en « coupant » et avec la fonction Indirect tu peux l'obtenir de cette manière : INDIRECT("E" & LIGNE(F6)). Si tu tapes juste "E" & LIGNE(F6) tu obtiens une erreur ! INDIRECT() te permet également de récupérer des valeurs de cellules dans un autre fichier Excel à condition qu'il soit ouvert.


Si on prend pour exmple la formule en F6,NB.SI(INDIRECT("E6:E"& LIGNE());$E6) te permet donc de compter le nombre de fois que « 1 Consultant » apparaît depuis le début du tableau jusqu'à la ligne actuelle. Dans l'exemple ici, affiche 1.


NB.SI(INDIRECT("E6:E"& LIGNE());$E6)>RECHERCHEV($E6;Base!$F$2:$AA$22;COLONNE()-4;FAUX) regarde si le nombre de fois qu'apparaît la concaténation est supérieur ou non au nombre de personnel travaillant se jour là. Ainsi, si 2 médecins travail le 04/01/2020, à la troisième ligne cette formule va détecter qu'il y a déjà deux lignes de médecins ajoutées avant !

Le reste de la formule dépend de ça, n'affiche rien si c'est supérieur sinon affiche "8".

J'espère avoir été clair sur le fonctionnement de la formule et les fonctions auxquelles elle fait appelle, c'est vrai que ce n'est pas toujours évident à bien expliquer (Et je ne suis pas toujours très bon en explications)

Sur ce, bon appétit et bonne journée,

Baboutz

Baboutz,

C'est super bien expliqué ! Mais bien sûr, Merci beaucoup beaucoup beaucoup !

Vous me sauvez !

Bonne continuation!

Mais de rien Aydounette !

C'est très agréable d'aider des gens polis.

Bonne continuation et au plaisir de se recroiser sur le forum,

Baboutz

Bonjour Baboutz,

Je reviens pour un sujet du même contexte.

J'ai publié ma demande sur un autre sujet, si ça pourrait vous intéresser à m'aider pour améliorer ma Macro de duplication.

https://forum.excel-pratique.com/viewtopic.php?f=2&t=134283

Je vous remercie.

Aydounette.

Rechercher des sujets similaires à "dupliquer valeur fonction nbr affiche"