XL 2016 Formule ou macro ? Besoin de votre expertise !

calvinethobbes

XLDnaute Nouveau
Bonjour à tous,
J'ai besoin de votre aide concernant une cellule spécifique.
Vous trouverez mon "fichier test" ci-contre.
Celui-ci contient 6 feuilles. Dans ma 1ère feuille (Calendrier A), j'aimerais introduire dans chacune des cellules B3, C3, D3 etc. une formule si cela est possible ou alors une macro qui permet la chose suivante :
1) Aller chercher dans les feuilles "liste 1", "liste 2" les dates du 09/09 qui sont inscrites sous la forme 09/09 M ou 09/09 AM (pour matin et après midi).
Si la "formule" trouve l'une de ces dates, qu'elle puisse inscrire directement le nom situé sur la ligne correspondante : Exemple : elle trouve dans "liste 1" la date 09/09 M en D5, donc elle inscrit le nom A qui correspond qui est en B5 dans la cellule B3 de "Calendrier A". Mais attention, si le nom est plusieurs fois le même, il ne faut inscrire qu'une seule fois celui-ci. Cela signifie que la "formule" doit alors ignorer le nom A qui ressort en B6 et B7 de la feuille "Liste 1".

2) Même principe mais cette fois dans les cellules F3, G3...du "Calendrier A". J'aimerais que la cellule aille rechercher dans la feuille "Formations 09_2019" afin d'y rechercher les dates correspondantes, soit ici 09/09/2019 M ou 09/09/2019 AM et d'y inscrire les noms inscrits en C2, C3 ou C4 ou CX, comme précédemment, en ignorant les noms qui reviennent une deuxième fois.

J'espère m'être bien fait comprendre...o_O
N'hésitez pas à me redemander si je n'ai pas été très clair...
Je précise que je ne suis pas un fin connaisseur d'Excel mais que je bidouille un peu et que j'aime bien comprendre ce que je fais, donc je suis preneur de toute explication rationnelle sur ce que je dois faire pour y réussir et surtout pour savoir si cela est possible sans passer deux nuits à coder tout cela ;)

Merci pour votre aide !
Bien cordialement.
 

Pièces jointes

  • Fichier test.xlsx
    53.4 KB · Affichages: 12

calvinethobbes

XLDnaute Nouveau
Bonjour calvinethobbes, bonjour tout le monde,

Ton fichier avec une fonction personnalisée pour Liste1 et Liste2.
En espérant avoir répondu à ta demande.

Martial
Bonjour Martial,
Merci beaucoup pour ta réponse.
J'ai vu que c'était une macro mais je n'arrive pas à la comprendre, n'ayant aucune compétence de codage.
Ton fichier répond parfaitement à ma problématique et je t'en remercie. J'ai réussi à copier les formules et à les adapter pour les autres cellules du tableau.
Peux-tu me confirmer que cela fonctionnera en copiant collant la macro telle quelle dans mon fichier original ?
Sachant qu'il y a plus de feuilles et qu'elles portent des noms différents...Je crois qu'il faudra que je change des termes dans cette macro.
Pourrais-tu m'indiquer les termes qui varieront en fonction du nom des feuilles ?
Merci encore, il ne reste plus que ma deuxième demande désormais, je ne sais pas si elle est faisable...

A bientôt !

Calvinethobbes
 

Yaloo

XLDnaute Barbatruc
Bonjour tout le monde,

C'est un code comme une macro, mais on fait une fonction personnalisée (formule dans ta feuille de calcul).
Si tu copies cette fonction dans un autre classeur, assure toi qu'elle se trouve dans un module.
Dans le fichier ci-joint je t'ai mis des commentaires pour t'aider à comprendre.
Les noms des feuilles ne changera rien puisque tu les rentres dans la formule. Par contre, pour le nombre, il te faudra une formule par feuille. On peut aussi mettre plusieurs feuilles dans la fonction.

Je n'ai pas eu le temps pour regarder à ton 2ème point, j'y regarde ce soir si j'ai le temps.

A+

Martial
 

Pièces jointes

  • Fichier test (1).xlsm
    63.5 KB · Affichages: 5

calvinethobbes

XLDnaute Nouveau
Hello,

Voici le fichier avec les bons noms de feuille et le point N° 2 réalisé.

Martial

Hé ben dis donc, quelle réactivité !

