Dans ma base de données sur excel ,j'ai une liste avec plusieurs famille qui sont identifiés par leur numero de foyer . Je veux archiver une famille par exemple si j'ai 5 membre d'une seule famille dans la liste ,je veux qu'il soit supprimer dans la première feuille et coller dans une pages d'archives.
J'ai commencé à le faire en m'aidant d'une macro filtre mais je crois que c'est long et je suis bloquée.
Pouvez vous me proposer d' autre idée plus simple ou m'aider sur celui que j'ai commencé.
Merci d'avance
voici le code:
Private Sub continuer_Click()
Dim taille As Integer
taille = WorksheetFunction.CountA(Columns("A:A")) 'Si A est une colonne qui contient des donn?es non vides
If MsgBox("?tes-vous certain(e) de vouloir archiver le foyer de " & list_nom.Value _
& " dans la " & ActiveSheet.Name & " ?", vbYesNoCancel _
, "Demande de confirmation") = vbYes Then
Call filtre1(list_foyer.Value)
' tu s?lectionnes la plage (ici, les colonnes A ? D, limit?es au nombre de ligne remplies)
Range("A4:AJ" & taille).SpcialCells(x1lTypeVisible).Select
'on les copie
Selection.Cut
Sheets("Archives").Select
'Tu s?l?ctionnes le classeur F1 puis la feuille 2 puis la cellule A1
l = ActiveSheet.["A65536"].End(x1Up).Row + 1
I = Sheets("Archives").Range("A65536").End(xlUp).Row
Range("A" & I).Select
ActiveSheet.Paste
ActiveSheet.Cells(l, 1) = Tdate
Else
Unload Me
End If
Call effacer_filtre
Unload Me
End Sub
la procédure filtre1:
Sub filtre1(list_foyer As String)
Rows("3:3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$GM$15").AutoFilter Field:=2, Criteria1:=list_foyer
Merci
J'ai commencé à le faire en m'aidant d'une macro filtre mais je crois que c'est long et je suis bloquée.
Pouvez vous me proposer d' autre idée plus simple ou m'aider sur celui que j'ai commencé.
Merci d'avance
voici le code:
Private Sub continuer_Click()
Dim taille As Integer
taille = WorksheetFunction.CountA(Columns("A:A")) 'Si A est une colonne qui contient des donn?es non vides
If MsgBox("?tes-vous certain(e) de vouloir archiver le foyer de " & list_nom.Value _
& " dans la " & ActiveSheet.Name & " ?", vbYesNoCancel _
, "Demande de confirmation") = vbYes Then
Call filtre1(list_foyer.Value)
' tu s?lectionnes la plage (ici, les colonnes A ? D, limit?es au nombre de ligne remplies)
Range("A4:AJ" & taille).SpcialCells(x1lTypeVisible).Select
'on les copie
Selection.Cut
Sheets("Archives").Select
'Tu s?l?ctionnes le classeur F1 puis la feuille 2 puis la cellule A1
l = ActiveSheet.["A65536"].End(x1Up).Row + 1
I = Sheets("Archives").Range("A65536").End(xlUp).Row
Range("A" & I).Select
ActiveSheet.Paste
ActiveSheet.Cells(l, 1) = Tdate
Else
Unload Me
End If
Call effacer_filtre
Unload Me
End Sub
la procédure filtre1:
Sub filtre1(list_foyer As String)
Rows("3:3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$GM$15").AutoFilter Field:=2, Criteria1:=list_foyer
Merci