Bonjour Anthony,
ton fichier en retour : https://www.cjoint.com/c/MJlsMKuppD0
la feuille active est "Mise en page" ; fais Ctrl e ➯ travail effectué. :)
à toi de vérifier tous les résultats. ;)
tu aurais pu faire Ctrl e à partir de la feuille "Data" ; les résultats
auraient été identiques.
dans les 2 cas : c'est inutile d'effacer les anciens résultats car
c'est fait automatiquement par la macro.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
code VBA de Module1 (32 lignes) :
Option Explicit
Sub CpyData()
Const na As String * 5 = "<N/A>"
Dim sh As Worksheet, s$, m&, r&, d&, i&, j&, k&
Set sh = Worksheets("Mise en page"): m = Rows.Count: r = 2
d = sh.Cells(m, 1).End(3).Row: Application.ScreenUpdating = 0
If d > 1 Then sh.Range("A2:V" & d) = Empty
Worksheets("Data").Select
d = Cells(m, 7).End(3).Row: If d = 1 And IsEmpty([G1]) Then Exit Sub
Do: i = i + 1: Loop Until Cells(i, 7) <> ""
Do
With sh.Cells(r, 1)
.Value = Cells(i, 2) 'NumeroClient
.Offset(, 1) = Cells(i, 7) 'Intitule
.Offset(, 2) = Cells(i + 1, 2) 'Raccourci
j = i + 2: .Offset(, 3) = Cells(j, 2) 'Adresse1
For k = 1 To 3
s = Cells(j + k, 2): .Offset(, 3 + k) = IIf(s = "", na, s) 'Adresse2 à Complément
Next k
s = Cells(i + 4, 5): .Offset(, 7) = IIf(s = "", na, s) 'Ville
j = i + 5: .Offset(, 15).Resize(, 3).NumberFormat = "@"
For k = 1 To 14
s = Cells(j + k, 3): .Offset(, 7 + k) = IIf(s = "", na, s) 'Country à Sales Person
Next k
If i = d Then Exit Do
End With
i = Cells(i, 7).End(4).Row: r = r + 1
Loop
sh.Select
End Sub
rhodo