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 :

[Macro] Créer une fonction qui renvoit une plage [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre régulier
    Avatar de madvic
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Mai 2003
    Messages : 101
    Points : 92
    Points
    92
    Par défaut [Macro] Créer une fonction qui renvoit une plage
    Bonjour,

    Je souhaite créer une fonction qui me renvoit une plage, la voici simplifier pour le forum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function PlageRecherche()
    	Dim Feuille as object
    	Feuille = ThisComponent.Sheets.getByName( "test" )
    	PlageRecherche= Feuille.getCellRangeByPosition( 0, 1, 2, 33 )
    End function
    Maintenant je souhaite l'utiliser dans mon tableur, voici un copie d'écran qui montre l’utilisation de RECHERCHEV puis de remplacer la plage "matrice" par ma fonction :
    Nom : Capture.PNG
Affichages : 288
Taille : 18,3 Ko

    On remarque que l'objet "plage" renvoyé dans RechercheV ne fonctionne pas (err 504).
    Comment traduire cet objet en donnée matrice pour la fonction RechercheV ?

    Pourtant la fonction RECHERCHEV utilisé dans les macro prend bien en compte l'objet "plage".

    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 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    C'est normal que cela ne fonctionne pas, car l'utilisation d'une fonctionne te ramène une valeur numérique ou textuelle), mais pas une plage.
    Soit, dans ce cas, il faut faire la formule dans la macro et ne récupérer que la valeur :
    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
    function PlageRecherche() as String
        Dim monDocument As Object
        Dim lesFeuilles as Object
        Dim maFeuille As Object
        Dim maCellule1 As Object, maCellule2 As Object
        Dim Valeur1 As string, Valeur2 As String
        monDocument = ThisComponent
        lesFeuilles = monDocument.Sheets
        maFeuille = lesFeuilles.getByName("Feuille1")
        maCellule1 = ThisComponent.CurrentSelection
        maCellule2 = maFeuille.getCellRangeByName("E1")
        Valeur1 = maCellule2.Value
        for i = 1 to 33
            maCellule2 = maFeuille.getCellByPosition(0, i)
            Valeur2 = maCellule2.Value
            if Valeur1 = Valeur2 then
                maCellule2 = maFeuille.getCellByPosition(1, i)
                maCellule1.Value = maCellule2.String
            end if
        next
    End function
    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
    Membre régulier
    Avatar de madvic
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Mai 2003
    Messages : 101
    Points : 92
    Points
    92
    Par défaut
    Merci pour té réponse.
    Je suis très étonné que l'on ne puisse pas récupéré une plage.
    Effectivement en attendant, j'ai du passé par là pour continuer mon dev.
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2015, 14h47
  2. Comment créer un bloc qui utilise une fonction MATLAB
    Par Suzuki3694 dans le forum Simulink
    Réponses: 6
    Dernier message: 18/07/2011, 09h54
  3. Réponses: 1
    Dernier message: 12/12/2007, 13h38
  4. Changer une fonction qui utilise une liste par un tableau!
    Par sara21 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 13h18
  5. Réponses: 15
    Dernier message: 26/03/2006, 12h10

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