[Résolu][Calc] Copier transposer après cellule vide

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] Copier transposer après cellule vide

Messagepar alex85 » 06 Nov 2019 14:52

Bonjour,

Après beaucoup de lecture de recherche et de tentative sans succès je vous expose mon problème.
J'ai utilisé l'enregistreur de macro pour copier transposer une partie de mes données en colonne A vers F1, mon problème c'est que je n'arrive pas à automatiser cette tache aux autres cellules .

Merci d'avance pour le temps que vous prendrez pour résoudre mon problème.

Code : Tout sélectionner   AgrandirRéduire

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$A$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$H$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "A"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = true
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$A$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$A$4"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$A$4:$A$8"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$H$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())

rem ----------------------------------------------------------------------
dim args10(5) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Flags"
args10(0).Value = "A"
args10(1).Name = "FormulaCommand"
args10(1).Value = 0
args10(2).Name = "SkipEmptyCells"
args10(2).Value = false
args10(3).Name = "Transpose"
args10(3).Value = true
args10(4).Name = "AsLink"
args10(4).Value = false
args10(5).Name = "MoveMode"
args10(5).Value = 4
for x = 1 to 30
next
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args10())


end sub
Pièces jointes
open 2.ods
(10.04 Kio) Téléchargé 4 fois
Dernière édition par micmac le 07 Nov 2019 08:51, édité 1 fois.
Raison: Balisage dans le premier message SVP
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] Copier transposer après cellule vide

Messagepar alex85 » 06 Nov 2019 17:49

Il faut éliminer les problèmes dès le début de leur apparition tant qu’ils sont encore simples.
Tout problème perd sa force dans la mesure où vous développez l’habileté d’être calme, de regarder et d’observer objectivement.
Dernière édition par micmac le 06 Nov 2019 17:57, édité 1 fois.
Raison: Icône radioactiv supprimée et police en taille normale
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] Copier transposer après cellule vide

Messagepar micmac » 06 Nov 2019 17:57

Bonjour,
  1. La balise Image n'a rien à faire dans le titre. ftopic3299.html.
  2. Si vous voulez être lu, choisissez d'écrire avec une taille de caractères normale.
  3. Poster plusieurs messages à la suite est interdit.
J'ai corrigé ces points pour vous mais sachez que nous avons d'autres choses à faire d'autant que la pertinence de ce message laisse à désirer.

Les règles du forum ne vous semblent pas encore familières, veuillez y jeter un coup d'œil.
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6325
Inscrit le : 28 Août 2010 09:45

Re: [Calc] Copier transposer après cellule vide

Messagepar alex85 » 06 Nov 2019 18:21

Bonjour,
Je l'ai bien lu, et je vous remercie.
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] Copier transposer après cellule vide

Messagepar Dolev » 06 Nov 2019 21:13

Bonsoir,

En principe, tu n'as pas besoin de macro.
Tu as la fonction TRANSPOSE qui fait cela.

Attention, la formule est matricielle et il faut la valider par Ctrl + Maj + Entrée
Open Office 4.1.7 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre lOOyal
Membre lOOyal
 
Message(s) : 30
Inscrit le : 19 Août 2018 06:20

Re: [Calc] Copier transposer après cellule vide

Messagepar alex85 » 07 Nov 2019 06:52

bonjour,

Certainement faisable avec une matrice mais comment mettre les résultats ligne par ligne par ex données : A1;A3 en C1; A5;A8 en C2, en gros à chaque cellule vides recommencer la transpose mais résultats voulu ligne par ligne.

merci en tout cas
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] Copier transposer après cellule vide

Messagepar alex85 » 07 Nov 2019 07:16

J'ai ça qui correspond bien mais données sont variables
Code : Tout sélectionner   AgrandirRéduire
=DECALER($A$1;PLANCHER((COLONNE(A1))/4;1;0)+(LIGNE(A1)*3)-(6-COLONNE(C3));0)
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Résolu] Copier transposer après cellule vide

Messagepar alex85 » 07 Nov 2019 08:10

désolée en faite c'était simple il suffisait de faire une transpose avec formule de gauche à droite ensuite une macro copier coller à l'horizontale
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Résolu][Calc] Copier transposer après cellule vide

Messagepar alex85 » 09 Nov 2019 14:09

voici le code, au cas ou ça pourrait interesser qq'un.


Code : Tout sélectionner   AgrandirRéduire
Sub transpose()
  début = 2
  fin = [A65000].End(xlUp).Row
  pas = 5
  Dim a()
  ReDim a(1 To (fin) / pas, 1 To 4)
  For i = début To fin Step pas
    For k = 0 To 3: a((i + pas - début) / pas, k + 1) = Cells(i + k, 1): Next k
  Next i
  [C2].Resize((fin) / pas, 4) = a
End Sub

Sub transpose2()
  début = 2
  fin = [A65000].End(xlUp).Row
  pas = 5
  ligne = 2
  For i = début To fin Step pas
    For k = 0 To 3
      Cells(ligne, 3 + k) = Cells(i + k, 1)
    Next k
    ligne = ligne + 1
  Next i
End Sub
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Résolu][Calc] Copier transposer après cellule vide

Messagepar Noonours » 09 Nov 2019 14:17

Bonjour,

Les macros que tu présentes ici sont prévues pour Excel, et ne sont pas compatibles avec Libre Office (comme le précise ta signature)
As-tu essayé de les faire fonctionner avec LibreOffice?? :tesfou:
Noonours plantigrade râleur

Pour obtenir la réponse la plus précise possible, N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER

LibO 6.2.8.2 sous Windows 10
LibO 5.0.6.3 (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 320
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

Re: [Résolu][Calc] Copier transposer après cellule vide

Messagepar alex85 » 09 Nov 2019 14:49

oui ça marche impeccable mais avec le fichier, trouvée sur h**p://boisgontierjacques.free.fr/pages_site/cellules.htm#Nommer%20les%20champs%20par%20VBA étant nul en programmation

"On reconnaît une grande civilisation aux soins qu’elle porte aux nécessiteux."
Pearl S. Buck
Pièces jointes
TransformeColonneLigne8 (1).xls
(55.5 Kio) Téléchargé 6 fois
Dernière édition par micmac le 09 Nov 2019 14:50, édité 1 fois.
Raison: neutralisation lien externe
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15


Retour vers Macros et API

Qui est en ligne ?

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