Private Sub UserForm_Initialize()
Call Importation(AdressePlage, AvecFormule)
End Sub
Private Sub Importation(Adresse As String, Optional AvecFormule As Boolean)
Dim Sp 'Spreadsheet
Dim ShSp 'WorkSheet du Spreadsheet
Dim Rsp 'Range de la WorkSheet du Spreadsheet
Dim R As Range 'Range de la feuille active du classeur Excel
Dim var
Dim var2
Dim T() As Boolean
Dim i&
Dim j&
'--- Plage de la feuille active du classeur Excel (à adapter) ---
Set R = ActiveWorkbook.ActiveSheet.Range(Adresse)
'--- On met toutes les valeurs dans un tableau variant ---
var = R
If AvecFormule Then
var2 = R.Formula 'avec les formules
For i& = 1 To UBound(var, 1)
For j& = 1 To UBound(var, 2)
If Left(var2(i&, j&), 1) = "=" Or _
var2(i&, j&) = "{" Then
var(i&, j&) = var2(i&, j&)
End If
Next j&
Next i&
End If
'/// ATTENTION La spreadSheet ne semble pas être aussi gentille
'/// qu'une feuille Excel qui sait interpréter les dates.
'/// Il faut donc faire un tableau de boolean (VRAI ou FAUX)pour
'/// déterminer le format date des cellules où il y en a
ReDim T(1 To UBound(var, 1), 1 To UBound(var, 2))
For i& = 1 To UBound(var, 1)
For j& = 1 To UBound(var, 2)
If IsDate(var(i&, j&)) Then T(i&, j&) = True
Next j&
Next i&
'--- La SpreadSheet ---
Set Sp = Spreadsheet1
'### Pour la joliesse et pour voir que cela existe ###
'°°° Son titre °°°
With Sp.TitleBar
.Visible = True
.Caption = "Mon Titre"
End With
'°°° Amusant mais inutile (quoique), on change le nom de la colonne "D" °°°
'°°° A l'utilisation dans les formules cette colonne sera toujours la "D" °°°
Sp.ActiveWindow.ColumnHeadings(4).Caption = "DéDé"
'#####################################################
'--- Dans la première feuille ... ---
Set ShSp = Sp.Worksheets(1)
'--- Dans la même adresse de plage que la source ---
Set Rsp = ShSp.Range(Adresse)
'--- Transfert des données ---
If AvecFormule Then
Rsp.Formula = var 'avec les formules
Else
Rsp.Value = var 'que les valeurs
End If
'--- Format pour les dates ---
For i& = 1 To Rsp.Rows.Count
For j& = 1 To Rsp.Columns.Count
If T(i&, j&) Then
Rsp(i&, j&).NumberFormat = "General Date"
End If
Next j&
Next i&
End Sub