Bonsoir à tous,
J'ai une feuille WsRes avec des données (de 200 à 300) qui sont actualisées et donc modifiées toutes les heures ainsi deux feuilles Ws1 et Ws2.
La feuille WsRes contient un ID dans la colonne A et plusieurs cellules (de 1 a 20) contenant diverses informations par rapport à cet ID.
ID - Donnée1 - Donnée2 - Donnée3
12 - tata - toto - tutu
15 - toto - tutu - titi
la feuille Ws1 liste les hommes:
ID - Nom - Prénom - Phone - Ville
11 - Némar - Jean - 01234567 - New-York
15 - Térieur - alain - 1326523 - Las Vegas
La feuille Ws2 liste les femmes avec la même présentation
Mon code ajoute les données sur les 2 feuilles suivant l'ID et ça fonctionne plutôt pas mal.
15 - Térieur - alain - 1326523 - Las Vegas - toto - tutu - titi
J'aimerais pouvoir déterminer la dernière cellule non vide de chaque ligne Cel.Offset(0, 20
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 Sub test() Dim Ws1 As Worksheet Dim Ws2 As Worksheet Dim WsRes As Worksheet Dim derlig As Long Dim Plage1 As Range, Plage2 As Range, PlageRes As Range, Cel As Range, C As Range Set Ws1 = Worksheets(1) Set Ws2 = Worksheets(2) Set WsRes = Worksheets("Résultat") derlig = WsRes.Range("A" & WsRes.Rows.Count).End(xlUp).Row Set Plage1 = Ws1.Range("B4:B25") Set Plage2 = Ws2.Range("B4:B25") Set PlageRes = WsRes.Range("A2:A" & derlig) For Each Cel In PlageRes Set C = Plage1.Find(Cel) If Not C Is Nothing Then WsRes.Range(Cel.Offset(0, 1), Cel.Offset(0, 20)).Copy C.Offset(0, 6) End If Next Cel For Each Cel In PlageRes Set C = Plage2.Find(Cel) If Not C Is Nothing Then WsRes.Range(Cel.Offset(0, 1), Cel.Offset(0, 20)).Copy C.Offset(0, 6) End If Next Cel End Sub
Le code est-il approprié à ce genre de traitement ou y a-t-il moyen de simplifier au lieu de faire 2 boucles for each ?
Je suis un peu embêté aussi car j'aurai aimé ne rien écrire dans la colonne 11, comment faire à partir de C.Offset(0, 6), copier jusque 10 puis repartir de 12 à n ?
Merci d'avance pour vos réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part WsRes.Range(Cel.Offset(0, 1), Cel.Offset(0, 20)).Copy C.Offset(0, 6)
Didier
Partager