J’ai quelques problèmes avec la présente macro qui fonctionne partiellement.
1) La copie ne se fait pas sur la première ligne libre "GoDownToEndOfData" et et lors d'un enregistrement subséquent ne va pas à la ligne suivante..
2) La cellule A1 est copié sur la colonne A mais avec une couleur d'arrière plan et inclus l'image du bouton.
3) Le titre de la cellule B3 est copié sur 2 cellules (C & D) et avec couleur d'arrière plan, au lieu de seulement la cellule D sans arrière plan.
4) La copie des cellules A4, A5, A7 et A8 sont copiées sur les cellules N, O, P et Q mais sans les données (valeurs) des cellules d'origines.
5) La cellule L55 est copiée sur 2 cellules (R & S) avec couleur d'arrière plan au lieu de la cellule R seulement avec donnée (Valeur) de la cellule d'origine.
Votre aide serait grandement appréciée.
Code : Tout sélectionner
Sub Inscription_Registre_des_Brassins
MonDocument = ThisComponent
MesFeuilles = MonDocument.Sheets
Dim MonDoc As Object, MaFeuille As Object, MonCurseur As Object, aCopier as Object
Dim feuilleDepart As Object 'Désigne la feuille source
Dim feuilleArriv As Object 'Désigne la feuille destination
Dim celluleDepart As Object 'Définit la cellule source
Dim celluleArriv As Object 'Définit la cellule de destination
Dim derLigne as long
rem ----------------------------------------------------------------------
'dim args1(1) as new com.sun.star.beans.PropertyValue
'args1(0).Name = "By"
'args1(0).Value = 1
'args1(1).Name = "Sel"
'args1(1).Value = false
'dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
'dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args1())
'dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
'''''''''''''''''TROUVER LA DERNIERE LIGNE DE DONNÉE DE LA FEUILLE BRASSINS RÉGISTRE'''''''''''''''''''''
MonDocument = ThisComponent
feuilleArriv = MonDocument.getSheets.getByName("Brassins régistre")
MonCurseur = feuilleArriv.createCursor
MonCurseur.gotoEndOfUsedArea( True )
derLigne = MonCurseur.RangeAddress.EndRow+1
feuilleDepart = MesFeuilles.getByName ("Brassage") ' definit la feuille source
celluleDepart = feuilleDepart.getCellRangeByName ("A1")
MonDocument.CurrentController.select(celluleDepart) 'Sélection de la cellule de départ
aCopier = MonDocument.CurrentController.getTransferable() 'Copie
feuilleArriv = MesFeuilles.getByName ("Brassins régistre") ' definit la feuille de destination
celluleArriv = feuilleArriv.getCellRangeByName ("$A$" & derLigne)
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
If celluleDepart.supportsService("com.sun.star.table.CellRange") Then
feuilleArriv.copyRange(celluleDepart.CellAddress, celluleArriv.RangeAddress)
Else Depart
Endif
feuilleDepart = MesFeuilles.getByName ("Brassage")
celluleDepart = feuilleDepart.getCellRangeByName ("B3")
feuilleArriv = MesFeuilles.getByName ("Brassins régistre")
celluleArriv = feuilleArriv.getCellRangeByName ("$C$" & derLigne)
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
If celluleDepart.supportsService("com.sun.star.table.CellRange") Then
feuilleArriv.copyRange(celluleDepart.CellAddress, celluleArriv.RangeAddress)
Else Depart
Endif
feuilleDepart = MesFeuilles.getByName ("Brassage")
celluleDepart = feuilleDepart.getCellRangeByName ("E4")
MonDocument.CurrentController.select(celluleDepart) 'Sélection de la cellule de départ
aCopier = MonDocument.CurrentController.getTransferable() 'Copie
feuilleArriv = MesFeuilles.getByName ("Brassins régistre")
celluleArriv = feuilleArriv.getCellRangeByName ("$N$" & derLigne)
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
If celluleDepart.supportsService("com.sun.star.table.CellRange") Then
feuilleArriv.copyRange(celluleDepart.CellAddress, celluleArriv.RangeAddress)
Else Depart
Endif
feuilleDepart = MesFeuilles.getByName ("Brassage")
celluleDepart = feuilleDepart.getCellRangeByName ("E5")
MonDocument.CurrentController.select(celluleDepart) 'Sélection de la cellule de départ
aCopier = MonDocument.CurrentController.getTransferable() 'Copie
feuilleArriv = MesFeuilles.getByName ("Brassins régistre")
celluleArriv = feuilleArriv.getCellRangeByName ("$O$" & derLigne)
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
If celluleDepart.supportsService("com.sun.star.table.CellRange") Then
feuilleArriv.copyRange(celluleDepart.CellAddress, celluleArriv.RangeAddress)
Else Depart
Endif
feuilleDepart = MesFeuilles.getByName ("Brassage")
celluleDepart = feuilleDepart.getCellRangeByName ("E7")
MonDocument.CurrentController.select(celluleDepart) 'Sélection de la cellule de départ
aCopier = MonDocument.CurrentController.getTransferable() 'Copie
feuilleArriv = MesFeuilles.getByName ("Brassins régistre")
celluleArriv = feuilleArriv.getCellRangeByName ("$P$" & derLigne)
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
If celluleDepart.supportsService("com.sun.star.table.CellRange") Then
feuilleArriv.copyRange(celluleDepart.CellAddress, celluleArriv.RangeAddress)
Else Depart
Endif
feuilleDepart = MesFeuilles.getByName ("Brassage")
celluleDepart = feuilleDepart.getCellRangeByName ("E8")
MonDocument.CurrentController.select(celluleDepart) 'Sélection de la cellule de départ
aCopier = MonDocument.CurrentController.getTransferable() 'Copie
feuilleArriv = MesFeuilles.getByName ("Brassins régistre")
celluleArriv = feuilleArriv.getCellRangeByName ("$Q$" & derLigne)
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
If celluleDepart.supportsService("com.sun.star.table.CellRange") Then
feuilleArriv.copyRange(celluleDepart.CellAddress, celluleArriv.RangeAddress)
Else Depart
Endif
feuilleDepart = MesFeuilles.getByName ("Brassage")
celluleDepart = feuilleDepart.getCellRangeByName ("L55")
MonDocument.CurrentController.select(celluleDepart) 'Sélection de la cellule de départ
aCopier = MonDocument.CurrentController.getTransferable() 'Copie
feuilleArriv = MesFeuilles.getByName ("Brassins régistre")
celluleArriv = feuilleArriv.getCellRangeByName ("$R$" & derLigne )
MonDocument.CurrentController.select(celluleArriv) 'Selection de la cellule d'arrivée
MonDocument.CurrentController.insertTransferable(aCopier) 'Transfert des données
If celluleDepart.supportsService("com.sun.star.table.CellRange") Then
feuilleArriv.copyRange(celluleDepart.CellAddress, celluleArriv.RangeAddress)
Else Depart
Endif
'-----Message de confirmation-----
msgbox "L'inscription au régistre est réussie avec succès" ,0, "Bravo !"
End Sub

