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 :

Sélection d'une zone dynamique avec calc


Sujet :

OpenOffice & LibreOffice

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 30
    Points
    30
    Par défaut Sélection d'une zone dynamique avec calc
    Bonjour,

    Dans la macro suivante je sélectionne une zone de tableau dynamique qui doit être utilisée pour paramétrer la plage d'un diagramme. Cette zone contient la colonne total à droite et la ligne total en bas. La sélection ne doit pas les sélectionner, donc elle raffecte la valeur de l'étendue en diminuant zone.RangeAddress.EndColumn et zone.RangeAddress.EndRow d'une unité. Mais cela ne fonctionne pas... et je ne comprends pas la raison !

    Merci pour votre aide.


    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
    Function zoneDynamique(cellule As String) As Object
    	Dim monDocument As Object
    	Dim feuilleActive As Object
    	Dim curseur As Object
    	Dim topLeft As Object
    	Dim unBord As New com.sun.star.table.BorderLine
            Dim zone As Object
    	Dim aname As String
     
    	monDocument = ThisComponent
    	feuilleActive = monDocument.CurrentController.ActiveSheet
    	topLeft = feuilleActive.getCellRangeByName(cellule)
    	curseur = feuilleActive.createCursorByRange(topLeft)
    	curseur.gotoEndOfUsedArea(True)
    	zone = feuilleActive.getCellRangeByName(curseur.AbsoluteName)
    	Rem supression des lignes des totaux
    	'if ((zoneDynamique.RangeAddress.Columns > 1) and (zoneDynamique.RangeAddress.Rows >1)) then
    	aname = zone.AbsoluteName
    		with zone.RangeAddress
    			.StartColumn = 0 
       			.EndColumn = .EndColumn - 1
       			.StartRow =  .StartRow + 1
    			.EndRow = .EndRow - 1					
    		end With
    		aname = zone.AbsoluteName
     
    		'Coloration des zones		
    		topLeft.CellBackColor = RGB(200,0,0)
    		With unBord
    			.Color = RGB(200,0,0)
    			.outerLineWidth = 100		    		    
    		    topLeft.LeftBorder = unBord
    		    topLeft.RightBorder = unBord
    		    topLeft.TopBorder = unBord
    		    topLeft.BottomBorder = unBord
    		End With	
    		zone.CellBackColor = RGB(0,100,0)		
    		zoneDynamique = zone
    	'endif
    End Function

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

    il faut remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    aname = zone.AbsoluteName
            with zone.RangeAddress
                .StartColumn = 0 
                   .EndColumn = .EndColumn - 1
                   .StartRow =  .StartRow + 1
                .EndRow = .EndRow - 1                    
            end With
            aname = zone.AbsoluteName
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zone = feuilleActive.getCellRangeByPosition(0,zone.RangeAddress.StartRow +1 , zone.RangeAddress.EndColumn -1, zone.RangeAddress.EndRow - 1)
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 30
    Points
    30
    Par défaut
    OK, super merci ! Cela ne me permets pas encore de comprendre pourquoi ma méthode ne fonctionnait pas... mais l'essentiel est que cela fonctionne ! Encore merci :-)

  4. #4
    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
    Citation Envoyé par gelinp Voir le message
    OK, super merci ! Cela ne me permets pas encore de comprendre pourquoi ma méthode ne fonctionnait pas... mais l'essentiel est que cela fonctionne ! Encore merci :-)
    Le code que tu as saisi ne délimiter pas une zone, mais te positionner sur une zone.
    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. Sélection d'une feuille excel avec une listbox
    Par felibelle dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/07/2022, 17h27
  2. Problème avec la multi-sélection dans une zone de liste
    Par Mimisio dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/07/2007, 16h23
  3. Comment fermer une fenêtre dynamique avec onclose
    Par nopnop dans le forum Delphi
    Réponses: 23
    Dernier message: 18/07/2006, 18h08
  4. Generer une table d'une facon dynamique avec hibernate
    Par oughlad dans le forum Hibernate
    Réponses: 6
    Dernier message: 12/07/2006, 15h57
  5. [VB6]Colorier une zone (carrée) avec l'objet printer.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 24/05/2006, 21h03

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