[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 !
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

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


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é 92 fois
Dernière modification par micmac le 07 nov. 2019 08:51, modifié 1 fois.
Raison : Balisage dans le premier message SVP
LibO 7.1 sous windows 10
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

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 modification par micmac le 06 nov. 2019 17:57, modifié 1 fois.
Raison : Icône radioactiv supprimée et police en taille normale
LibO 7.1 sous windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9223
Inscription : 28 août 2010 10:45

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

Message par micmac »

Bonjour,
  1. La balise Image n'a rien à faire dans le titre. https://forum.openoffice.org/fr/forum/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.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

Bonjour,
Je l'ai bien lu, et je vous remercie.
LibO 7.1 sous windows 10
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 944
Inscription : 19 août 2018 07:20

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

Message par Dolev »

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.15 sous Windows 11
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

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 7.1 sous windows 10
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

J'ai ça qui correspond bien mais données sont variables

Code : Tout sélectionner

=DECALER($A$1;PLANCHER((COLONNE(A1))/4;1;0)+(LIGNE(A1)*3)-(6-COLONNE(C3));0)
LibO 7.1 sous windows 10
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

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 7.1 sous windows 10
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

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

Code : Tout sélectionner

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 7.1 sous windows 10
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 501
Inscription : 11 mai 2013 02:11
Localisation : Aix en Provence

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

Message par Noonours »

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 procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 7.6.5.2 Stable et OpenOffice 4.1.15 sous Windows 10
alex85
Membre lOOyal
Membre lOOyal
Messages : 31
Inscription : 05 nov. 2019 14:15

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

Message par alex85 »

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é 100 fois
Dernière modification par micmac le 09 nov. 2019 14:50, modifié 1 fois.
Raison : neutralisation lien externe
LibO 7.1 sous windows 10
Verrouillé