Je me permets de revenir vers vous car je souhaiterais pouvoir sélectionner une ligne, la copier et la coller dans ma ligne 2 de ma feuille "formulaire".
Concrètement, je me sers de Calc comme d'une base de données (je ne me sers pas de Base car j'ai beaucoup de calculs).
Je fais de la saisie de mes dossiers dans la feuille "Formulaire" et cela remplie ma feuille "champs". Ma feuille "champs" sert de source pour la rédaction de mes documents sous Writer.
Ma saisie de dossiers se fait en principe en 2 temps. Les premiers éléments à l'ouverture de mon dossier puis je complète à réception des éléments qui me manquaient.
Chacun de mes dossiers a un numéro unique (la colonne B2 de la feuille Champs).
Du coup, je voudrais pouvoir en rentrant ce numéro dans le champs "Numéro RG" de Formulaire qui est lié à la cellule B2 de champs coller la ligne correspondant à ce dossier et la coller sur la ligne 2.
Par exemple, sur mon fichier, je voudrais qu'en tapant "3" dans champs "Numéro RG", cela déclenche un copier-couper-coller de la ligne 4 en ligne 2 (j'ai déjà une macro qui fait un copier-coller de la dernière ligne).
Code : Tout sélectionner
Sub DeplacerDerLigneBaux()
Dim monDocument As Object, maFeuille As Object, maZone As Object
Dim destination As Object, zoneAcopier As Object, lesLignes As Object
Dim zonesVides As Variant
Dim derLigne As Long
monDocument = Thiscomponent
maFeuille = monDocument.sheets.getByName("Champs")
maZone = maFeuille.Columns.GetByName("A")
zonesVides = maZone.queryEmptyCells.RangeAddresses
derLigne = zonesVides(UBound(zonesVides)).StartRow - 1
zoneAcopier = maFeuille.GetCellRangeByPosition(0,derLigne,902,derLigne)
destination = maFeuille.GetCellByPosition(0,1)
maFeuille.copyRange(destination.CellAddress, zoneAcopier.RangeAddress)
lesLignes = maFeuille.Rows
lesLignes.RemoveByIndex(derLigne,1)
monDocument.CalculateAll
End Sub
Code : Tout sélectionner
Sub CopieGomme
Dim Champs As Object, Calculs As Object
Dim MaZone As Object, MaCopie As Object, Gomme As Long
Champs = ThisComponent.sheets.getByName("Champs") 'Désignation de la feuille Champs
Champs.Rows.insertByIndex(2,1)'1) 'Insertion ligne
MaZone = Champs.getCellRangeByName("A2:AHR2") 'la zone à copier
MaCopie = Champs.getCellRangeByName("A3") 'la destination de la copie
Champs.copyRange(MaCopie.CellAddress, MaZone.RangeAddress ' la copie
MaCopie.cellbackcolor = -1 'la couleur d'arrière plan
End Sub
Je vous remercie pour votre aide.
Bonne journée à tous
Solaris