Remplir un sous tableau automatiquement

Bonjour à toute la communauté !

Je suis en train de réaliser un tableau de planing pour mon équipe. Et je ne trouve pas la fonction suivante :

J'ai deux tableaux : un qui référence par date, des hotels avec les employées qui y travail jour par jour.

Le deuxième est un tableau avec tout mes employés qui référence leur lieu de travail par jour.

J'ai deja crée des listes dans le premier tableau pour éviter de taper chaque nom mais maintenant je cherche la fonction pour remplir automatiquement le deuxième tableau en fonction de ce que je met dans le premier.

Je vous joint mon exemple pour plus de compréhension.

Si quelqu'un connais la marche a suivre je lui en serais éternellement reconnaissant ...

16planing-forum.xlsx (10.54 Ko)

Bonjour,

Avec une combinaison de formules on peut s'en sortir, une fonction décaler qui part de la colonne C et renvoie la colonne dans laquelle on va chercher le nom de l'employé, une fonction index avec encore une fonction EQUIV pour renvoyer le nom de l'hôtel dans la ligne correspondante.

En revanche j'ai enlevé la fusion des cellules, parce que les cellules fusionnées, à part la première, sont vides.

Je te laisse voir le résultat :

Remarque: on peut simplifier la formule en enlever la fonction décaler et la fonction equiv qui est dedans.

Magnifique !!!!!

C'est pile ce que je veux !

Par contre je serais incapable de reconstruire la fonction avec mon niveau.

Mais je copie !!!!

Un grand grand grand merci !!!!

Rebonjour,

En fait c'est surtout les fonctions EQUIV et INDEX qu'il faut apprendre à utiliser, la fonction DECALER est bien pratique aussi :

DECALER : on renseigne une plage de cellules (A1:B2) et on indique de combien de lignes et colonnes on veut déplacer cette plage, de 1 ligne ça donne : A2:B3, de 1 colonne : B1:C2 etc...

EQUIV et INDEX sont un peu complémentaires, ce sont des superbes fonctions de recherche mais qui donnent plus d'option qu'une fonction RECHERCHEV ou RECHERCHEH, dans EQUIV tu donnes une plage de données, tu renseignes la valeur que tu cherches dedans, et elle te dit "je trouve cette donnée à la ligne 2 de ta plage!"

INDEX elle va chercher la valeur dans une plage de données à une ligne et colonne que tu renseignes.

Le reste c'est de l'expérience en terme d'écriture de fonctions pour que tout ça s'alimente.

Ah et une fonction SIERREUR pour ne rien afficher si l'employé ne travaille pas le jour où on le cherche, parce qu'on a pas envie de voir un gros message d'erreur alors qu'il ne travaille juste pas

Ok super !

Je vais essayer de recréer la fonction avec tes conseils !

Effectivement c'est une grande expérience le travail sur Excel !

En tout cas je me répète : Merci beaucoup !

Pas de soucis, on est là pour ça

Bonne chance pour recréer la formule, tu peux utiliser l'évaluation de formules dans l'onglet formules ou bien le bouton Fx à gauche de la barre de saisie de formule pour t'aider, c'est très pratique pour faire ce genre de choses, j'utilise très souvent ces deux fonctionnalités

Bonjour Ausecour !

Je viens de passer le temps d’un train entre paris et Annecy (soit près de 4h) a essayer de comprendre la formule, et surtout l’adapter à mon tableau définitif.

Résultat : un semblant de formule qui marche une fois et accepte pas les changements.

Donc je suis encore en train de déprimer !

Pourrais je abuser de ton expérience en la matière et m’adapter la formule à mon nouveau tableau ?

Je join le nouveau tableau.

La particularité est qu’il y a beaucoup plus de ligne.

J’ai pas encore édité les listes déroulantes mais je fais ça demain. (Ça, j’arrive à le faire)

En te remerciant d’avance

Bonjour,

Comme j'avais dis que je pouvais simplifier la formule, ce qui est dit est fait, plus de formule décaler, juste une fonction sierreur, index, et equiv.

J'ai eu un soucis au départ car les noms de tes employés étaient erronés, tu peux peut-être avoir encore ce genre de soucis par l'avenir, donc je vais t'y expliquer, J'avais mis le nom d'un employé pour le Bassano, mais la formule ne renvoyait rien pour l'employé à la fameuse date, le soucis c'est que d'un côté tu avais : "prénom nom " et de l'autre : "prénom nom"

