Je suis un novice Excel et apprécierais l'aide avec une macro qui fait ce qui suit.
Il y a un total de 58 gènes (colonne A) avec 2 entrées pour chaque gène. L'image ne montre que 4 gènes.
Lors de l'exécution de la macro (via une touche de raccourci), l'utilisateur sera invité à entrer un numéro d'échantillon (Sample1 dans cet exemple), puis la ligne de chaque gène sera copiée-collée dans leurs feuilles respectives (déjà créées). Les gènes portent tous un nom unique. Dans chacune des feuilles de gènes, le numéro de l'échantillon doit être renseigné dans la colonne A.
Je ne peux pas poster plus de 2 captures d'écran. Les feuilles pour les autres gènes doivent contenir les 2 rangées de ce gène avec "Sample1" dans la colonne A.
Une fois que la macro a fini de copier les lignes dans les 58 feuilles (pour les 58 gènes), elle doit revenir à la feuille d’entrée et supprimer les données précédemment collées. L'utilisateur doit être autorisé à coller les données du prochain échantillon, exécuter la macro, entrer le numéro de l'échantillon à l'invite, et les données géniques de cet échantillon sont copiées dans les deux lignes suivantes de leurs feuilles de gènes respectives.
Il existe des données pour des milliers d’échantillons à archiver, et j’espère obtenir une macro capable de le faire.
Edit: Le code maintenant (merci à Mrig) est le suivant:
Sub Macro1()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Dim lastRow As Long, i As Long, currLastRow
Dim ws As Worksheet, currWS As Worksheet
Dim SampleID As String
SampleIDform.Show
Set ws = ThisWorkbook.Sheets("Input")
lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To ThisWorkbook.Worksheets.Count
Set currWS = ThisWorkbook.Sheets(i)
currLastRow = currWS.Cells(Rows.Count, "A").End(xlUp).Row + 1
With ws.Range("A1", "D" & lastRow)
.AutoFilter Field:=1, Criteria1:=currWS.Name
.Offset(1, 0).Copy currWS.Range("A" & currLastRow)
.AutoFilter
Range("A" & currLastRow).Value = SampleID
End With
Next i
ws.Range("A2", "D" & lastRow).ClearContents
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Private Sub OkButton_Click()
SampleID = txtSampleID.Value
Unload Me
End Sub
J'ai ajouté la ligne Range("A" & currLastRow).Value = SampleID
à la boucle with, mais je ne parviens pas à obtenir le SampleID inclus avec chaque feuille de la colonne A.
Qu'est-ce que je fais mal?