Copie auto données identiques colonne sur autre feuille

Bonjour.

Après une journée de recherche et d'arrachage de cheveux , je me permet de venir vous demander de l'aide pour un petit tableau EXCEL (ci-joint).

5modele.xlsx (20.11 Ko)

Je voudrais que les travaux effectués soit répartis automatiquement dans la feuille de chaque salarié concerné. J'ai réussi à coller la première ligne uniquement mais cela me copie la même ligne quand je colle la formule en dessous.

Si possible sans utiliser de macros.

A vos claviers et merci beaucoup d'avance de votre aide.

Bonne journée à tous.

Bonjour,

je ne connais pas trop la commande INDEX (EQUIV... mais visiblement, cette formule ne recherche que la 1ere fois où la valeur recherchée (=le prénom de ton salarié)...

C'est pour ça que, telle quelle, à chaque fois la même tâche remonte...

OK, ca n'avance pas le problème... mais si ca peut aider dans la recherche (en attendant une solution... )

Merci pour la réponse gigi.

Oui j'attends une réponse des pros vu mon niveau sur Excel

Bonjour le fil, bonjour le forum,

Une proposition en pièce jointe avec le code ci-dessous :

Sub Macro1()
Dim OT As Worksheet 'déclare la variable OT (Onglet Travaux)
Dim OS As Worksheet 'déclare la variable OS (Onglet Salarié)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim TS As Variant 'déclare la variable TS (Tableau des Salariés)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Application.ScreenUpdating = False 'masque les message Excel
Application.DisplayAlerts = False 'masque les rafraîchissements d'écran
Set OT = Worksheets("TRAVAUX") 'définit l'onglet OT
For Each OS In Worksheets 'boucle sur tous les onglets du classeur
    If OS.Name <> OT.Name Then OS.Delete 'si le nom de l'onglet n'est pas le nom de l'onglet OT, supprime l'onglet
Next OS 'prochain onglet de la boucle
TV = OT.Range("A1").CurrentRegion 'définit le tableau des valeur TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 3)) = "" 'alimente le dictionnaire D avec les données de la colonne 3 du tableau des valeurs TV
Next I 'prochaine ligne de la boucle
TS = D.keys 'récupère dans TS la liste des éléments du dictionnaire D sans doublon
For I = 0 To UBound(TS) 'boucle 1 sur tous les éléments du tableau TS
    Worksheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet vierge en derniere position
    ActiveSheet.Name = TS(I) 'renome l'onglet
    Set OS = ActiveSheet 'définit l'onglet su salarié OS
    OS.Columns(1).ColumnWidth = 65 'dimensionne la colonne 1 de l'onglet OS
    OS.Columns(2).ColumnWidth = 34.86 'dimensionne la colonne 2 de l'onglet OS
    OS.Range("A1").Value = "TRAVAUX À EFFECTUER " & UCase(TS(I)) 'texte en A1
    OS.Range("B1").Value = "NOM DU CHANTIER/CLIENT" 'texte en B1
    For J = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes J du tableau des valeurs TV (en partant de la seconde)
        If TV(J, 3) = TS(I) Then 'condition : si la donnée ligne J colonne 3 de TV est égale au salarie TS(I)
            Set DEST = OS.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première ligne vide de la colonne A de l'onglet OS)
            DEST.Value = TV(J, 2) 'renvoie la ligne de la tâche a effectuer dans DEST
            DEST.Offset(0, 1).Value = OT.Range("A" & J).MergeArea.Cells(1) 'renvoie le nom du chantier/client dans la cellule adjacente en colonne B
        End If 'fin de la condition
    Next J 'prochaine ligne de la boucle 2
Next I 'prochain salarié du tableau des salariés TS
OT.Activate 'active l'onglet OT
Application.DisplayAlerts = True 'affiche les message Excel
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

Les onglets des salariés sont d'abord supprimés puis recréés et remplis...

25zack-ep-v01.xlsm (32.53 Ko)

je ne m'attendais pas à quelque chose d'aussi élaboré mais cela fonctionne mieux que prévu.

Si je modifie / rajoute des lignes dans la feuille "TRAVAUX", et rajoute des feuilles (donc des noms de salariés), ça fonctionnera toujours ? Est-ce que je peux rajouter des liste déroulante de choix pour choisir le salarié dans la feuille "TRAVAUX" ?

Je peux voir où le code dans le fichier Excel ? Je n'y connais absolument rien

En tout cas trop fort, merci mille fois

Re,

Le code s'adaptera que tu rajoutes des salariés, des chantiers ou des tâches.

Les onglets des salariés sont d'abord supprimés puis recréés.

Ne penses-tu pas qu'il aurait été plus facile de tester avant de poser ces questions ?!...

Pas compris ton histoire de listes déroulantes. Je ne pense pas que ce soit utiles puisque, encore une fois, tous les onglets de salariés sont supprimés puis recréés.

Pour voir le code :

[Alt]+[F11] pour ouvrir l'éditeur visual basic (VBE)

• Dans le cadre en haut à gauche double-clique sur Module 1

• Le code se trouve dans le grand cadre à droite...

Bonjour.

Je re-ouvre le message.

Je voudrais ajouter la colonne JOUR/DATE qui se transfère automatiquement dans les différentes feuilles.

3modele-v3.xlsm (31.32 Ko)

J'ai bien essayé de modifier mais je n'y arrive pas

Merci.

Re,

Plus le temps ce matin de regarder, j'essaierai ce week-end...

Ok merci encore à toi

Bonjour Zack, bonjour le forum,

En pièce jointe la version 02...

1zack-ep-v02.xlsm (28.47 Ko)

De retour et merci pour la mise à jour du tableau, ça marche nickel

Rechercher des sujets similaires à "copie auto donnees identiques colonne feuille"