PB de marco sous Excel -flitrer et copier
Neopy
-
Vaucluse Messages postés 27336 Date d'inscription Statut Contributeur Dernière intervention -
Vaucluse Messages postés 27336 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je bute sur un PB sous Excel, je cherche à créer une macro permettant de filtrer automatiquement une colonne,
puis pour chaque valeur du filtre de copier les données et de les coller sur une autre feuille.
Mon exemple:
colonne A : DEVISE colonne B: montant
EUR 100
EUR 200
USD 500
CZK 10000
USD 100
Merci de votre aide
Je bute sur un PB sous Excel, je cherche à créer une macro permettant de filtrer automatiquement une colonne,
puis pour chaque valeur du filtre de copier les données et de les coller sur une autre feuille.
Mon exemple:
colonne A : DEVISE colonne B: montant
EUR 100
EUR 200
USD 500
CZK 10000
USD 100
Merci de votre aide
A voir également:
- PB de marco sous Excel -flitrer et copier
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Si et ou excel - Guide
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
3 réponses
Bonjour
Un copier collé sur une feuille séparée marche trés bien après le tri et ne prend que les valeurs affichées.
On peut donc déja imaginer une macro"classique" qui renvoie uniquement les valeurs affichées après tri, comme par exemple ci dessous pour un champ de donnée de B4 à C27:
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 19/09/2007
'
Selection.AutoFilter Field:=1, Criteria1:="Firmin"
Range("B9:C52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("B3").Select
ActiveSheet.Paste
Sheets("Feuil2").Select
Selection.AutoFilter Field:=1
End Sub
Cette macro copie sur la feuille 1 les données triées sous le prénom "firmin", et uniquement celles affichées de la feuille 2, elle remet ensuite la liste feuille 2 en place
A partir de là, on peut imaginer de passer par une série de boutons d'options spécifiés au nom à sélectionner et de macro correspondantes qui sélectionnerait la feuille, ou la plage de la feuille à remplir.
Ce que je ne sais pas, par contre, c'est s'il y a moyen de lancer la macro appropriée uniquement par le tri sans passer par les boutons?
Cordialement
Un copier collé sur une feuille séparée marche trés bien après le tri et ne prend que les valeurs affichées.
On peut donc déja imaginer une macro"classique" qui renvoie uniquement les valeurs affichées après tri, comme par exemple ci dessous pour un champ de donnée de B4 à C27:
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 19/09/2007
'
Selection.AutoFilter Field:=1, Criteria1:="Firmin"
Range("B9:C52").Select
Selection.Copy
Sheets("Feuil1").Select
Range("B3").Select
ActiveSheet.Paste
Sheets("Feuil2").Select
Selection.AutoFilter Field:=1
End Sub
Cette macro copie sur la feuille 1 les données triées sous le prénom "firmin", et uniquement celles affichées de la feuille 2, elle remet ensuite la liste feuille 2 en place
A partir de là, on peut imaginer de passer par une série de boutons d'options spécifiés au nom à sélectionner et de macro correspondantes qui sélectionnerait la feuille, ou la plage de la feuille à remplir.
Ce que je ne sais pas, par contre, c'est s'il y a moyen de lancer la macro appropriée uniquement par le tri sans passer par les boutons?
Cordialement
Merci de ta réponse,
mais je cherche le moyen d'automatiser au maximum la procédure (je reconnais être trés feignant....).
voici le debut de ma recherche, mais ça ne fonctionne pas
Dim strDEV As String
Dim nDEV As Integer
nDEV = Sheets("Data").Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row - 1
For i = 2 To nDEV + 1
strDEV = Sheets("Data").Cells(i, 1)
Sheets("Data").Select
Range("A1:K1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=strDEV
Range("A1").Select
Selection.Copy
Sheets.Add
ActiveSheet.Name = strDEV
ActiveSheet.Paste
Sheets("Data").Select
Range("A1:B1").Select
Selection.AutoFilter
End If
Next i
End Sub
mais je cherche le moyen d'automatiser au maximum la procédure (je reconnais être trés feignant....).
voici le debut de ma recherche, mais ça ne fonctionne pas
Dim strDEV As String
Dim nDEV As Integer
nDEV = Sheets("Data").Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row - 1
For i = 2 To nDEV + 1
strDEV = Sheets("Data").Cells(i, 1)
Sheets("Data").Select
Range("A1:K1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=strDEV
Range("A1").Select
Selection.Copy
Sheets.Add
ActiveSheet.Name = strDEV
ActiveSheet.Paste
Sheets("Data").Select
Range("A1:B1").Select
Selection.AutoFilter
End If
Next i
End Sub