Autofil avec ligne variable
Bonjour, désolé de vous demander mais je n'arrive pas à produire un code correct. :
Je m'explique, je cherche à automatiser un fichier pour mes collaborateurs afin de simplifiez la MAJ de celui-ci.Range("A1").Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("PDL sortis de la LTE").Select
Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range("B1").End(xlDown).Offset(1, 0).FormulaR1C1 = "=TODAY()"
J'ai besoins que la date du jour (colonne B) soit indiqué à côté de chaque nouveau numéro dans la colonne A (date de sortie des numéros)
en gros : numéro 250xxxxxx date de sortie 24/04/2023.
J'ai fait des recherches sur le forum mais je suis pas doué avec les variables...
Bonjour Leolio30,
je pense avoir mal compris ce que vous souhaitez exactement car la solution est évidente.
Si je résume la macro :
- vous avez copié (après avoir appliqué un filtre) depuis la feuille "Traitement C", la colonne A 'sauf la ligne 1)
vers la feuille "PDL sortis de la LTE" en colonne A ligne 2 (mode valeurs)
donc la liste des n° PRM
- vous souhaitez, en colonne B, au regard de chaque n° collé avec une concaténation du n° (en colonne A) la date du jour,
Si vous mettez la date du jour en formule, à chaque recalcul de la feuille, vous aurez la date du jour et non celle du traitement.
Je suppose que c'est la date du traitement qui vous intéresse.
Voici le code dans ce cas à récupérer (ici je n'ai mis que le strict nécessaire, c'est à dire après le filtrage). Je l'ai bien sûr testé avec mon jeu d'essai
Sub MaMacro()
Dim DerLigne As Integer
Sheets("Traitement C").Select
Range("A1").Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("PDL sortis de la LTE").Select
'Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range("A2").PasteSpecial Paste:=xlPasteValues
DerLigne = ActiveSheet.Cells(Rows.Count, Range("A1").Column).End(xlUp).Row ' dernier n° en colonne A
Range("B2") = Format(Now(), "dd/mm/yyyy")
Range("B2").Copy
Range("B3:B" & DerLigne).Select
ActiveSheet.Paste
End SubMerci pour la macro mais ce n’est pas tout à fait ce que je recherche.
Je voudrais effectivement que chaque nouvelle ligne soit marquée avec la date à laquelle elle a été copié dans la feuille PDL sortie de la LTE tout en conservant les lignes précédentes.
Je comptais faire une formule aujourd’hui et copier-coller en valeur pour les figer.
je vais continuer à bosser avec ton bout de code j'arriverais peut-être à quelque chose ;)
Bon j'ai fait autrement en mode bête mais ca amrche :
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""",TODAY(),RC[-1])"
derniere_ligne = Range("A1").End(xlDown).Row
Range("C2").AutoFill Destination:=Range("C2:C" & derniere_ligne), Type:=xlFillDefault
Columns("C:C").Copy
Columns("B:B").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("C:C").Delete
Application.CutCopyMode = FalseMerci mais si un autre code existe je suis preneur pour ma culture vba :)
Bonjour,
avec ces indications, on comprend mieux, d'où l'intérêt d'être le plus précis possible lorsqu'on poste un sujet.
Le code pourrait devenir celui-ci (non testé)
j'ai conservé en commentaires les anciennes lignes.
j'ai créé une nouvelle variable DerLigne2
Nos codes se sont croisés - dernière correction !!!
Sub MaMacro()
Dim DerLigne As Integer
Dim DerLigne2 As Integer
Sheets("Traitement C").Select
Range("A1").Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("PDL sortis de la LTE").Select
'Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
'Range("A2").PasteSpecial Paste:=xlPasteValues
DerLigne = ActiveSheet.Cells(Rows.Count, Range("A1").Column).End(xlUp).Row ' dernier n° en colonne A avant insertion
Range("A" & derligne+1).PasteSpecial Paste:=xlPasteValues
DerLigne2 = ActiveSheet.Cells(Rows.Count, Range("A1").Column).End(xlUp).Row ' dernier n° en colonne A après insertion
Range("B" & DerLigne+1) = Format(Now(), "dd/mm/yyyy")
Range("B" & DerLigne+1).Copy
Range("B" & DerLigne+1 &":B" & DerLigne2).Select
ActiveSheet.Paste
End Sub