Bonjour,
Je ne maitrise pas bien les sélections de plage....
J'ai un souci avec "Nothing".
Dans mon classeur, j'ai 52 feuilles (=52 semaines). Dans chaque feuille, il y a une série de données (des noms de personnes, leur adresse, etc...). Je vais dans chaque feuille, si je ne trouve un nom, je le mets dans la feuille "Total". Si le nom existe déjà, je ne le mets pas dans la feuille "Total", et je continue sur chaque feuille et sur toutes les feuilles. C'est un code adapté d’un ancien post (merci gFZT82). Ci joint le code
En fait, je me suis aperçu que certains noms étaient présents en semaine 3 avec une adresse, mais qu'en semaine 40, leur adresse avait changée...donc, il n'y avait pas de mise à jour puisqu'avec mon code, le nom était "sauté".
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 Sub Totalsemaine() Dim DerligR1 As Long Dim DerligR2 As Long Dim MaPlage As Range Dim DerniereLigne As Integer Dim ajout As Integer Dim nb As Integer Dim j As Integer nb = Worksheets.Count For j = 2 To nb ' - 1 ActiveWorkbook.Worksheets(j).Tab.ColorIndex = 3 ActiveWorkbook.Worksheets(j).Select ajout = 0 With Sheets("S " & j - 1) DerligR1 = .Range("b" & .Rows.Count).End(xlUp).Row End With With Sheets("Total") DerligR2 = .Range("a" & .Rows.Count).End(xlUp).Row Set MaPlage = .Range(.Cells(1, 1), .Cells(DerligR2, 1)) End With For i = 2 To DerligR1 With MaPlage Set c = .Find(Sheets("S " & j - 1).Range("b" & i), LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then ajout = ajout + 1 'DerniereLigne = Sheets("Total").Range("a65536").End(xlUp).Row Sheets("Total").Cells(DerligR2 + ajout, 1) = Sheets("S " & j - 1).Cells(i, 2) Sheets("Total").Cells(DerligR2 + ajout, 2) = Sheets("S " & j - 1).Cells(i, 13) Sheets("Total").Cells(DerligR2 + ajout, 3) = Sheets("S " & j - 1).Cells(i, 30) ' With Sheets("S 1") ' .Range(.Cells(DerniereLigne + 1, 2), .Cells(DerniereLigne + 1, 2)).Copy Destination:=Sheets("Total").Cells(i, 1) ' .Range(.Cells(DerniereLigne + 1, 13), .Cells(DerniereLigne + 1, 13)).Copy Destination:=Sheets("Total").Cells(i, 2) ' End With End If End With Next i Next j MsgBox ("Fini") End Sub
Donc j'ai essayé de rajouterdans ma boucle, histoire que si le nom est trouvé, on met la dernière adresse...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 If c Is Not Nothing Then Sheets("Total").Cells(DerligR2, 3) = Sheets("S " & j - 1).Cells(i, 30) End If
J'ai donc essayé avec ce code, il ne marche pas, j'ai essayé avec, marche pas..
Code : Sélectionner tout - Visualiser dans une fenêtre à part is empty
Il y a certainement une instruction spécifique (mais je ne la connais pas.....)
Une idée, ?
Merci,
A+
Partager