[Résolu] [Calc] Fusion cellule auto

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] Fusion cellule auto

Messagepar Scopas » 19 Déc 2019 15:17


La modération vous a écrit: Le terme Macro est inutile dans cette section consacrée aux macros. Nous l'avons supprimé


Salut,

J'ai un planning et je voudrais que quand les gens sélectionnent une plage horaire et entre leur nom cela fusionne automatique les cellules sélectionnées et si ils font une erreur et qu'ils veulent changer la plage horaire en supprimant ou en effacent leur nom cela scinde les cellules comme par défaut.
Donc en gros, si il y a un caractère ou un chiffre fusion sinon rien, si je pouvais avoir un coup de main car je ne trouve pas la solution par mes propres moyens :(

Merci d'avance
Dernière édition par Scopas le 14 Fév 2020 17:48, édité 2 fois.
Version: 6.2.8.2 (x64) sous Windows 7 64bit
Scopas
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 04 Déc 2019 09:15

Re: [Calc]Macro Fusion cellule auto

Messagepar Loopingss » 19 Déc 2019 19:42

Bonjour Scopas.
Une fois récupérées les coordonnées des cellules sélectionnées (par exemple C5 à F5). Si votre feuille a été déclarée avec le nom oFeuil, le code suivant crée la fusion.
Code : Tout sélectionner   AgrandirRéduire
oFeuil.getCellRangeByName("C5:F5").merge(True)

En vous plaçant sur la plage de fusion, vous sélectionnez la première cellule de la première ligne de la plage. Dans cet exemple ce sera F5, le code suivant supprimera la fusion
Code : Tout sélectionner   AgrandirRéduire
oFeuil.getCellRangeByName("C5").merge(False)

A adapter selon vos besoins. Sauf erreur de ma part, en espérant vous avoir été utile.
COOordialement
Avatar de l’utilisateur
Loopingss
PassiOOnné
PassiOOnné
 
Message(s) : 738
Inscrit le : 17 Déc 2008 02:50

Re: [Calc]Macro Fusion cellule auto

Messagepar Scopas » 20 Déc 2019 10:22

Loopingss a écrit:Une fois récupérées les coordonnées des cellules sélectionnées (par exemple C5 à F5). Si votre feuille a été déclarée avec le nom oFeuil, le code suivant crée la fusion.


J'ai pas accès à mon pc bureau (que la semaine prochaine) mais juste pour être sur je rentre l'intégralité du tableau exemple mon tableau va de A1 à X52 si une personne sélectionne F5 à J5 et entre un caractère, hop ça va fusionner? :p

En tout cas merci pour votre rapidité
Version: 6.2.8.2 (x64) sous Windows 7 64bit
Scopas
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 04 Déc 2019 09:15

Re: [Calc]Macro Fusion cellule auto

Messagepar Loopingss » 20 Déc 2019 17:07

Bonjour.
Scopas a écrit: hop ça va fusionner?

Pas tout à fait. Il vous faut au préalable :
1. Vérifier qu'il y a bien une sélection
2. Récupérer les coordonnées de la sélection
Puis faire votre fusion.
COOordialement.
Avatar de l’utilisateur
Loopingss
PassiOOnné
PassiOOnné
 
Message(s) : 738
Inscrit le : 17 Déc 2008 02:50

Re: [Calc] Fusion cellule auto

Messagepar Scopas » 27 Déc 2019 18:05

Salut,

J'ai essayé d’intégrer la macro mais je n'ai pas dû bien mis prendre, peux-tu me donner plus d'informations?

On créer une macro on colle ton bout de code ?
Version: 6.2.8.2 (x64) sous Windows 7 64bit
Scopas
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 04 Déc 2019 09:15

Re: [Calc] Fusion cellule auto

Messagepar zutix » 14 Jan 2020 16:33

Bonjour

Si vous vouliez bien fournir un extrait de votre tableau il serait plus facile de chercher à vous répondre efficacement.

Cordialement
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)
zutix
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 01 Déc 2017 14:35

Re: [Calc] Fusion cellule auto

Messagepar Scopas » 11 Fév 2020 16:13

Si tu veux je te donne un exemple
Pièces jointes
Fusion.ods
(8.28 Kio) Téléchargé 9 fois
Version: 6.2.8.2 (x64) sous Windows 7 64bit
Scopas
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 04 Déc 2019 09:15

Re: [Calc] Fusion cellule auto

Messagepar CanadaDry » 12 Fév 2020 21:51

Bonjour,

Peux-tu fournir un peu d'explications ?
Par exemple, ce que la macro devrait faire et donner une capture d'écran du résultat attendu.
OpenOffice 4.1.7 Windows 7 Edition Professional
Avatar de l’utilisateur
CanadaDry
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 141
Inscrit le : 25 Nov 2014 15:09
Localisation : Laval, QC

Re: [Calc] Fusion cellule auto

