IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Récupération Fin de ligne


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 370
    Points : 251
    Points
    251
    Par défaut Récupération Fin de ligne
    Bonjour,
    J'ai le code ci-dessous que je voudrais modifier.
    Je ne veux pas changer ce qu'il fait mais comment il le fait.

    Actuellement, j'ai plusieurs macros que je lance et qui utilise cette fonction. Je voudrais donc pouvoir passer la feuille ou le nom de la feuille don je veux la dernière ligne et la colonne a tester en tant qu'argument. De plus, je ne veux pas voir le changement de feuille comme à présent.
    Comment faire?

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Function finligne (feuille as String)
    Dim colonne as string
    rem ----------------------------------------------------------------------
    rem define variables
    dim document as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    dim lesFeuilles as Object
    dim monDocument as Object
    monDocument = ThisComponent
    lesFeuilles = monDocument.Sheets
    ThisComponent.CurrentController.Select( lesFeuilles.getByName(feuille))
    Select case feuille
    case "csv70043"
        colonne="$AB$2"
    case "Feuil1"
        colonne="$A$2"
    case "BIC"
        colonne="$A$2"
    case "Banque"
        colonne="$A$2"
    end Select
    document = ThisComponent.CurrentController.Frame
    'document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "ToPoint"
    args1(0).Value = colonne
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dim args2(1) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "By"
    args2(0).Value = 1
    args2(1).Name = "Sel"
    args2(1).Value = false
     
    dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args2())
     
    end Function
    Merci

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Bonjour,

    Vous voulez retrouver la dernière ligne d'une colonne spécifique ou la dernière ligne/colonne d'une feuille ?
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    pour trouver la dernière cellule non vide d'une colonne tu peux faire comme cela aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub MaFinLigne2(NumColonne as integer,MaFeuille as String)
    ' J.P Janvier 2015
    dim oSheet as Object,  oFinder As Object, oResult as Object, oCurrentController as Object
    dim oColumn As Object, oCellRange As Object, oLastCell as Object
    oSheet = ThisComponent.Sheets.getByName(MaFeuille)
      '------- Recherche -------
       oColumn = oSheet.Columns(NumColonne)
       oFinder = oColumn.createSearchDescriptor
       oFinder.searchRegularExpression = true
       oFinder.SearchString = "."
       oResult = oColumn.FindAll(oFinder)
       '------- Le résultat contient les plages "non vide"  -------
       If Not IsNull(oResult) then
          'on prend les index de la dernière cellule de la dernière plage
          LastRangeNumber = ubound(oResult.RangeAddresses)
          colNumber = oResult.RangeAddresses(LastRangeNumber).EndColumn
          rowNumber =  oResult.RangeAddresses(LastRangeNumber).EndRow
          oLastCell =  oSheet.GetCellByPosition(colNumber ,rowNumber)
          oCurrentController = ThisComponent.getCurrentController()
          oCurrentController.select(oLastCell)
        End If
    End Sub
     
     
    Sub Macro3 
    ' 0 = colonne A - 1 = colonne B , 
    Mafinligne2(1,"csv70043")
    end Sub
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 370
    Points : 251
    Points
    251
    Par défaut
    Bonjour,

    Je veux la dernière ligne d'une colonne spécifique.

    Comment faire pour que la fonction me retourne la position de la dernière ligne?

    Cordialement,

    vandman

  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Il faut adapter le code de jurassic pork :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub MaFinLigne2(NumColonne as integer,MaFeuille as String) As Integer
    ' J.P Janvier 2015
    dim oSheet as Object,  oFinder As Object, oResult as Object, oCurrentController as Object
    dim oColumn As Object, oCellRange As Object, oLastCell as Object
    oSheet = ThisComponent.Sheets.getByName(MaFeuille)
      '------- Recherche -------
       oColumn = oSheet.Columns(NumColonne)
       oFinder = oColumn.createSearchDescriptor
       oFinder.searchRegularExpression = true
       oFinder.SearchString = "."
       oResult = oColumn.FindAll(oFinder)
       '------- Le résultat contient les plages "non vide"  -------
       If Not IsNull(oResult) then
          'on prend les index de la dernière cellule de la dernière plage
          LastRangeNumber = ubound(oResult.RangeAddresses)
          colNumber = oResult.RangeAddresses(LastRangeNumber).EndColumn
          rowNumber =  oResult.RangeAddresses(LastRangeNumber).EndRow
          oLastCell =  oSheet.GetCellByPosition(colNumber ,rowNumber)
          oCurrentController = ThisComponent.getCurrentController()
          oCurrentController.select(oLastCell)
        End If
       Mafinligne2 = rowNumber + 1 'pour avoir le même numéro que la dernière ligne d'affichage
    End Sub
     
     
    Sub Macro3 
    ' 0 = colonne A - 1 = colonne B , 
    Msgbox Mafinligne2(1,"csv70043")
    end Sub
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

Discussions similaires

  1. [JDOM] caractère unicode de fin de ligne
    Par iceman dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 31/03/2009, 03h15
  2. Fin de ligne dans un fichier
    Par Neekow dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2005, 19h54
  3. [C#] Récupération d'une ligne d'un DataView en c#
    Par jerome456 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 20/01/2005, 09h29
  4. Réponses: 2
    Dernier message: 06/12/2004, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo