[Résolu][Calc] Afficher dernière ligne sur une autre feuille

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 !
Avatar de l’utilisateur
Zelada
InconditiOOnnel
InconditiOOnnel
Messages : 930
Inscription : 27 févr. 2013 14:55

[Résolu][Calc] Afficher dernière ligne sur une autre feuille

Message par Zelada »

Bonjour

Soit un bouton nommé "dernière vente effectuée" qui permet d'accéder à la feuille nommée "derniere_vente"

et qui affiche la dernière ligne saisie dans la feuille vente respectivement
'contenu de la cellule B de la feuille vente en G12 dans la feuille derniere_vente
'contenu de la cellule C de la feuille vente en G15 dans la feuille derniere_vente
'contenu de la cellule D de la feuille vente en E17 dans la feuille derniere_vente
'contenu de la cellule E de la feuille vente en H17 dans la feuille derniere_vente
'contenu de la cellule F de la feuille vente en E19 dans la feuille derniere_vente

J'arrive à trouver la dernière ligne saisie mais je n'arrive pas à afficher dans la feuille nommée"derniere_vente" , le contenu des cellules

Merci d'avance

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Zelada le 24 févr. 2014 11:05, modifié 2 fois.
LibreOffice 3.6.5.2 (version imposée) sous Windows XP SP3 au bureau
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Afficher dernière ligne saisie sur une autre feui

Message par Piaf »

Bonsoir
A tester

Code : Tout sélectionner

