Sub Onglet_PV_maj()
Dim i As Long, o As Worksheet
With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
fin = [a65536].End(xlUp).Row
Sheets("PV").Application.Union(Range("a5:a" & fin), Range("e5:h" & fin), Range("L5:L" & fin)).Offset(1, 0).Clear
ValPV = Sheets("PV").Range("a2")
'boucle sur les noms du classeurs
For Each o In Worksheets
If o.Name <> "PV" And o.Name <> "base" Then
'boucle i = a A
'Toto et Tata n'ont pas le meme nombre de colonnes
Nbcol = o.Cells(1, "C").End(xlToRight).Column - 2
'sur chaque ligne de la feuille en cours
For i = 3 To o.Cells(Rows.Count, "a").End(xlUp).Row
'si en colonne A, il y a la valeur PV
If o.Cells(i, "A") = ValPV Then
o.Activate 'sinon problème de copy
'on ne copie QUE les cellules contenant une valeur
Set ToFact = o.Range(Cells(i, "C"), Cells(i, Nbcol + 2)).SpecialCells(xlCellTypeConstants) '.Select
'Set ToFact = Selection
Set DeptId = ToFact.Offset(-i + 2, 0)
ToFact.Copy
'on retourne dans la feuille PV
Sheets("PV").Activate
'on se place à la dernière ligne
nb1 = Sheets("PV").Range("L65536").End(xlUp).Offset(1, 0).Row
With Sheets("PV").Range("L65536").End(xlUp).Offset(1, 0)
'nb1 = .Row ' à revoir
'et on copie valeur transposé
.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks:=False, Transpose:=True
'nombre d'élements qu'on vient de copier...
'à revoir
nb2 = Range("L65536").End(xlUp).Row
o.Activate
DeptId.Copy
.Offset(0, 3).PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With
'resize pour coller le magasin sur les lignes qu'on vient de remplir
Sheets("PV").Range("A65536").End(xlUp).Offset(1, 0).Resize(nb2 - nb1 + 1) = o.Cells(i, "B")
If nb1 <> 6 Then nb1 = nb1 - 1
Sheets("PV").Range("B" & nb1 & ":C" & nb2).FillDown '(Range("B" & nb1 & ":C" & nb2)) 'Resize (nb2 - nb1 + 1)
End If
Next i
End If
Next o
Sheets("PV").Activate
With Range("f6:f" & nb2)
.NumberFormat = "00"
.Value = Range("a2").Value
.Offset(, -1).Value = Range("e1").Value
End With
With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub