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 :

Rapidité de calculs


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut Rapidité de calculs
    Bonjour à tous,

    Je bosse sur un projet un peu particulier.
    L'objectif est de suivre l'utilisation des prairies sur une exploitation agricole.
    L'ouvrier agricole saisit dans la feuille Dates Interventions la parcelle utilisée, la date d'entrée et de sortie des animaux et la raison pour lesquelles il a fait ces manipulations. Les listes déroulantes sont construites à partir des informations saisies dans la feuille Informations.
    Pour rendre les listes déroulantes et les fonctions évolutives, j'ai utilisé des plages dynamiques créées avec la fonction décaler.

    La feuille planning 2015, regroupe les interventions réalisées au cours de l'année avec les contraintes suivantes :
    - en début d'utilisation d'une prairie, on remplace la raison d'entrée saisie dans la feuille Dates Intervention par un code (lettre de A à ...). De même pour la sortie mais avec des chiffres. On colorie la période d'utilisation.
    - une prairie peut-être utilisée qu'une seule journée, j'ai du donc partagé une journée en 2 pour avoir la raison d'entrée et la raison de sortie.
    - pour me simplifier la création de cette feuille, j'ai laissé tomber les 29 février à cause des cellules fusionnées correspondant au mois.

    Tout ça, c'est pour planter le décor car je m'en suis sorti avec mes notions de formules, qui sont sans doutes compliquées.

    Ma question est : pourquoi ça rame autant? Dès que je veux faire une modification, ça prend des plombes! Dans le fichier de démo, j'ai mis 5 parcelles. Il va y en avoir en tout 18...
    Je sais bien que cela fait beaucoup de formules mais quand même...
    Du coup, est-ce possible d'optimiser les temps de calculs en revoyant mes formules qui ne sont peut-être pas optimales ?
    Vaut-il mieux plusieurs feuilles qui font des petits calculs ou une seule avec mes grosses formules ?

    En attendant de vous lire avec impatience pour en apprendre plus grâce à vous.

    Bonne journée.

    Xavier
    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 609
    Points
    58 609
    Billets dans le blog
    11
    Par défaut
    Il n'existe pas de moyen d'accélérer les calculs, sauf de les faire à la demande.
    Mais ce genre d'application ne serait-elle pas mieux à faire sous une application Base ?
    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 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    hello,
    effectivement , il y a énormément de formules dans ton classeur sur la feuille 2.
    Une solution possible sans utiliser de formules sur la feuille 2 :
    1 - Mettre un "Listener" sur les cellules de la feuille 1 à l'ouverture du classeur.
    2 - Ecrire une macro en basic qui met à jour les cellules de la feuille 2 dès qu'il y a une modification dans une cellule de la feuille 1.
    Bien sur le plus difficile c'est la macro en basic.
    On devrait s'en sortir en utilisant datediff pour trouver les colonnes à modifier par rapport aux dates entrée sortie ( du genre col = 3 + datediff("d","1/01/2015",datemodifée)*2)

    La ligne à modifier est fonction du nom de parcelle.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Merci pour vos réponses.

    A zoom61, je ne vois pas comment base va pouvoir me faire le rendu de la feuille planning. Je trouve que la saisie des informations est suffisamment simple pour ne pas avoir à faire un formulaire avec base. Après, si tu as une solution pour avoir faire la feuille planning avec base, je suis preneur pour savoir comment on fait.

    A jurassic pork, c'est la solution que je commençais à envisager. Je ne maîtrise absolument pas les macros de libre office. Autant, Excel, pas de soucis et je n'aurais même pas fais de formules pour le planning mais tout en VBA, par contre, là, je sèche...

    Je viens tout juste de commencer.
    Je pars du principe que je ne vais actualiser le planning que si j'affiche la feuille planning. Donc, avec le script suivant trouvé ici, je sais si l'utilisateur change de feuille.
    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
    Global oListener As Object  
    Global oClasseur As Object  
     
    Sub lancement_GestionEvenement_SheetChange  
      oClasseur = ThisComponent 
     
      oListener = createUnoListener( "Classeur_" , "com.sun.star.beans.XPropertyChangeListener" )  
      oClasseur.CurrentController.addPropertyChangeListener( "ActiveSheet" , oListener )  
    End Sub  
     
    Sub Classeur_PropertyChange(oEvent)  
       MsgBox oEvent.Source.ActiveSheet.Name 
    End Sub 
     
    Sub Arret_GestionEvenement_SheetChange  
      oClasseur.CurrentController.removePropertyChangeListener( "ActiveSheet" , oListener )  
    End Sub
    Pour que la macro soit effective dès le chargement du document, je l'ai assigné à l'évènement Ouvrir le document. OK. Mais je ne comprends pas trop son fonctionnement et la MsgBox qui apparaît, apparaît 2 fois à chaque changement de page. Pourquoi 2 fois?

    Pour la suite et le code en basic, je vais y réfléchir à partir d'aujourd'hui. Je mettrais mes différentes évolutions et blocage pour que cela puisse servir à d'autres.
    Voici donc une version sans formule mais avec macros dont celle chargée de la surveillance du changement de feuille.
    Fichier : PP-Macros-2015-03-13-V1.ods
    J'ai conservé les listes dynamiques et la structure des feuilles.
    J'ai ajouté à la procédure lancement_GestionEvenement_SheetChange le code suivant pour sélectionner automatiquement à l'ouverture la feuille Dates Interventions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      Dim Feuille As Object
     
      oClasseur = ThisComponent
     
      'Sélection de la feuille Dates interventions comme active à l'ouverture
    	Feuille = ThisComponent.Sheets(0) 
    	oClasseur.CurrentController.ActiveSheet = Feuille
    Si quelqu'un peut m'expliquer pourquoi la msgbox apparaît 2 fois, je suis preneur.

    A très vite,
    Xavier
    Fichiers attachés Fichiers attachés

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    hello,
    un petit conseil xavllo58, mets tes macros dans un module de ton classeur et pas dans standard module sinon ton code ne sera pas disponible si tu postes ton fichier ici.
    Outils/Macros/Gérer les macros/LibreOffice Basic Tu cliques sur ton classeur et tu crées un nouveau module et tu mets ton code dedans.

    Ami calmant J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Un peu de stress... J'ai fait quelques modifications. Je change d'ordi sur le réseau et là plus rien!!!!
    Les macros étaient enregistrées dans Mes macros et non le fichier comme Jurassic Pork vient de l'écrire.
    Je viens de modifier pour insérer mes macros dans mon fichier mais je ne peux plus assigner une macro à l'ouverture... Du coup, comment faire ?

    Je mettrais mon fichier un peu plus tard, j'ai encore quelques modifications, notamment l'exécution à l'ouverture!

    Xav

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    Pour mettre en "écoute" certaines cellules de la feuille1 tu peux faire ceci par exemple :
    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
    Global oListener As Object  
    Global oListener2 As Object  
    Global oClasseur As Object  
    Global oSheet1Cell as Object
     
    Sub lancement_GestionEvenements
      oClasseur = ThisComponent 
     
      oListener = createUnoListener( "Classeur_" , "com.sun.star.beans.XPropertyChangeListener" )
      oListener2 = CreateUnoListener( "Classeur_", "com.sun.star.util.XModifyListener" )
     
      oClasseur.CurrentController.addPropertyChangeListener( "ActiveSheet" , oListener ) 
      oSheet1Cell = Thiscomponent.sheets(0).getcellrangebyname("A2:E24") 
      oSheet1Cell.addmodifylistener(oListener2)
    End Sub  
     
    Sub Classeur_PropertyChange(oEvent)  
       MsgBox oEvent.Source.ActiveSheet.Name 
    End Sub 
     
     
     ' Add this to the Document is going to be closed event
     Sub Remove_Listener
       ' removes the listener
       oSheet1Cell.removemodifyListener(oListene2)
     End Sub
     
     Sub Classeur_disposing(oEvent)
     REM   All listeners must support this event:
       ' msgbox "disposing of the listener"
     End Sub
     
    Sub Classeur_Modified(oEvent)
    	Dim oSheets as Object
    	Dim oSheet as Object
    	Dim oRange as Object
    	Dim oCell as Object
    	Dim oCellUpdate as Object
    	Dim oCellReference as Object
    	Dim sAddress as Variant
    	Dim sValue as string
    	MsgBox "Cellule Modifiee"
    End Sub
    Pour que la macro ne soit exécutée que pour l'ouverture de ton document :
    Outils/Personnaliser onglet Evénements / ouvrir le document --> affecter sa macro

    et surtout le truc important en bas de la fenêtre dans enregistrer dans : choisir son classeur et pas LibreOffice.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Hello,

    Merci pour toutes tes infos.

    Je mets tout ça en place lundi et je fais un point sur ma démarche pour confirmer (ou non) l'orientation choisie.

    Encore merci et bon week-end

    Xav

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous,

    Voici la version du jour pour mon planning. Cela fonctionne et c'est satisfaisant pour un début.

    Ma démarche :
    - les informations sont saisies dans la feuille Dates Interventions.
    - il faut cliquer sur Actualiser le planning et celui-ci se fait et s'affiche.

    Pour réaliser tout ça, j'ai fait plusieurs macros :
    - une procédure qui liste les dates des interventions de la feuille de saisie.
    - une fonction qui calcule le numéro des colonnes des différentes dates,
    - des fonctions qui donnent le code à afficher à partir de l'intitulé des raisons d'entrées et de sorties.
    - les couleurs sont toujours gérées par la mise en forme conditionnelle.

    Un peu d'autosatisfaction : je suis content de moi !

    Mais il reste encore pas mal de chose à faire :
    - à l'ouverture du fichier, je n'arrive pas à affecter une macro du fichier. Je peux assigner les macros contenues dans Mes Macros ou celles de LibreOffice mais pas d'autres.
    - je vais sans doute utiliser la technique de Jurassic Pork pour la surveillance des cellules et non des feuilles, cette dernière ne fonctionnant pas (j'avoue mon ignorance sur l'utilisation des outils de modifications...).
    - Adapter encore plus les fonctions pour qu'elles soient fonctionnelles dans le temps : vérification de l'existence des feuilles en fonction de l'année et création de feuilles nécessaires à partir d'une feuille type, numéro de la dernière ligne et dernière colonne automatique... et plein d'autres choses que je n'ai pas encore en tête.

    Toutes remarques étant bonnes à prendre, je les attends avec impatience.

    En attendant de vous lire, bonne journée

    Xavier
    Fichiers attachés Fichiers attachés

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    hello,
    tu as écrit :
    à l'ouverture du fichier, je n'arrive pas à affecter une macro du fichier. Je peux assigner les macros contenues dans Mes Macros ou celles de LibreOffice mais pas d'autres.
    Quelle version de LibreOffice utilises-tu ?
    Moi je suis en 4.3.5 et quand j'ouvre ton fichier et que je sélectionne le menu Outils/Personnaliser... onglet Evénements Pour l'événement Ouvrir le document je peux bien lui assigner une macro qui se trouve dans le module Module1 du classeur PP-Macros-2015-03-16-V2.ods. Peut-être un problème de droits ou de configuration LibreOffice.

    En pièce jointe je te mets un exemple de gestion de cellules avec Maj du planning. Dans le planning j'ai enlevé les formatages conditionnelles qui ralentissaient un peu le traitement. Je gère le formatage par macro. Il y a une macro qui met à jour tout le planning et une autre seulement la parcelle modifiée. Tu me diras si dans ce fichier il y a bien une macro assignée à ouvrir le document.
    Fichiers attachés Fichiers attachés
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup pour toutes tes modifications.

    Il va me falloir un peu de temps pour digérer tout ça, notamment la façon de trouver la dernière position d'une ligne ou d'une colonne.

    Par contre, si on modifie la parcelle P5 en P2 dans la feuille 1, il se trouve que sur le planning, les 2 parcelles sont en vert sur la même période. Je jette un oeil de plus près ce soir pour comprendre la façon dont tu as mis en place la gestion des mises à jour des dates.

    Par contre, je ne peux pas choisir une macro du fichier à assigner. Je ne sais plus la version installer au boulot mais à la maison, j'ai la 4.2.7.2 sous Lubuntu. En éditant la macro à assigner, je vois bien que tu as réussi mais je n'ai pas accès à celles créées...

    Autre curiosité, lorsque je veux faire une nouvelle entrée sur la feuille 1, la liste déroulante pour la parcelle fonctionne mais lorsque je tape la date, rien, la cellule reste vide. Je change de feuille, la cellule est remplie avec la date saisie... Idem pour la raison. Par contre, lorsque je n'ai pas de date de fin, je considère que la parcelle est encore en cours d'utilisation et je continuais à colorer en vert. Là, ça ne le fait plus. Pas bien grave.

    En tout cas, cela va beaucoup plus vite sans la mise en forme conditionnelle... Merci.

    Je continue de cogiter tout ça et j'espère comprendre ce que tu viens de me proposer.

    Encore merci

    Xav

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    chose importante j'ai oublié de te dire que j'étais sous Windows 7 alors le pb Macro à assigner peut être un souci Windows - Linux. Je regarderais sous Ubuntu pour voir. Le code que j'ai écrit est vraiment brut de fonderie et c'est sûr qu'il y a du travail derrière mais c'était pour voir si mon principe pouvait marcher. Maintenant j'arrête de cogiter et je te laisse faire ce que tu veux, si tu as des problèmes de compréhension de code , demande le ici.

    Ami calmant, J.P


    EDIT : J'ai essayé sous Xubuntu 12.04 LibreOffice 3.5.7.2 pas de pb pour assigner une macro du fichier à ouvrir le document.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    hello,
    finalement, je ne sais pas si c'est une bonne idée de mettre en écoute les cellules de la feuille 1. Il semble y avoir des bugs ( plantage complet de LibreOffice, Blocage de saisie de date etc ...) . Ton souci de non affichage de la date saisie était dû à un problème de rafraîchissement . Voici le code que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    oSheet1Cell.removemodifyListener(oListener2)
    	CellChanged = ThisComponent.getCurrentSelection()
    ' Rafraîchissement
        ThisComponent.removeActionLock()
        ThisComponent.unlockControllers() 
    	MajPlanning(CellChanged.CellAddress.Row)
    	oSheet1Cell.addmodifylistener(oListener2)
    Mais il y a des cas de plantages et de blocage de saisie.
    Alors l'idée de générer le planning lorsque la feuille de planning devient active n'est pas si mauvaise. Surtout que maintenant sans les formules et les mises en forme conditionnelles cela est beaucoup plus rapide. Tout dépend du nombre total d'interventions que tu peux avoir sur une année.
    Le problème de l'événement qui arrive deux fois est évoqué ici mais personne n'a répondu

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Je pense aussi que surveiller en permanence la feuille 1 peut ralentir fortement à chaque modification. Je vais pour le moment rester sur le bouton à cliquer, la surveillance des feuilles n'étant pas convaincante à cause du doublon.
    Pour le nombre d'interventions, je pars sur 15 parcelles et 3 ou 4 interventions par an... ça devrait le faire.
    Je vais prendre le temps de regarder ce que tu m'as fournis pour mieux comprendre.

    Plus de soucis de rapidité mais il reste encore beaucoup de codes à écrire pour finaliser tout ça.

    Merci

    Xav

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    J'ai peut-être trouvé un moyen de gérer l'évenement de changement de feuille active :
    1 - Déclarer une variable globale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Global FeuilleCourante as String
    2 - Dans le lancement de gestion des événements l'initialiser à rien :
    3 - Faire la gestion de l'évenement XPropertyChangeListener comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Classeur_PropertyChange(oEvent) 
      IF ( FeuilleCourante <> oEvent.Source.ActiveSheet.Name ) AND _
      (oEvent.Source.ActiveSheet.Name = "planning 2015") Then
      MsgBox "planning 2015"
      'InitPlanning
      END IF
      FeuilleCourante = oEvent.Source.ActiveSheet.Name 
    End Sub
    La boîte de dialogue n'apparaît qu'une fois et que lorsque l'on change de feuille et si se retrouve sur la feuille "planning 2015"
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Je n'aurai qu'un mot : parfait ! Et merci (ça fait 2 mots mais c'est pas grave!).

    La surveillance se fait et à chaque fois que l'on clique sur la feuille planning, il est à nouveau généré. Je n'ai pas encore intégré tout le code que tu avais proposé car je ne comprends pas tout mais avec ma version empirique, cela fonctionne. J'ai enlevé la mise en forme conditionnelle et je mets la couleur avec la propriété CellBackColor.

    Dans ma version, je supprime l'ensemble des informations pour les réaffecter ensuite. Du coup, un détail encore : pour générer le planning, quand je supprime le contenu de toutes les cellules de la feuille planning, je remets le fond en blanc. On doit pouvoir supprimer le format en même temps mais je n'ai trouvé que ces infos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'com.sun.star.sheet.CellFlags.VALUE: Valeurs numériques 
    'com.sun.star.sheet.CellFlags.DATETIME: Dates et Heures 
    'com.sun.star.sheet.CellFlags.STRING: Texte 
    'com.sun.star.sheet.CellFlags.ANNOTATION: Annotations(Commentaires) 
    'com.sun.star.sheet.CellFlags.FORMULA: Formules
    J'ai bien essayé d'enregistrer une macro mais le code fourni m'est totalement étranger. Je ne retrouve pas simplement les informations pour les comprendre. Et puis le soucis, en enlevant le format, il faut remettre les bordures. Bref, je ne sais pas si c'est un gain de temps de tout supprimer pour refaire ensuite. Peut-être que le fait de mettre en blanc est plus rapide...
    Et comment on fait pour mettre sans arrière plan plutôt qu'en blanc ?

    Encore merci

    Bonne journée

    Xav

  17. #17
    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 609
    Points
    58 609
    Billets dans le blog
    11
    Par défaut
    Il faut les concaténer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    com.sun.star.sheet.CellFlags.VALUE +_
    com.sun.star.sheet.CellFlags.STRING +_
    com.sun.star.sheet.CellFlags.FORMULA...
    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

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    J'avais comprise le principe de les concaténer mais c'est laquelle qui s'occupe du format parce que dans le détails, on supprime des nombres, des textes, des dates, des formules et des commentaires mais pas des formats. A moins que cela soit compris dans commentaire...
    Sinon, pour mettre une cellule sans arrière plan, est-ce que CellBackColor doit prendre la valeur False ?

    Merci

    Xav

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    hello,
    Normalement tu avais la solution dans ma routine Nettoyer_Planning avec la propriété IsCellBackgroundTransparent à true

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub Nettoyer_Planning(Plage As String)
    Dim oSheet As Object
    Dim eSheets As Object
    Dim oDoc As Object
    Dim oRange As Object
    oDoc = ThisComponent
    ' selection de la feuille planning
    oSheet = oDoc.Sheets(1)
    oRange = oSheet.getCellrangeByName(Plage)
    oRange.clearContents(com.sun.star.sheet.CellFlags.STRING)
    oRange.IsCellBackgroundTransparent = True
    End Sub
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  20. #20
    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 609
    Points
    58 609
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par xavllo58 Voir le message
    J'avais comprise le principe de les concaténer mais c'est laquelle qui s'occupe du format parce que dans le détails, on supprime des nombres, des textes, des dates, des formules et des commentaires mais pas des formats. A moins que cela soit compris dans commentaire...
    Sinon, pour mettre une cellule sans arrière plan, est-ce que CellBackColor doit prendre la valeur False ?
    Dans un cas comme dans l'autre, c'est pas une donnée dans la cellule, il faut donc la remplacer pour le format, il faut mettre un nouveau format (ou le format par défaut) et pour la couleur remettre la couleur transparente.
    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. l'unité de traitement (la rapidité de calcul)
    Par dominiqu dans le forum Assembleur
    Réponses: 11
    Dernier message: 20/02/2011, 14h08
  2. [calculs matriciels] rapidité d'inversion
    Par soso85 dans le forum C++
    Réponses: 2
    Dernier message: 26/07/2007, 16h26
  3. Réponses: 4
    Dernier message: 25/06/2007, 00h10
  4. emulateur J2ME et rapidité de calcul
    Par Phobos dans le forum Java ME
    Réponses: 2
    Dernier message: 30/08/2006, 11h26
  5. [TP7] Calculer sin, cos, tan, sqrt via le FPU
    Par zdra dans le forum Assembleur
    Réponses: 8
    Dernier message: 25/11/2002, 05h09

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