[Résolu][Calc] Récupérer contenu de la cellule sélectionnée

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Récupérer contenu de la cellule sélectionnée

Messagepar Sim31 » 20 Avr 2018 22:07

Bonjour a tous,


La modération a écrit:Sujet initial ici : https://forum.openoffice.org/fr/forum/v ... =4&t=57686

J'ai déjà posé ma question dans la section Tableur et il semblerait que la solution recherchée soit plus facile à trouver par ici.
Je cherche une fonction permettant de récupérer le contenu de la cellule active. Le but étant de contrôler le nombre de doublons présents dans ma feuille de calcul lorsque je saisie une nouvelle entrée dans mon tableau :

Ça donnerait pour une fonction intégrée à la cellule A1.
Je sélectionne la cellule A4, la cellule A1 indique le contenu de la cellule A4
Je sélectionne la cellule B8, la cellule A1 indique le contenu de la cellule B8..

Quelque chose qui parait simple mais je n'ai pas trouvé. Je compte utiliser le contenu de la cellule A1 pour une autre fonction de recherche déjà mise en place. J'espère avoir été suffisamment clair, merci de m'avoir lu en espérant trouver une solution avec ou si cela vous semble possible, sans macro car je n'en ai encore jamais utilisé. Merci pour votre aide :D
Apache OpenOffice 4.1.2
Windows 7 Professionnel SP1
Sim31
Fraîchement OOthentifié
 
Message(s) : 3
Inscrit le : 20 Avr 2018 20:22

Re: [Calc] Récupération du contenu de la cellule sélectionné

Messagepar Churay » 21 Avr 2018 09:26

Bonjour,

Si les données à transférer sont de type numérique (nombre, date, booléen) :
Code : Tout sélectionner   AgrandirRéduire
Option Explicit
Sub Main(oEvt)
Dim oSheet AS Object, Var
   oSheet = thisComponent.CurrentController.ActiveSheet
   WITH oEvt.cellAddress
      IF oSheet.GetCellByPosition(.Column, 0).Value <> 0 THEN
         oSheet.GetCellByPosition(.Column, 0).Value = oSheet.GetCellByPosition(.Column, .Row).Value
      END IF
   END WITH
End Sub


Si les données à transférer sont de type texte :
Code : Tout sélectionner   AgrandirRéduire
Option Explicit
Sub Main(oEvt)
Dim oSheet AS Object, Var
   oSheet = thisComponent.CurrentController.ActiveSheet
   WITH oEvt.cellAddress
      IF oSheet.GetCellByPosition(.Column, 0).String  <> "" THEN
         oSheet.GetCellByPosition(.Column, 0).String = oSheet.GetCellByPosition(.Column, .Row).String
      END IF
   END WITH
End Sub


Si les données à transférer peuvent être de type texte ou de type numérique, il faut rajouter un test de type.

Mais cela aurait été bien de le préciser... D'où l'intérêt de joindre un fichier, même simplifié et/ou anonymisé, mais suffisamment explicite : cela permet de voir (ou entrevoir) la réalité non exprimée.

La macro est à associer à un bouton ou à l'événement feuille Séléction modifiée
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2648
Inscrit le : 30 Avr 2009 05:54
Localisation : CATALUNYA

Re: [Calc] Récupération du contenu de la cellule sélectionné

Messagepar rgis » 26 Avr 2018 09:10

Bonjour,
Un raccourci clavier facile, par exemple Alt+W,
affecté à une simple macro de copier-coller vers A1
devrait permettre une action rapide
à partir de n'importe quelle cellule.
OpenOffice 4.1.5 sous Windows 10
rgis
Fraîchement OOthentifié
 
Message(s) : 8
Inscrit le : 12 Mars 2009 14:07

Re: [Calc] Récupération du contenu de la cellule sélectionné

Messagepar Churay » 27 Avr 2018 15:29

bin voilà : il ne te reste qu'a associer la macro qui te va à une raccourci clavier. Voire les deux, à un raccourci distinct

et, si tu le préfères, adapter la sélection de la cellule grace à la méthode .CurrentSelection, soit

cas numérique :
Code : Tout sélectionner   AgrandirRéduire
Option Explicit
Sub Main
Dim oSheet AS Object, oCell AS Object
   oSheet = thisComponent.CurrentController.ActiveSheet
   oCell  = thisComponent.CurrentSelection
   
   IF oCell.Value <> 0 THEN oSheet.GetCellByPosition(oCell.cellAddress.Column, 0).Value = oCell.Value
End Sub


cas texte :
Code : Tout sélectionner   AgrandirRéduire
Option Explicit
Sub Main
Dim oSheet AS Object, oCell AS Object
   oSheet = thisComponent.CurrentController.ActiveSheet
   oCell  = thisComponent.CurrentSelection
   
   IF oCell.String <> "" THEN oSheet.GetCellByPosition(oCell.cellAddress.Column, 0).String = oCell.String
End Sub


Si la cellule peut contenir du texte ou du numérique, il faut (comme précédemment) prévoir un teste de type et modifier la macro.
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2648
Inscrit le : 30 Avr 2009 05:54
Localisation : CATALUNYA


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)