Tu es au taquet, je te remercie beaucoup !
Je vais essayer de reporter tout cela dans mon fichier original, je te tiendrai au courant de ma réussite ou non. Quand je pense que tu fais en qq secondes...:eek:
C'est beau la compétence ! :)

Bonne soirée !

Edit : Je viens de voir toutes tes explications dans le VBA...Je vais regarder tout ça de près, pas facile quand tu es novice mais cela m'a l'air assez complet !
Merci, vraiment !
 
Dernière édition:

calvinethobbes

XLDnaute Nouveau
Bonsoir à tous, bonsoir Martial,

Bon...Je galère o_O
J'ai essayé de bien lire tes indications dans le VBA mais c'est pas loin d'être du chinois pour moi...
Dans mon fichier original, après avoir rentré les formules et la macro telle quelle, cela m'affiche #NOM?

Il y a certainement des données qui correspondaient à mon module test qui ne correspondent plus mais je n'arrive pas à analyser lesquelles.
Peut-être faudrait-il que je te fournisse un fichier test plus proche de l'original ? :rolleyes:

J'ai par exemple changé le code n = Sheets(z.Worksheet.Name).Cells(Split(c.Address, "$")(2), 2)
en n = Sheets(z.Worksheet.Name).Cells(Split(c.Address, "$")(2), 4)
car c'est la 4ème colonne qui est concernée dans mon fichier original pour y trouver le nom, mais pour le reste je ne vois pas ce que je dois modifier.

Dis moi ce que tu préfères que je fasse ou si cela te semble facilement récupérable...

Merci, bonne soirée !
 

calvinethobbes

XLDnaute Nouveau
Bonjour,
En effet, il faudrait peut être ton fichier original où tu changes tes données.
Il doit y a voir autre chose que la colonne du nom.
Où as-tu mis le code de la fonction ? Dans un module à part ?
A te lire
Martial

Bonjour,
J'ai inséré le code de la fonction dans un module (module 1) dans le VBA, comme sur ton fichier test. C'est donc bien un module à part.
Je retravaille le fichier test pour te le transmettre, le truc c'est qu'il y a une tonne de feuilles...
Je vais voir pour te renvoyer cela dès que possible.
Merci, bonne journée !
 

calvinethobbes

XLDnaute Nouveau
Bonjour,
En effet, il faudrait peut être ton fichier original où tu changes tes données.
Il doit y a voir autre chose que la colonne du nom.
Où as-tu mis le code de la fonction ? Dans un module à part ?
A te lire
Martial

Bonjour à tous, Bonjour Martial,

Ouf ! Désolé pour le délai, j'ai eu des contraintes qui m'ont empêché de traiter le fichier.
Voici donc le fichier tel qu'il est structuré dans mon fichier original mais anonymisé complètement.
Mon problème est donc dans la feuille intitulée "Calendrier 1" qui m'affiche #NOM? dans toutes les cases. J'ai copié collé toutes les formules qui sont normalement bien formulées si j'ai bien compris ta formule de base.
Concernant les feuilles formations, j'aimerais que la colonne E s'affiche dans ma colonne "formations TS" du calendrier 1 lorsqu'il va chercher dans les feuilles correspondantes.
J'espère que tout est clair, et je te remercie encore pour ton aide précieuse !
 

Pièces jointes

  • Fichier test 2 complet macro.xlsm
    276.7 KB · Affichages: 3

Yaloo

XLDnaute Barbatruc
Bonsoir,

Dans le fichier de ton post 11, il n'y a pas la fonction personnalisée dans Module1, je l'ai mise et ça fonctionne.
J'ai juste rajouté une ligne de code afin de ne rien mettre si la donnée n'est pas trouvée.
Pour la formation, il suffisait juste de mettre 5 (colonne E) au lieu de 4 (colonne D).

Bonne soirée

Martial
 

Pièces jointes

  • Fichier test 2 complet macro.xlsm
    282.3 KB · Affichages: 6

calvinethobbes

XLDnaute Nouveau
Bonsoir,

Dans le fichier de ton post 11, il n'y a pas la fonction personnalisée dans Module1, je l'ai mise et ça fonctionne.
J'ai juste rajouté une ligne de code afin de ne rien mettre si la donnée n'est pas trouvée.
Pour la formation, il suffisait juste de mettre 5 (colonne E) au lieu de 4 (colonne D).

Bonne soirée

Martial

Bonjour,
C'est parfait, tout fonctionne ! Merci beaucoup !!
 

Discussions similaires