Macro recherche de valeur et copie de lignes
Bonjour,
Je viens vers vous car j'ai besoin d'un petit coup de pouce. Dans le cadre de la remise au propre de mon fichier de planning (sous excel 2007), je souhaiterais pouvoir réaliser une macro qui recherche toutes les dates d'un même intervenant. Malheureusement je ne suis pas très brillant lorsqu'il s'agit de VBA.
Chaque feuille correspond à une semaine et toutes ont exactement la même structure.
En farfouillant sur le site j'ai trouvé cette solution : https://forum.excel-pratique.com/excel/macro-excel-recherche-d-une-valeur-et-copie-de-ligne-t45075.html
Sub Ellipse4_Clic()
'twb fait référence au classeur en cours
Application.DisplayAlerts = False
Set twb = ThisWorkbook
Dim resultat As String
' on demande le nom"
resultat = InputBox("Entrer le nom recherché :", "Titre") 'La variable reçoit la valeur entrée dans l'InputBox
If resultat <> "" Then 'Si la valeur est différente de "" on affiche le résultat
MsgBox "L'indépendant recherché est " & resultat
End If
' on va parcourir un à un toutes les feuilles du classeur en cours, ws identifie chacune de ces feuilles
i = 0
For Each ws In twb.Worksheets
' on recherche l'intervenant dans la feuille ws
Set trouve = ws.Cells.Find(resultat, LookIn:=xlValues, LookAt:=xlWhole)
If Not trouve Is Nothing Then
pAddresse = trouve.Address
If i = 0 Then Set nwb = Workbooks.Add
Do
i = i + 1
ws.Rows(trouve.Row).Copy nwb.Sheets(1).Range("A" & i)
Set trouve = ws.Cells.FindNext(trouve)
Loop While Not trouve Is Nothing And trouve.Address <> pAddresse
End If
' on passe au classeur suivant
Next
If i = 0 Then
MsgBox "Cet intervenant n'existe pas"
Application.DisplayAlerts = True
End If
End SubQuestion 1 :
Cette macro me permet de copier la ligne où est mentionné mon intervenant. Comment rédiger le code pour qu'il copie également la ligne du dessus (elle correspond à la tâche à réaliser).
Question 2 :
Cette macro copie la ligne intégralement. Cependant, je souhaiterais qu'elle ne copie que la valeur (pour les dates) et non la formule.
En pièce jointe un exemple alléger de mon planning pour tenter d'être plus clair.
Merci d'avance
Bonjour,
Je viens de tester à l'instant ce code.
J'arrive au même résultat avec
i = i + 1
ws.Rows(trouve.Row - 1).Copy
nwb.Sheets(1).Range("A" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues
i = i + 1
ws.Rows(trouve.Row).Copy
nwb.Sheets(1).Range("A" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues
i = i + 1
Mais cela fait moins propre. Merci beaucoup!
Bonne journée