Merci,
J'ai repris ton idée en l'adaptant un peu à ce que je voulais, et ça donne ça:
Sub Copier()
Dim lastVal As Integer
Dim caisseVal As Integer
caisseVal = 1
Do While caisseVal < 10
lastVal = Sheets("Caisse" & caisseVal).Range("h65000").End(xlUp).Row
If lastVal > 0 Then
Sheets("Caisse" & caisseVal).Range("h2:h" & Sheets("Caisse" & caisseVal).Range("h65000").End(xlUp).Row).Copy
Sheets("DepotCheques").Range("f65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End If
lastVal = Sheets("Caisse" & caisseVal).Range("j65000").End(xlUp).Row
If lastVal > 0 Then
Sheets("Caisse" & caisseVal).Range("=j2:j" & Sheets("Caisse" & caisseVal).Range("j65000").End(xlUp).Row).Copy
Sheets("DepotCheques").Range("h65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End If
...
caisseVal = caisseVal + 1
Loop
End Sub
En fait il y a 9 feuilles dont la macro doit aller chercher les valeures (caisse1 --> caisse9), et sur chaque feuille copier les mêmes colonnes. Du coup ça saute l'opération si il n'y a pas de valeurs (lastVal=0).
Et puis j'ai transformé le
.SpecialCells(xlCellTypeConstants, 23).Copy
en simplement
.Copy
, car pour une raison que je comprends pas ça ne copiait pas les valeurs si il n'y avait que une ou deux valeures dans la colonne.
Bref, tout ça pour dire que je pense que ma macro est finalisé comme ça
Merci bien!