Messagepar joel275 » 13 Fév 2020 09:55

Bonjour,

à tester:
Code : Tout sélectionner   AgrandirRéduire
Sub Main
dim coord, lid as Long, cold as Long, colf as Long, lif as Long
dim zone as object, feuille as object, celld as object, cellf as object
   zone = ThisComponent.CurrentSelection
   coord = zone.RangeAddress
   lid = coord.StartRow
   lif = coord.EndRow
   cold = coord.StartColumn
   colf = coord.EndColumn
   'vérifie qu'on est bien dans la zone à remplir: modifier éventuellement les valeurs
   If lid < 0 or lif > 12 or cold < 0 or colf > 15 Then exit sub
   feuille = ThisComponent.Sheets(0)
   celld = feuille.getCellByPosition(cold, lid)
   cellf = feuille.getCellByPosition(colf, lif)
   if celld.string <> "" or cellf.string <> "" then
      'zone.merge(True)      ' fusionne les cellules de la zone
      dim document   as object
      dim dispatcher as object
rem ne sachant pas centrer une cellule fusionnée, j'utilise l'enregistreur de macro
      document   = ThisComponent.CurrentController.Frame
      dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
      dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0, Array())
   else
      zone.merge(False)
   end if
End Sub


code à associer à l'évènement de feuille clic ou double-clic.

A plus.

P.S.: si quelqu'un sait centrer du texte dans une zone fusionnée sans le dispatcher, je suis preneur.... :D
Dernière édition par joel275 le 13 Fév 2020 11:10, édité 1 fois.
OpenOffice 4.1.2 LibreOffice 6-2-8-2 Windows 8.1
joel275
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 782
Inscrit le : 10 Jan 2009 09:05

Re: [Calc] Fusion cellule auto

Messagepar zutix » 13 Fév 2020 10:15

Bonjour,

Voici une proposition pour la partie de ta demande : "je voudrais que quand les gens sélectionnent une plage horaire et entre leur nom cela fusionne automatique les cellules sélectionnées".
Si cela répond bien à ton attente, je réfléchirais pour la suite.
Bonne journée.

Code : Tout sélectionner   AgrandirRéduire
' l'utilisateur a selectionne des cellules contigues
' dans 1 seule zone de la feuille active
'
Sub fusionnerSelection
   Dim oSheet As Object, oSel As Object
   Dim lCd  As Long, lLd  As Long, lCf As Long, lLf As Long
   oSheet=ThisComponent.CurrentController.getActiveSheet
   oSel=ThisComponent.CurrentSelection
   lCd=oSel(0).RangeAddress.StartColumn
   lLd=oSel(0).RangeAddress.StartRow
   lCf=oSel(0).RangeAddress.EndColumn
   lLf=oSel(0).RangeAddress.EndRow
   oSheet.getCellRangeByPosition(lCd,lLd,lCf,lLf).merge(True)
End Sub
Dernière édition par Oukcha le 13 Fév 2020 13:31, édité 1 fois.
Raison: Balises [Code] et [/Code] = lecture et sélection simplifiées de votre macro
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)
zutix
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 01 Déc 2017 14:35

Re: [Calc] Fusion cellule auto

Messagepar zutix » 13 Fév 2020 10:59

Avec formatage bleu et centrage et sans traitement d'erreur

Code : Tout sélectionner   AgrandirRéduire
Sub fusionnerSelection
   Dim oSheet As Object, oSel As Object
   Dim oCell As Object
   Dim lCd  As Long, lLd  As Long, lCf As Long, lLf As Long
   oSheet=ThisComponent.CurrentController.getActiveSheet
   oSel=ThisComponent.CurrentSelection
   lCd=oSel(0).RangeAddress.StartColumn
   lLd=oSel(0).RangeAddress.StartRow
   lCf=oSel(0).RangeAddress.EndColumn
   lLf=oSel(0).RangeAddress.EndRow
   oSheet.getCellRangeByPosition(lCd,lLd,lCf,lLf).merge(True)
   oCell=oSheet.getCellByPosition(lCd,lLd)
   oCell.CellBackColor=RGB(51,102,153)
   oCell.HoriJustify=com.sun.star.table.CellHoriJustify.CENTER
End Sub



La modération vous a écrit: Merci de ne pas poster plusieurs messages à la suite, si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.
Image

Dernière édition par Oukcha le 13 Fév 2020 13:30, édité 1 fois.
Raison: Balises [Code] et [/Code] = lecture et sélection simplifiées de votre macro
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)
zutix
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 01 Déc 2017 14:35

Re: [Calc] Fusion cellule auto

Messagepar Scopas » 13 Fév 2020 14:13

C'est impec c'est ce que je voulais !

Merci, je mets en résolu
Version: 6.2.8.2 (x64) sous Windows 7 64bit
Scopas
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 04 Déc 2019 09:15


Retour vers Macros et API

Qui est en ligne ?

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