Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copier-coller mot clé : relance

1 réponse
Avatar
Lux
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é

Merci à qui voudra m'éclairer

1 réponse

Avatar
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