La différence c'est un espace qui fait que la formule ne trouve pas, c'est une formule de correspondance exacte, et pour elle, elle n'a pas la même chose à gauche qu'à droite

Pour corriger ce soucis j'ai rajouté une colonne le temps de corriger ça sur la feuille salariés : Supprespace (fonction enlevant les espaces ne servant à rien, comme celui à la fin, mais n'enlève pas celui entre le prénom et le nom).

Ensuite j'ai copié collé les valeurs que donnait la formule sur les différentes lignes, et j'ai enlevé la colonne avec la formule.

Je te laisse voir le résultat, si tu bloques encore sur les formules, reviens vers moi

Tout simplement magnifique !

Un grand grand merci.

Effectivement je comprend la formule la. La fonction décaler de la dernière fois m'embrouillait.

Petite question, comment as tu fais pour mettre la meme formule dans chaque case sans modifier les plages de reference tout en modifiant le jour ?

Idem : très utile la fonction supprespace mais comment as tu fais pour rentrer la formule a l'ensemble des noms ? J'imagine que tu n'as pas rentré chaque ligne ?

Petite question d'un autre ordre : J'aimerais comptabiliser chaque résultat dans le tableau des employés par ligne. Du style l'employé a travaillé 5 jours. J'ai essayé de faire nb.si mais il me marque 31 car dans chaque case se trouve une formule qu'il considère comme une donnée.

En te remerciant encore mille fois !

Bonsoir,

Je vais répondre point par point à tes questions

"Petite question, comment as tu fais pour mettre la meme formule dans chaque case sans modifier les plages de reference tout en modifiant le jour ?"

En fait je n'ai pas fixé la colonne où j'allais chercher le nom de l'employé, du coup au fur et à mesure que tu changes de jour, de l'autre côté ça décale la colonne, ça remplace la fonction décaler du coup quand tu passes au jour suivant en changeant de colonne, de l'autre côté ça change de colonne aussi

"Idem : très utile la fonction supprespace mais comment as tu fais pour rentrer la formule a l'ensemble des noms ? J'imagine que tu n'as pas rentré chaque ligne ?"

En fait j'ai mis la fonction supprespace sur la première ligne avec le nom de la première ligne, puis j'ai copié collé la formule pour qu'elle se fasse sur chaque ligne, et après j'ai copié les résultats

"Petite question d'un autre ordre : J'aimerais comptabiliser chaque résultat dans le tableau des employés par ligne. Du style l'employé a travaillé 5 jours. J'ai essayé de faire nb.si mais il me marque 31 car dans chaque case se trouve une formule qu'il considère comme une donnée."

J'ai utilisé la fonction NB.SI aussi, mais... d'une façon un peu spéciale, je compte le nombre de cellules qui contiennent au moins 2 caractères :

=NB.SI(C2:AF2;"?*")

"?*" signifie ? = caractère * = chaîne de caractères

En mettant ça tu prends toutes les cellules qui ont un caractère suivi d'au moins un autre caractère, si on avait voulu minimum 3 caractères, on aurait fait : "??*"

Voilà le résultat :

Super merci pour ces précieuses info !

Je commence a mieux comprendre Excel !

J'ai encore deux petites questions :

- J'ai réalisé les listes déroulantes mais je souhaite avoir la possibilité d'entrer une nouveau nom qui n'est pas dans la liste.

J'ai alors désactivé les alertes de la liste. Jusque la, pas de pb. mais je souhaite que ce nouveau nom apparaisse en orange ou une autre couleur. Je me suis dis qu'il fallait mettre une mise en forme conditionnelle avec comme donnée une erreur. Sauf que si je veux entrer une nouvelle donnée, je suis obligé d'enlever les messages d'erreurs.

As tu une autre solution ?

- Je souhaite faire une macro pour créer un nouvel employé. J'ai commencé ma nouvelle macro mais je ne sais pas comment faire pour entrer le nouveau nom dans la macro. Je peux pas le faire après la macro car j'aimerais automatiser le classement par ordre alphabétique dans la meme macro.

