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 :

Programme Basic avec bug [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Candidat au Club
    Homme Profil pro
    Géomètre
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Programme Basic avec bug
    Bonjour,

    Je fais actuellement une petite macro sous le tableur LibreOffice qui devrait me permettre de créer des feuilles ou de les supprimer selon un choix dans une liste. J'ai donc créé une procédure "SUB" que voici :

    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
    sub cree_region(a as Boolean, i as integer, nom as string)
    'fonction qui crée une feuille pour une région volée
     
    Dim oDoc As Object
     
    oDoc=ThisComponent
     
    if a=true then 'on vérifie si on souhaite avoir une feuille
    	if oDoc.Sheets.hasByName(nom$) then 'on vérifie si la feuille existe
     
    		'Supprime la feuille nommée "nom"
    		oDoc.GetSheets.RemoveByName(nom$)
     
    		'Ajoute une feuille, la nomme et place l'onglet en ieme position
    		oDoc.GetSheets.insertNewByName(nom$,i%)
     
    	else
     
    		'Ajoute une feuille, la nomme et place l'onglet en ieme position
    		oDoc.GetSheets.insertNewByName(nom$,i%)
     
    	end if
     
    else
     
    	if oDoc.Sheets.hasByName(nom$) then 'on vérifie si la feuille existe
     
    		'Supprime la feuille nommée "nom"
    		oDoc.GetSheets.RemoveByName(nom$)
     
    	end if
     
    end if
     
    end sub
    et une autre procédure "FUNCTION" que j'appelle dans une cellule et qui fait appel à la procédure SUB. La cellule lit d'autres cellules (dont la liste) pour envoyer les paramètres à la fonction. Voici la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function couic(nb as string, nom as string, i as integer) as string
     
    dim a as boolean
    if nb$="Aucun" then
    	a=0
    	couic$=""
    else
    	a=1
    	couic$=nom$
    end if
     
    cree_region(a,i%,nom$)
     
    end function
    Le problème c'est que lors du changement de choix dans la liste, les onglets sont bien créés ou supprimés mais la feuille contenant la cellule qui appelle la fonction se retrouve protégée. J'ai donc déplacé cette cellule dans une autre feuille, ce qui me permet de continuer d'utiliser la feuille qui contient les listes mais en ayant un message d'erreur à chaque changement de choix. Il faut aussi dire que lorsque je lance le programme depuis la fenêtre de macro (sans appel depuis une cellule), rien ne bug et tout marche parfaitement. En fermant le fichier et en le ré-ouvrant, la feuille n'est plus verrouillée, mais un message d'erreur sur le programme apparaît pour chaque cellule contenant la fonction, donc 22 messages d'erreur identiques apparaissent à l'ouverture du fichier.

    Je joins également le document, je remercie d'avance tous ceux qui se pencheront sur la question, sachant que je ne suis qu'un amateur et que ce n'est pas mon métier, même si là, il se trouve que j'ai besoin de ça pour le travail...
    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 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Le fichier ne contient pas les macros, c'est normal

    Comment est appelé ta macro couic ?

    @+.
    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
    Candidat au Club
    Homme Profil pro
    Géomètre
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Re-fichier
    Je pense avoir mis la macro dans le fichier, le problème maintenant c'est qu'il m'a désactivé les macros et je ne sais pas du tout comment les réactiver, je n'ai pas trouvé sur internet, je ne comprends pas, ça devrait être simple...

    Je joins quand même le fichier.

    La fonction couic est appelée dans une cellule ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =COUIC('Base Dpts - Régions'.G2;'Base Dpts - Régions'.E2;1)
    Merci de répondre si vite !
    Fichiers attachés Fichiers attachés

  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
    Dans ce paragraphe, tu trouveras des infos sur la sécurité des macros

    @+.
    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

  5. #5
    Candidat au Club
    Homme Profil pro
    Géomètre
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'avais vu ça mais ça n'a pas permis de refaire marcher les macros. Bref j'ai repris le fichier depuis une version antérieure. Mais bon, tout ça ne résout pas mon problème de départ. J'espère qu'avec le fichier contenant la macro, tu pourras mieux m'aider.

    Merci beaucoup de ta patience

  6. #6
    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
    Comment as-tu défini tes listes en G

    @+.
    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

  7. #7
    Candidat au Club
    Homme Profil pro
    Géomètre
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Avec le menu Données -> Validité. : Autoriser -> Plage de cellules.
    La plage étant dans une feuille différente.

  8. #8
    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,

    Tu peux créer un bouton, qui appellera la macro suivante :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function zoom61()
    	NomFeuille = thisComponent.getCurrentController().getActiveSheet()
    	Ligne = thisComponent.currentSelection.cellAddress.row
    	Val1 = NomFeuille.GetCellRangeByName("G" & ligne + 1).string
    	Val2 = NomFeuille.GetCellRangeByName("E" & ligne + 1).string
    	Val3 = thisComponent.Sheets.Count
    	couic(Val1 , Val2 , Val3)
    end function
    Cette dernière récupère les infos de la position et ensuite exécute ton code.

    @+.
    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

  9. #9
    Candidat au Club
    Homme Profil pro
    Géomètre
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Excuse-moi, je ne comprends pas... Ca récupère quelle position ?
    Je mets ce bouton à la place de quoi ? Car je ne vois pas le rapport avec la liste. je suis désolé mais c'est vraiment flou pour moi ce bouton.

    Je ne reviendrai que lundi, je te souhaite un bon week-end. Merci encore.

  10. #10
    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 que tu crées un bouton sur ta page. Ensuite, tu affectes le bout de code que j'ai donné à ce bouton. Ensuite, tu te mets sur la ligne que tu veux tester, et cela récupèrera la ligne, et cela exécute ensuite ton code.

    @+.
    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

  11. #11
    Candidat au Club
    Homme Profil pro
    Géomètre
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ceci semble marcher, du coup ça veut dire que je suis obligé de passer par un bouton ? Dans ce cas, tant pis, j'adapterai l'interface lol. Si tu peux me dire s'il y a moyen sans le bouton, en tout cas merci beaucoup !

  12. #12
    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
    A tester en mettant le code dans une cellule , je ne sais pas quel est le but final de ton fichier, si le code doit s'exécuter à chaque ouverture du fichier, à chaque modif d'une cellule, etc.

    @+.
    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

  13. #13
    Candidat au Club
    Homme Profil pro
    Géomètre
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Il aurait fallu à chaque changement dans la liste. Mais ça ira comme ça je pense. Merci beaucoup de nouveau. Bonne continuation !

  14. #14
    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
    Tu peux mettre que sur chaque changement contenu modifié cela exécute la macro (clic-droit sur le nom de l'onglet : Évènements de la 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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/03/2008, 10h30
  2. [XSL~FO] images cliquables avec basic-link...bug?
    Par JMLLB dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 06/04/2007, 16h57
  3. programme C++ avec shell
    Par I_believe_I_can_fly dans le forum C++
    Réponses: 11
    Dernier message: 24/10/2005, 17h08
  4. comment deployer un programme fait avec jbuilder
    Par showmetheway dans le forum JBuilder
    Réponses: 6
    Dernier message: 23/09/2003, 01h11
  5. Programmation WEB avec delphi
    Par mayoguy dans le forum Web & réseau
    Réponses: 4
    Dernier message: 20/08/2002, 19h03

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