Sub AccederDerniereVente
Dim MonClasseur as Object
Dim MesFeuilles as Object
Dim MaFeuille1 as Object, MaFeuille2 As Object
Dim maZone as Object, derCellule as Variant, y as Integer
	MonClasseur = ThisComponent
	MesFeuilles = MonClasseur.Sheets
	MaFeuille1 = MesFeuilles.getByName("derniere_vente")
	MaFeuille2 = MesFeuilles.getByName(("vente")
	maZone = maFeuille2.getCellRangeByName("A2:A100")
	derCellule = maZone.queryEmptyCells.RangeAddresses
	y = derCellule(0).StartRow -1

' afficher la dernière ligne saisie dans la feuille Vente
	MsgBox "Dernière ligne saisie :  Ligne " & y

'afficher :
'contenu de la cellule B en G12 dans la feuille derniere_vente
	MaFeuille1.getCellRangeByName("G12").Value = MaFeuille2.getCellByPosition(1,y).Value
'contenu de la cellule C en G15 dans la feuille derniere_vente
'Je te laisse faire le reste
'contenu de la cellule D en E17 dans la feuille derniere_vente
'contenu de la cellule E en H17 dans la feuille derniere_vente
'contenu de la cellule F en E19 dans la feuille derniere_vente

End Sub
Attention au format de tes cellules !!! La date dans la feuille Vente était en texte.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Zelada
InconditiOOnnel
InconditiOOnnel
Messages : 930
Inscription : 27 févr. 2013 14:55

Re: [Calc] Afficher dernière ligne saisie sur une autre feui

Message par Zelada »

Bonsoir Piaf

Serais-tu me dire pourquoi mon code ne fonctionne pas ?
Cela m'aiderait à progresser

J'ai testé ton code et cela ne fonctionne pas, déjà il trouve la ligne 0

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 3.6.5.2 (version imposée) sous Windows XP SP3 au bureau
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Afficher dernière ligne saisie sur une autre feui

Message par Piaf »

Re
Le code trouve la ligne 0 car dans ton fichier la colonne Ecriture n'est pas renseignée.
Dernièrevente.png
Même chose dans le nouveau fichier et même remarque pour les dates.
Si la colonne Ecriture ne dois pas être renseignée, fais la recherche sur la deuxième colonne.
Si les dates sont en texte, mettre String à la place de Value
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Zelada
InconditiOOnnel
InconditiOOnnel
Messages : 930
Inscription : 27 févr. 2013 14:55

Re: [Calc] Afficher dernière ligne saisie sur une autre feui

Message par Zelada »

Bonjour

Merci Piaf

ok pour la date
J'ai procédé aux modifications et cela fonctionne mais :

La question étant d'afficher la dernière ligne saisie il faut donc trouver cette dernière ligne
Pourrait on m'expliquer pourquoi il est préférable d'utiliser ce code
bien évidemment la ligne MsgBox " Dernière ligne saisie..." est là uniquement pour vérifier que la macro fait bien son travail

Code : Tout sélectionner

Sub AccederDerniereVente
Dim MonClasseur as Object
Dim MesFeuilles as Object
Dim MaFeuille1 as Object, MaFeuille2 As Object
Dim maZone as Object, derCellule as Variant, y as Integer
   MonClasseur = ThisComponent
   MesFeuilles = MonClasseur.Sheets
   MaFeuille1 = MesFeuilles.getByName("derniere_vente")
   MaFeuille2 = MesFeuilles.getByName(("vente")
   maZone = maFeuille2.getCellRangeByName("A2:A100")
   derCellule = maZone.queryEmptyCells.RangeAddresses
   y = derCellule(0).StartRow -1

' afficher la dernière ligne saisie dans la feuille Vente
   MsgBox "Dernière ligne saisie :  Ligne " & y

end sub
plutôt que celui-ci (macro écrite dans mon premier fichier de ce message)

Code : Tout sélectionner

Sub AccederDerniereVente
Dim MonClasseur as Object
Dim MesFeuilles as Object
Dim MaFeuille1 as Object, MaFeuille2 As Object
Dim MonCurseur As Object
Dim oCel1 As Object, oCel2 As Object
MonClasseur = ThisComponent
MesFeuilles = MonClasseur.Sheets
MaFeuille1 = MesFeuilles.getByName("derniere_vente")

MaFeuille2 = MesFeuilles.getByName(("vente")
MonCurseur = MaFeuille2.createCursorByRange(MaFeuille2.getCellRangeByName("A1"))
MonCurseur.GotoEndOfUsedArea(False)
msgbox "La dernière ligne saisie est en " & MonCurseur.RangeAddress.EndRow +1

end sub 
Merci d'avance

A+
LibreOffice 3.6.5.2 (version imposée) sous Windows XP SP3 au bureau
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25994
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Afficher dernière ligne saisie sur une autre feui

Message par Dude »

Salut,

Ce sont deux manières de procéder pour arriver à la même conclusion.
Dans la 1ere, tu dois spécifier une plage.
Dans la 2e, une cellule de départ.
Il faudrait faire des tests si l'une est plus rapide que l'autre.
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 948
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Afficher dernière ligne saisie sur une autre feui

Message par luky-luke »

Bonjour
La bible a écrit : La méthode GoToEndOfUsedArea considère comme utilisée toute cellule comportant une valeur ou un texte ou une formule ou un formatage local (couleur, bordure...).
Il me semble aussi que le formatage conditionnel sur une cellule est considéré par la méthode comme cellule utilisée. À Vérifier.
L'autre inconvénient, si la méthode est incluse dans une boucle et que la propriété LockControllers (qui interdit toute intervention de l'utilisateur et gel les changements sur le document au cours de l'opération) est utilisée, la variable qui sert de résultat à la méthode GoToEndOfUsedArea ne se réinitialise pas.

J'espère ne pas avoir écris une bêtise :lol:
Cordialement
Luke
Dernière modification par luky-luke le 24 févr. 2014 13:39, modifié 1 fois.
LibO 7.4.7.2 Raspberry pi et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Zelada
InconditiOOnnel
InconditiOOnnel
Messages : 930
Inscription : 27 févr. 2013 14:55

Re: [Calc] Afficher dernière ligne saisie sur une autre feui

Message par Zelada »

Salut Dude

merci !

Etant donné que Piaf avait modifié le code, sur le coup je pensais que "ma macro" n'était pas "conforme" même si le résultat (affichage de la ligne dans boite de dialogue) escompté était bon

OK je peux donc mettre Résolu

A+
 Ajout : 12:03 
merci pour ces précisions luky-luke :wink:
 Ajout : 12:20 
je mets le fichier au cas où cela pourrait servir à quelqu'un
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 3.6.5.2 (version imposée) sous Windows XP SP3 au bureau