Comme il n'y a pas foule de réponses, j'en déduis que jze n'ai pas été assez
précis.
Voilà ce qui marche pour l'instant, après quelques recherches sur le forum,
mixage macro et essais hazardeux.
Soyez indulgent, je suis comme Mickey avec ses balais et ses seaux (pour
ceux qui connaissent)
Sub copie()
'jsuis pas sur que cette ligne serve à grand chose mais bon.
Set wssource = Workbooks("Classeur1.xls").Sheets("2")
'macro repiquée pour début de selection, à partir du générateur de macro.
Cells.Find(What:="[mot-clé]", After:=ActiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:=False).Activate
'cette partie provient d'une réponse postée dans le forum
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks("classeur2.xls").Worksheets("Feuil2").Activate
Range("A1").Select
If IsEmpty(Selection) Then
ActiveSheet.Paste
Else
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
End If
End Sub
Ce qui ne me va pas (tout à fait) :
- la séléction englobe la ligne du mot-clé, alors que je voudrais ne
commencer qu'à la ligne suivante.
- il me prend une ligne vide (même si cela n'a pas d'importance)
D'autre part, je ne sais pas comment terminer ma selection par la présence
d'un deuxième mot-clé
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
Hervé
Bonsoir, Voici le code un peu remanié avec quelques commentaires. Reviens si tu as d'autres questions :
Sub copie() Dim Fe As Worksheet Dim Plage As Range Dim Cel As Range '"2" étant le nom de la feuille (onglet) Set Fe = Worksheets("2") 'recherche le mot (la recherche est faite 'dans toute la feuille, en général on évite 'et pour cela on défini la plage de recherche) Set Cel = Fe.Cells.Find("[mot-clé]", , xlValues, xlPart) 'si trouvée If Not Cel Is Nothing Then 'défini la plage à partir de la cellule se trouvant 'sous celle contenant la valeur cherchée (en haut à gauche) 'et la dernière cellule non vide (en bas à droite) 'attention avec "SpecialCells(xlLastCell)" le retour 'est parfois surprenant, comme "UsedRange", à employer 'avec prudence Set Plage = Range(Cel(2), Cel.End(4).End(2)) 'change de référence de feuille Set Fe = Worksheets("Feuil2") 'si la cellule de la feuille "Feuil2" est vide 'colle la plage If IsEmpty(Fe.[A1]) Then Plage.Copy Fe.[A1] Else 'sinon, colle la plage à partir de la première cellule 'non vide de la colonne contenant la cellule ayant 'la valeur recherchée Plage.Copy Cel.End(xlDown)(2) End If End If
Set Cel = Nothing Set Plage = Nothing Set Fe = Nothing End Sub
Hervé.
"Lux" a écrit dans le message news: #
Comme il n'y a pas foule de réponses, j'en déduis que jze n'ai pas été assez
précis. Voilà ce qui marche pour l'instant, après quelques recherches sur le forum,
mixage macro et essais hazardeux. Soyez indulgent, je suis comme Mickey avec ses balais et ses seaux (pour ceux qui connaissent)
Sub copie() 'jsuis pas sur que cette ligne serve à grand chose mais bon. Set wssource = Workbooks("Classeur1.xls").Sheets("2") 'macro repiquée pour début de selection, à partir du générateur de macro. Cells.Find(What:="[mot-clé]", After:¬tiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:úlse).Activate 'cette partie provient d'une réponse postée dans le forum Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Workbooks("classeur2.xls").Worksheets("Feuil2").Activate Range("A1").Select If IsEmpty(Selection) Then ActiveSheet.Paste Else Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste End If End Sub
Ce qui ne me va pas (tout à fait) : - la séléction englobe la ligne du mot-clé, alors que je voudrais ne commencer qu'à la ligne suivante. - il me prend une ligne vide (même si cela n'a pas d'importance)
D'autre part, je ne sais pas comment terminer ma selection par la présence d'un deuxième mot-clé
Merci à qui voudra m'éclairer
Bonsoir,
Voici le code un peu remanié avec quelques commentaires. Reviens si tu as
d'autres questions :
Sub copie()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
'"2" étant le nom de la feuille (onglet)
Set Fe = Worksheets("2")
'recherche le mot (la recherche est faite
'dans toute la feuille, en général on évite
'et pour cela on défini la plage de recherche)
Set Cel = Fe.Cells.Find("[mot-clé]", , xlValues, xlPart)
'si trouvée
If Not Cel Is Nothing Then
'défini la plage à partir de la cellule se trouvant
'sous celle contenant la valeur cherchée (en haut à gauche)
'et la dernière cellule non vide (en bas à droite)
'attention avec "SpecialCells(xlLastCell)" le retour
'est parfois surprenant, comme "UsedRange", à employer
'avec prudence
Set Plage = Range(Cel(2), Cel.End(4).End(2))
'change de référence de feuille
Set Fe = Worksheets("Feuil2")
'si la cellule de la feuille "Feuil2" est vide
'colle la plage
If IsEmpty(Fe.[A1]) Then
Plage.Copy Fe.[A1]
Else
'sinon, colle la plage à partir de la première cellule
'non vide de la colonne contenant la cellule ayant
'la valeur recherchée
Plage.Copy Cel.End(xlDown)(2)
End If
End If
Set Cel = Nothing
Set Plage = Nothing
Set Fe = Nothing
End Sub
Hervé.
"Lux" <Lux@nospam.com> a écrit dans le message news:
#qN8JjTjFHA.1232@TK2MSFTNGP15.phx.gbl...
Comme il n'y a pas foule de réponses, j'en déduis que jze n'ai pas été
assez
précis.
Voilà ce qui marche pour l'instant, après quelques recherches sur le
forum,
mixage macro et essais hazardeux.
Soyez indulgent, je suis comme Mickey avec ses balais et ses seaux (pour
ceux qui connaissent)
Sub copie()
'jsuis pas sur que cette ligne serve à grand chose mais bon.
Set wssource = Workbooks("Classeur1.xls").Sheets("2")
'macro repiquée pour début de selection, à partir du générateur de macro.
Cells.Find(What:="[mot-clé]", After:¬tiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:úlse).Activate
'cette partie provient d'une réponse postée dans le forum
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks("classeur2.xls").Worksheets("Feuil2").Activate
Range("A1").Select
If IsEmpty(Selection) Then
ActiveSheet.Paste
Else
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
End If
End Sub
Ce qui ne me va pas (tout à fait) :
- la séléction englobe la ligne du mot-clé, alors que je voudrais ne
commencer qu'à la ligne suivante.
- il me prend une ligne vide (même si cela n'a pas d'importance)
D'autre part, je ne sais pas comment terminer ma selection par la présence
d'un deuxième mot-clé
Bonsoir, Voici le code un peu remanié avec quelques commentaires. Reviens si tu as d'autres questions :
Sub copie() Dim Fe As Worksheet Dim Plage As Range Dim Cel As Range '"2" étant le nom de la feuille (onglet) Set Fe = Worksheets("2") 'recherche le mot (la recherche est faite 'dans toute la feuille, en général on évite 'et pour cela on défini la plage de recherche) Set Cel = Fe.Cells.Find("[mot-clé]", , xlValues, xlPart) 'si trouvée If Not Cel Is Nothing Then 'défini la plage à partir de la cellule se trouvant 'sous celle contenant la valeur cherchée (en haut à gauche) 'et la dernière cellule non vide (en bas à droite) 'attention avec "SpecialCells(xlLastCell)" le retour 'est parfois surprenant, comme "UsedRange", à employer 'avec prudence Set Plage = Range(Cel(2), Cel.End(4).End(2)) 'change de référence de feuille Set Fe = Worksheets("Feuil2") 'si la cellule de la feuille "Feuil2" est vide 'colle la plage If IsEmpty(Fe.[A1]) Then Plage.Copy Fe.[A1] Else 'sinon, colle la plage à partir de la première cellule 'non vide de la colonne contenant la cellule ayant 'la valeur recherchée Plage.Copy Cel.End(xlDown)(2) End If End If
Set Cel = Nothing Set Plage = Nothing Set Fe = Nothing End Sub
Hervé.
"Lux" a écrit dans le message news: #
Comme il n'y a pas foule de réponses, j'en déduis que jze n'ai pas été assez
précis. Voilà ce qui marche pour l'instant, après quelques recherches sur le forum,
mixage macro et essais hazardeux. Soyez indulgent, je suis comme Mickey avec ses balais et ses seaux (pour ceux qui connaissent)
Sub copie() 'jsuis pas sur que cette ligne serve à grand chose mais bon. Set wssource = Workbooks("Classeur1.xls").Sheets("2") 'macro repiquée pour début de selection, à partir du générateur de macro. Cells.Find(What:="[mot-clé]", After:¬tiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:úlse).Activate 'cette partie provient d'une réponse postée dans le forum Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Workbooks("classeur2.xls").Worksheets("Feuil2").Activate Range("A1").Select If IsEmpty(Selection) Then ActiveSheet.Paste Else Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste End If End Sub
Ce qui ne me va pas (tout à fait) : - la séléction englobe la ligne du mot-clé, alors que je voudrais ne commencer qu'à la ligne suivante. - il me prend une ligne vide (même si cela n'a pas d'importance)
D'autre part, je ne sais pas comment terminer ma selection par la présence d'un deuxième mot-clé