[Résolu][Calc]Couper la dernière ligne ayant une valeur

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Solaris
Membre hOOnoraire
Membre hOOnoraire
Messages : 146
Inscription : 02 août 2017 21:55

[Résolu][Calc]Couper la dernière ligne ayant une valeur

Message par Solaris »

Bonjour,

Je voudrais savoir s'il possible d'avoir une macro qui coupe une ligne pour la coller sur une autre (en l'espèce la 2) (ça je vois à peu près comment faire) mais avec la difficulté que la ligne coupée sera la dernière ligne donc la colonne a une valeur (la colonne A est au format texte si ça importe).
Il y a des formules tant sur la ligne de départ qu'à l'arrivée et je peux les garder (je ne veux pas copier que le résultat)

Je vous joins un extrait de fichier : je veux donc couper au niveau de la feuille champs (la dernière ligne dont la colonne A a eu une valeur) pour le coller sur la ligne 2.

Comme puis-je faire svp?

Merci bcp!!
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Solaris le 09 avr. 2018 12:00, modifié 1 fois.
Libre office 7.3.2.2
Windows 11
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc]Couper la dernière ligne ayant une valeur

Message par OOotremer971 »

Dans le fichier joint, un bouton supplémentaire pour déplacer la dernière ligne de la feuille champs dont la colonne A n'est pas vide. Ce même bouton actualise le formulaire et la couleur de fond des contrôles.

En réalité, la dernière ligne n'est pas déplacée mais seulement copiée, puis la dernière ligne supprimée, car pour une raison que j'ignore, moveRange (pour déplacer la ligne) ne permet pas l'actualisation des formules alors que copyRange (pour copier la ligne) le permet :roll:

A tester donc :

Je pense à un truc tout con en rédigeant, lorsque tu disais utiliser plusieurs événement d'un même bouton pour déclencher plusieurs macro à partir de ce même bouton. Il suffit d'appeler les autres macros à partir de la macro appelée par le bouton comme dans celle-ci à l'avant dernière ligne, où j'appelle la macro qui actualise les fonds de contrôles :

Code : Tout sélectionner

Sub DeplacerDerLigne()
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,200,derLigne)
destination = maFeuille.GetCellByPosition(0,1)
maFeuille.copyRange(destination.CellAddress, zoneAcopier.RangeAddress)
lesLignes = maFeuille.Rows
lesLignes.RemoveByIndex(derLigne,1)
monDocument.CalculateAll
ActualiseArrierePlan()
End Sub
du coup, lorsque la macro DeplacerDerLigne est terminée, c'est ActualiseArrierePlan() qui est exécutée.
Pour finir, tu ne précise pas la largeur de la zone à copier (en nombre de colonne) j'ai mis 200 colonnes au hasard.

@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Solaris
Membre hOOnoraire
Membre hOOnoraire
Messages : 146
Inscription : 02 août 2017 21:55

Re: [Calc]Couper la dernière ligne ayant une valeur

Message par Solaris »

C'est top!!! merci bcp
Libre office 7.3.2.2
Windows 11