Bonjour,
J'ai un programme qui extrait l'email entre guillemets et le copie dans une autre feuille, par contre il extrait que le premier email et j'ai des cellules qui contiennent plus que 3 emails donc je dois extraire tous les emails et les copier dans une autre feuille en respectant une seule condition l'email doit être affiché devant sa valeur associée ( c'est plus simple à comprendre avec les photos : Je copie les données que j'ai dans l'onglet Source dans l'onglet Copy, mais pour l'instant il copie que le premier email, je veux avoir le meme résultat que j'ai dans l'onglet Target)
J'ai un programme qui extrait l'email entre guillemets et le copie dans une autre feuille, par contre il extrait que le premier email et j'ai des cellules qui contiennent plus que 3 emails donc je dois extraire tous les emails et les copier dans une autre feuille en respectant une seule condition l'email doit être affiché devant sa valeur associée ( c'est plus simple à comprendre avec les photos : Je copie les données que j'ai dans l'onglet Source dans l'onglet Copy, mais pour l'instant il copie que le premier email, je veux avoir le meme résultat que j'ai dans l'onglet Target)
VB:
Function columnLookup(Name As String, Line As Range) As Integer
Dim i As Integer
Dim Cell As Range
i = 0
For Each Cell In Line
If Cell.Value = Name Then
i = Cell.Column
End If
Next Cell
columnLookup = i
End Function
Public Function AdrMail(s As String) As String
Dim A As Long
A = InStr(1, s, "<") + 1
If A = 1 Then
AdrMail = ""
Else
AdrMail = Mid(s, A, InStr(1, s, ">") - A)
End If
End Function
Sub CopyfromSource()
Dim k As Variant
Dim localworksheet, globalWorksheet As String
Dim currentLine, currentLine1 As Integer
Dim classeur As Workbook
Dim headerSource As Range
Dim headerCopy As Range
Dim valueSource, emailSource, valueCopy, emailCopy As Integer
globalWorksheet = "Source"
localworksheet = "Copy"
Worksheets(globalWorksheet).Activate
Set headerSource = Worksheets(globalWorksheet).Range("A1", Worksheets(globalWorksheet).Range("A1").End(xlToRight))
Set headerCopy = Worksheets(localworksheet).Range("A1", Worksheets(localworksheet).Range("A1").End(xlToRight))
valueSource = columnLookup("Value", headerSource)
emailSource = columnLookup("Email", headerSource)
valueCopy = columnLookup("Value", headerCopy)
emailCopy = columnLookup("Email", headerCopy)
'Copy
currentLine1 = 2
For k = 2 To 10
Worksheets(localworksheet).Cells(currentLine1, valueCopy).Value = Worksheets(globalWorksheet).Cells(k, valueSource).Value
Worksheets(localworksheet).Cells(currentLine1, emailCopy).Value = AdrMail(Worksheets(globalWorksheet).Cells(k, emailSource).Value)
currentLine1 = currentLine1 + 1
Next k
Worksheets(localworksheet).Activate
End Sub