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 :

Insérer du contenu par macro sous condition


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 38
    Points : 48
    Points
    48
    Par défaut Insérer du contenu par macro sous condition
    Bonjour,

    je suis bloqué dans la mise au point d'une macro, par méconnaissance du oBasic* et par un raisonnement fautif.

    Soit un classeur de suivi de dépenses.
    Dans la colonne 'NATURE', je recopie vers le bas la formule qui permet d'afficher 'Débit' ou 'Crédit'. L'action est déclenchée lors de l'enregistrement du classeur.
    Or, actuellement, la recopie se produit indéfiniment. C'est moche et ça produit des biais dans les Tables de pilote.

    Je voudrais donc éviter que la recopie se produise plus bas que la dernière ligne du tableau.

    Ci-dessous la macro qui gère la recopie
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    sub insertnatureformule
     
    rem ------------------define variables---------------------------------
    dim document   as Object
    dim dispatcher as object
    	rem ----------------------------------------------------------------------
     
    rem get access to the document
    	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 = "tetenature" rem "$J$1"
     
    	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())
    rem -------repérer la ligne de la cellule active
     Dim CelluleActive As Object, LigneCelluleActive As Variant
     
      CelluleActive = ThisComponent.getCurrentSelection
      LigneCelluleActive= CelluleActive.CellAddress.Row
     
    	rem ----------------------------------------------------------------------
    dim args3(0) as new com.sun.star.beans.PropertyValue
    	args3(0).Name = "By"
    	args3(0).Value = 1
    	rem dispatcher.executeDispatch(document, ".uno:GoUpSel", "", 0, args3())
    	dispatcher.executeDispatch(document, ".uno:GoDownSel", "", 0, args3())
     
    	rem ----------------------------------------------------------------------
    	dispatcher.executeDispatch(document, ".uno:JumpToNextUnprotected", "", 0, Array())
     
     
    	rem ----------------------------------------------------------------------
    	dispatcher.executeDispatch(document, ".uno:FillDown", "", 0, Array())
     
    	rem ----------------------------------------------------------------------
    dim args4(1) as new com.sun.star.beans.PropertyValue
    	args4(0).Name = "By"
    	args4(0).Value = 1
    	args4(1).Name = "Sel"
    	args4(1).Value = false
     
    	dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args4())
     
    end Sub
    Merci de me mettre le nez sur mes erreurs.

    *je commence toujours par l'enregistreur, puis je nettoie, j'ajoute des bourdes, je teste pas à pas.
    Fichiers attachés Fichiers attachés

  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
    Salut,

    Une idée serait peut-être d'aller chercher la dernière cellule non vide de l'onglet, ensuite dans ta macro de mettre une filtre que si cette ligne est passée, le code s'arrête.

    Cdlt.
    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. Insérer Formule somme par macro
    Par joums dans le forum Conception
    Réponses: 21
    Dernier message: 21/10/2009, 12h11
  2. Réponses: 0
    Dernier message: 05/08/2009, 12h49
  3. Utiliser les blocs de construction par macro sous Office 2007
    Par zigo34 dans le forum Général VBA
    Réponses: 1
    Dernier message: 05/08/2009, 12h35
  4. [AC-97] Macro sous condition
    Par julio79 dans le forum IHM
    Réponses: 0
    Dernier message: 28/05/2009, 18h17
  5. Contenu des macros sous VBA
    Par NOODLE02 dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/05/2007, 09h52

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