Penses tu qu'il y a une possibilité d'entrer le nom d'une personne a chaque fois différente dans la macro ?

En te remerciant encore mille fois !

Bonjour,

Pour ton problème de liste je crains que tu ne doives passer par de la macro évènementielle ou alors désactiver ton message d'erreur et juste laisser une mise en forme conditionnelle peut-être...

Pour ta deuxième question, tu veux créer un nouvel employé, c'est juste son nom que tu veux ajouter c'est bien ça? Tu peux faire de la saisie par macro via des formulaires ou via des Inputbox (plus simple), c'est toi qui vois ensuite ce qu'il te faut en fonction de tes besoin

Re-Bonjour

Pour le problème des liste, je vais surement enlever mon message d'erreur et passer par la mise en forme conditionnelle mais je n'arrive pas a faire une mise en forme conditionnelle avec comme donnée que le nom que je viens de rentrer n'appartient pas a la liste du tableau en feuille 3.

Pour le nouvel employé oui c'est juste le nom que je veux entrer. Par contre les formulaires et "inputbox" je ne sais pas ce que c'est

Bonjour,

Tu peux faire un test du type sierreur(recherchev(mavaleur,labasededonnées,lapremièrecolonne,faux),"ERREUR") = "ERREUR") Si ça te renvoie ERREUR, c'est que la formule n'a pas trouvé la valeur dans ta liste

Tu peux afficher des popus (messages) via vba, sur des commandes msgbox("test"), sauf qu'il y a d'autres façons de communiquer avec l'utilisateur, tu peux passer par des formulaires feuille (avec des listes, des zones de texte, des boutons) ou par des fenêtres (avec les même choses à l'intérieur que pour les formulaires feuille), ou plus facilement, une Inputbox, autrement une boite d'entrée, c'est un popup qui t'affiche quelque chose et qui te demande de taper une valeur, puis tu valides, elle disparait, et retourne ce que tu as tapé dans ton code, exemple :

Sub test()
nombre = InputBox("Rentre un nombre, je le multiplierai par 2.")
MsgBox ("Voici le résultat: " & nombre * 2)
End Sub

Je te laisse lire tout ça

Mais oui !!!! c'est ca que je veux !!!!

Super !!!! un grand merci ... je vais faire des essais avec ca !

Alors Ca y est j'ai creer ma premiere macro ! hallelujah !

Par contre je n'arrive pas a sélectionner une region qui augmente en fonction du nombre d'entrée.

J'aimerais sélectionner toute les lignes (d'une partie du tableau) pour les classer par ordre alphabétique. Mais je ne trouve pas la fonction vu que cela depend du nombre d'entrée dans le tableau.

En PJ le fichier.

En te remerciant

Bonjour,

J'ai plutôt l'impression que c'est l'enregistreur de macro qui a fait ton programme vu tous les select et autres choses que seul lui fait

Je te retourne le code corrigé dans ton ModuleÊ1 bizarre

Tu pourras tester

Ha oui évidement c'est l'enregistreur ... je suis pas capable de faire des lignes de code ... je suis un jeune padawan, ne l'oublions pas !

Peux tu m'envoyer le code car j'arrive pas a télécharger le fichier ... bizarre ...

En te remerciant ...

Voici le nouveau code

Sub Nouvel_employe_CDICDD()
der_lig = Range("A4").End(xlDown).Row - 2
Rows(5).Insert Shift:=xlDown, CopyOrigin:=xlfromabove
Range("A5") = InputBox("Saisir le nom du nouvel employé.")

ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range _
        ("A4:A" & der_lig + 1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("PLANNING SALARIES").Sort
        .SetRange Range("A4:AI" & der_lig + 1)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Evidement comme d'habitude c'est parfait !

Petite question d'ordre personnel, il faut avoir fait des etudes dans le domaine pour maitriser autant Excel ? Car je suis quand meme impressionné !

Bon par contre j'ai voulu faire la meme chose pour les intérimaires et la le problème c'est que le code doit tout le temps se décaler en fonction des entrées du tableau d'au dessus.

D'après toi je devrais creer une autre feuille pour les intérimaires ou il y a une fonction dans les macro pour prendre en consideration la ligne en dessous "interim" ?

Rechercher des sujets similaires à "remplir tableau automatiquement"