Je souhaite une macro qui me récapitule toutes les cellules A13:I40 de tous les onglets après "D" dans mon onglet "TOTAL" a partir de la cellule A13:I40 et si plus loin que A40 bascule sur les cellules J13:R40 et qui au fur et a mesure se met à jour automatiquement quand je change des valeurs des onglets après "D".
Voici le code que j'ai fais suivant plusieurs exemple sur le forum et en essayant de comprendre mais il me met erreur syntax et j'avoue que je ne comprends pas...
Code : Tout sélectionner
Sub RécapitulerDonnées()
Dim document As Object
Dim sheets As Object
Dim sheet As Object
Dim totalSheet As Object
Dim lastRow As Long
Dim destRange As Object
Dim sourceRange As Object
' Obtenir le document en cours
document = ThisComponent
sheets = document.Sheets
' Référence à l'onglet "TOTAL"
totalSheet = sheets.getByName("TOTAL")
' Efface le contenu existant dans l'onglet "TOTAL"
totalSheet.getCellRangeByName("A13:R40").clearContents(1023)
' Boucle à travers tous les onglets après "D"
For i = 0 To sheets.getCount() - 1
sheet = sheets.getByIndex(i)
If sheet.getName() > "D" Then
' Déterminer la dernière ligne non vide dans l'onglet en cours
lastRow = sheet.getCellRangeByName("A" & sheet.Rows.Count).EndOfUsedArea.Row
' Vérifier si les données vont au-delà de la ligne 40
If lastRow > 40 Then
sourceRange = sheet.getCellRangeByName("A13:I40")
destRange = totalSheet.getCellRangeByName("J" & totalSheet.Rows.Count).EndOfUsedArea.Offset(1, 0).getCellRangeByPosition(0, 0, 27, 8)
Else
sourceRange = sheet.getCellRangeByName("A13:I" & lastRow)
destRange = totalSheet.getCellRangeByName("A" & totalSheet.Rows.Count).EndOfUsedArea.Offset(1, 0).getCellRangeByPosition(0, 0, sourceRange.Rows.Count - 1, sourceRange.Columns.Count - 1)
End If
' Copier les données dans l'onglet "TOTAL"
destRange.setDataArray(sourceRange.getDataArray())
End If
Next i
' Sélectionner la cellule A1 dans l'onglet "TOTAL"
totalSheet.getCellRangeByName("A1").IsSelected = True
MsgBox "Récapitulation des données terminée.", 64, "Information"
End Sub
En vous remerciant par avance,
Respectueusement,
Denver