Bonjour,
Je cherche une macro qui sélectionne les lignes dont le seul point commun est le nom indiqué dans la 2ème cellule de la ligne (colonne B).
Puis copier/coller la sélection dans une autre feuille du classeur.
Cette macro doit concerner tous les noms qui sont mentionnés plus d'une fois.
Exemple de résultat :
3 lignes pour Pierre;
2 lignes pour Paul;
6 lignes pour Jacques.
Je ne souhaite pas de TCD.
Je vous remercie pour l'aide que vous pourrez m'apporter.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
h2so4
bonjour,
voici une macro qui fait ce que tu demandes (enfin si j'ai bien compris)
Sub mselect() Dim sel() As Boolean f1 = "Sheet1": ' à modifier feuille source f2 = "Sheet2": ' à modifier feuille destination nbr = Evaluate("counta(" & f1 & "!B:B)") ptr = Evaluate("counta(" & f2 & "!B:B)") ReDim sel(nbr) For j = 1 To nbr If sel(j) = False Then For i = j + 1 To nbr If Worksheets(f1).Cells(i, 2) = Worksheets(f1).Cells(j, 2) Then If sel(j) = False Then Worksheets(f1).Range(j & ":" & j).Copy ptr = ptr + 1 Worksheets(f2).Range(ptr & ":" & ptr).PasteSpecial sel(j) = True End If Worksheets(f1).Range(i & ":" & i).Copy ptr = ptr + 1 Worksheets(f2).Range(ptr & ":" & ptr).PasteSpecial sel(i) = True End If Next i End If Next j
End Sub
dany956 used his keyboard to write :
Bonjour, Je cherche une macro qui sélectionne les lignes dont le seul point commun est le nom indiqué dans la 2ème cellule de la ligne (colonne B). Puis copier/coller la sélection dans une autre feuille du classeur. Cette macro doit concerner tous les noms qui sont mentionnés plus d'une fois. Exemple de résultat : 3 lignes pour Pierre; 2 lignes pour Paul; 6 lignes pour Jacques. Je ne souhaite pas de TCD. Je vous remercie pour l'aide que vous pourrez m'apporter.
-- h2so4 ca PAN pique DORA .
bonjour,
voici une macro qui fait ce que tu demandes (enfin si j'ai bien
compris)
Sub mselect()
Dim sel() As Boolean
f1 = "Sheet1": ' à modifier feuille source
f2 = "Sheet2": ' à modifier feuille destination
nbr = Evaluate("counta(" & f1 & "!B:B)")
ptr = Evaluate("counta(" & f2 & "!B:B)")
ReDim sel(nbr)
For j = 1 To nbr
If sel(j) = False Then
For i = j + 1 To nbr
If Worksheets(f1).Cells(i, 2) = Worksheets(f1).Cells(j, 2) Then
If sel(j) = False Then
Worksheets(f1).Range(j & ":" & j).Copy
ptr = ptr + 1
Worksheets(f2).Range(ptr & ":" & ptr).PasteSpecial
sel(j) = True
End If
Worksheets(f1).Range(i & ":" & i).Copy
ptr = ptr + 1
Worksheets(f2).Range(ptr & ":" & ptr).PasteSpecial
sel(i) = True
End If
Next i
End If
Next j
End Sub
dany956 used his keyboard to write :
Bonjour,
Je cherche une macro qui sélectionne les lignes dont le seul point commun est
le nom indiqué dans la 2ème cellule de la ligne (colonne B).
Puis copier/coller la sélection dans une autre feuille du classeur.
Cette macro doit concerner tous les noms qui sont mentionnés plus d'une fois.
Exemple de résultat :
3 lignes pour Pierre;
2 lignes pour Paul;
6 lignes pour Jacques.
Je ne souhaite pas de TCD.
Je vous remercie pour l'aide que vous pourrez m'apporter.
voici une macro qui fait ce que tu demandes (enfin si j'ai bien compris)
Sub mselect() Dim sel() As Boolean f1 = "Sheet1": ' à modifier feuille source f2 = "Sheet2": ' à modifier feuille destination nbr = Evaluate("counta(" & f1 & "!B:B)") ptr = Evaluate("counta(" & f2 & "!B:B)") ReDim sel(nbr) For j = 1 To nbr If sel(j) = False Then For i = j + 1 To nbr If Worksheets(f1).Cells(i, 2) = Worksheets(f1).Cells(j, 2) Then If sel(j) = False Then Worksheets(f1).Range(j & ":" & j).Copy ptr = ptr + 1 Worksheets(f2).Range(ptr & ":" & ptr).PasteSpecial sel(j) = True End If Worksheets(f1).Range(i & ":" & i).Copy ptr = ptr + 1 Worksheets(f2).Range(ptr & ":" & ptr).PasteSpecial sel(i) = True End If Next i End If Next j
End Sub
dany956 used his keyboard to write :
Bonjour, Je cherche une macro qui sélectionne les lignes dont le seul point commun est le nom indiqué dans la 2ème cellule de la ligne (colonne B). Puis copier/coller la sélection dans une autre feuille du classeur. Cette macro doit concerner tous les noms qui sont mentionnés plus d'une fois. Exemple de résultat : 3 lignes pour Pierre; 2 lignes pour Paul; 6 lignes pour Jacques. Je ne souhaite pas de TCD. Je vous remercie pour l'aide que vous pourrez m'apporter.
-- h2so4 ca PAN pique DORA .
michdenis
Bonjour,
Avec un filtre élaboré : les données dans l'exemple sont dans la feuil2 en colonne A1:Ax La zone de critère pour le filtre élaboré : Feuil2:H1:H2
Le résultat est copié en feuil3 , A1 '----------------------------------------- Sub test() Dim Rg As Range Application.ScreenUpdating = False With Worksheets("Feuil2") 'Définir la plage Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) 'définir une zone de critère de 2 cellules 'Les cellules de ton choix .Range("H1") = "" .Range("H2").Formula = "=CountIf(" & .Name & "!" & _ Rg.Address & "," & .Name & "!" & .Range("A2").Address(0, 0) & ")>1 " End With
With Rg 'Filtre élaboré .AdvancedFilter xlFilterCopy, _ Worksheets("Feuil2").Range("H1:H2"), _ Worksheets("Feuil3").Range("A1"), False End With 'Trier par ordre croissant la plage de destination With Worksheets("Feuil3").Range("A1") .Sort Key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlYes End With On Error Resume Next 'Afficher toutes les données 'Vide la plage de critère with Worksheets("Feuil2") .ShowAllData .Range("H1:H2").clear End with Application.ScreenUpdating = True
End Sub '-----------------------------------------
MichD -------------------------------------------- "dany956" a écrit dans le message de groupe de discussion :
Bonjour, Je cherche une macro qui sélectionne les lignes dont le seul point commun est le nom indiqué dans la 2ème cellule de la ligne (colonne B). Puis copier/coller la sélection dans une autre feuille du classeur. Cette macro doit concerner tous les noms qui sont mentionnés plus d'une fois. Exemple de résultat : 3 lignes pour Pierre; 2 lignes pour Paul; 6 lignes pour Jacques. Je ne souhaite pas de TCD. Je vous remercie pour l'aide que vous pourrez m'apporter.
Bonjour,
Avec un filtre élaboré :
les données dans l'exemple sont dans la feuil2 en colonne A1:Ax
La zone de critère pour le filtre élaboré : Feuil2:H1:H2
Le résultat est copié en feuil3 , A1
'-----------------------------------------
Sub test()
Dim Rg As Range
Application.ScreenUpdating = False
With Worksheets("Feuil2")
'Définir la plage
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
'définir une zone de critère de 2 cellules
'Les cellules de ton choix
.Range("H1") = ""
.Range("H2").Formula = "=CountIf(" & .Name & "!" & _
Rg.Address & "," & .Name & "!" & .Range("A2").Address(0, 0) & ")>1 "
End With
With Rg 'Filtre élaboré
.AdvancedFilter xlFilterCopy, _
Worksheets("Feuil2").Range("H1:H2"), _
Worksheets("Feuil3").Range("A1"), False
End With
'Trier par ordre croissant la plage de destination
With Worksheets("Feuil3").Range("A1")
.Sort Key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlYes
End With
On Error Resume Next
'Afficher toutes les données
'Vide la plage de critère
with Worksheets("Feuil2")
.ShowAllData
.Range("H1:H2").clear
End with
Application.ScreenUpdating = True
End Sub
'-----------------------------------------
MichD
--------------------------------------------
"dany956" a écrit dans le message de groupe de discussion : poWdnULUxLFVbvXQRVn_vwA@giganews.com...
Bonjour,
Je cherche une macro qui sélectionne les lignes dont le seul point commun est
le nom indiqué dans la 2ème cellule de la ligne (colonne B).
Puis copier/coller la sélection dans une autre feuille du classeur.
Cette macro doit concerner tous les noms qui sont mentionnés plus d'une fois.
Exemple de résultat :
3 lignes pour Pierre;
2 lignes pour Paul;
6 lignes pour Jacques.
Je ne souhaite pas de TCD.
Je vous remercie pour l'aide que vous pourrez m'apporter.
Avec un filtre élaboré : les données dans l'exemple sont dans la feuil2 en colonne A1:Ax La zone de critère pour le filtre élaboré : Feuil2:H1:H2
Le résultat est copié en feuil3 , A1 '----------------------------------------- Sub test() Dim Rg As Range Application.ScreenUpdating = False With Worksheets("Feuil2") 'Définir la plage Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) 'définir une zone de critère de 2 cellules 'Les cellules de ton choix .Range("H1") = "" .Range("H2").Formula = "=CountIf(" & .Name & "!" & _ Rg.Address & "," & .Name & "!" & .Range("A2").Address(0, 0) & ")>1 " End With
With Rg 'Filtre élaboré .AdvancedFilter xlFilterCopy, _ Worksheets("Feuil2").Range("H1:H2"), _ Worksheets("Feuil3").Range("A1"), False End With 'Trier par ordre croissant la plage de destination With Worksheets("Feuil3").Range("A1") .Sort Key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlYes End With On Error Resume Next 'Afficher toutes les données 'Vide la plage de critère with Worksheets("Feuil2") .ShowAllData .Range("H1:H2").clear End with Application.ScreenUpdating = True
End Sub '-----------------------------------------
MichD -------------------------------------------- "dany956" a écrit dans le message de groupe de discussion :
Bonjour, Je cherche une macro qui sélectionne les lignes dont le seul point commun est le nom indiqué dans la 2ème cellule de la ligne (colonne B). Puis copier/coller la sélection dans une autre feuille du classeur. Cette macro doit concerner tous les noms qui sont mentionnés plus d'une fois. Exemple de résultat : 3 lignes pour Pierre; 2 lignes pour Paul; 6 lignes pour Jacques. Je ne souhaite pas de TCD. Je vous remercie pour l'aide que vous pourrez m'apporter.