Répéter une donnée avec recherchev sur plusieurs cellules
Bonjour à tous,
Je suis toujours en train de peaufiner et améliorer un tableau, mais je n'arrive pas à obtenir ce que je veux.
Voici mon idée : Je souhaite écraser les valeurs de la colonne C de l'onglet "Edition planning" (qui ne me sont pas utiles), en ajoutant une recherchev qui viendra reporter la valeur de la colonne 2 de mon tableau de correspondance "Matricule", onglet "Correspondances".
En gros, en colonne C ligne 1 // ligne 2 // ligne 3 de chaque salarié je veux faire apparaitre le matricule du salarié. (Les matricules de nos salariés commence par un chiffre différent pour chaque société que nous gérons, avec des calculs de variables différents donc des tableaux de calculs différents. Avec cette donnée supplémentaire je pourrais donc filtrer les salariés de la société que je veux, pour ensuite copier coller les copier coller dans mon tableau de calcul de variables).
J'ai tenté de le faire moi même mais j'ai encore du travail pour arriver à tout comprendre du codage.
Je vous mets en pièce jointe le tableau avec ma proposition, sachant que j'ai déjà les 2 premières parties de la macro qui fonctionne parfaitement et sur lesquels je ne voudrais pas toucher (merci à ce forum et surtout Ergotamine qui m'a apporté la solution des 2 premières parties !) .
En vous remerciant par avance pour votre aide.
CordialementBonjour Dums,
Je ne suis pas sûr d'avoir tout saisi... la Colonne C étant intitulé "Serv" (Service ? )... j'y ai mis quand même le matricule.
A tester ! :)
Bonjour,
Pour le coup la formule je l'avais bien, mais je voudrai l'intégrer dans ma macro pour qu'elle soit automatique et se répète sur les 3 lignes de chaque salarié.
L'idée est bien d'écraser les valeurs qu'il y a dans la colonne C et intitulé "Serv" (dans la réalité c'est bien le nom des services qui apparait, mais n'ayant pas besoin de cette donnée, je peux l'écraser). Je n'ai pas précisé, mais ce premier tableau est un export fait d'un logiciel de gestion des temps, sur lequel je n'ai pas la main. Je viendrai le copier coller chaque mois pour fusionner automatiquement 2 tableaux. Ce dernier sera ensuite copié collé dans un autre tableau sur lequel j'ai des calculs avec formules automatiques.
Cordialement
Bonjour,
Un test en ayant modifié mon propre code. Chez moi tout me semble OK :
Sub MAJ()
Dim I%, LR%, LC%, LR_2%, LC_2%
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Worksheets("Edition temps")
LR_2 = .Cells(.Rows.Count, 2).End(xlUp).Row 'Dernière ligne tableau basée sur colonne 2
LC_2 = .Cells(12, .Columns.Count).End(xlToLeft).Column 'Dernière colonne tableau basée sur ligne 12
.Range(.Cells(14, 4), .Cells(LR_2, LC_2)).Replace "h", ":" 'Converti h en heure journée
.Cells(LR_2, LC_2).Offset(0, 1) = 24 'Place 24 dans une cellule vide pour h/j
.Cells(LR_2, LC_2).Offset(0, 1).Copy 'Copie 24
.Range(.Cells(14, 4), .Cells(LR_2, LC_2)).PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply 'Multiplie h journée par 24 pour h décimales
.Cells(LR_2, LC_2).Offset(0, 1).ClearContents 'Supprime 24
End With
With ActiveSheet
LR = .Cells(.Rows.Count, 2).End(xlUp).Row - 1 'Dernière ligne tableau basée sur colonne 2
LC = .Cells(12, .Columns.Count).End(xlToLeft).Column 'Dernière colonne tableau basée sur ligne 12
.Cells(14, LC + 2).Formula = "=IF(D14="""","""",VLOOKUP(D14,COR,2,FALSE))" 'Formule 1ère ligne salarié à droite de dernière colonne avant dates
.Cells(15, LC + 2).Formula = "=IF(D14="""","""",VLOOKUP(D14,COR,3,FALSE))" 'Formule 2ème ligne salarié à droite de dernière colonne avant dates
.Cells(16, LC + 2).Formula = "=VLOOKUP($A14, 'Edition temps'!" & Worksheets("Edition temps").[A12].CurrentRegion.Address & ", COLUMN(D14), FALSE)" 'Formule 3ème ligne salarié à droite de dernière colonne
For I = 14 To 16
.Cells(I, LC + 1).Formula = "=VLOOKUP($A14, 'Correspondances'!" & Worksheets("Correspondances").[F1].CurrentRegion.Address & ", 2, FALSE)"
Next I
.Range(.Cells(14, LC + 1), .Cells(16, LC + 1)).Copy
.Range(.Cells(14, LC + 1), .Cells(LR + 2, LC + 1)).PasteSpecial xlPasteFormulas
.Range(.Cells(14, LC + 2), .Cells(16, LC + 2)).Copy 'Copie les 3 formules
.Range(.Cells(14, LC + 2), .Cells(LR + 2, LC * 2 - 2)).PasteSpecial xlPasteFormulas 'Etend formules nombre lignes x nombre colonnes
.Range(.Cells(14, LC + 1), .Cells(LR + 2, LC * 2 - 2)).Copy 'Copie plage de formules
.Cells(14, 3).PasteSpecial xlPasteValues 'Colle en valeur sur tableau initial
.Range(.Cells(14, LC + 1), .Cells(LR + 2, LC * 2 - 2)).ClearContents 'Nettoie plage de formules
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End SubCdlt,
Bonjour,
Merci beaucoup. J'ai fait mes tests et tout fonctionne parfaitement.
Cordialement