[Résolu][Calc] fusionner deux colonnes en une seule

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 !
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 62
Inscription : 17 janv. 2020 19:39

[Résolu][Calc] fusionner deux colonnes en une seule

Message par parlapresente »

Bonjour,

Est-ce que vous savez s'il est possible de "concaténer" deux colonnes en une seule par une macro ?

Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25976
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] fusionner deux colonnes en une seule

Message par Dude »

Salut,

Fusionner et concaténer sont deux choses différentes.
Il s'agit juste de copier les deux colonnes en une seule vers une autre feuille.
As-tu essayé avec l'enregistreur de macro ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 62
Inscription : 17 janv. 2020 19:39

Re: [Calc] fusionner deux colonnes en une seule

Message par parlapresente »

Salut,

Non pas encore mais c'est possible quelle que soit la taille des colonnes ?
Comment faire ? un copier spécial ?

Merci
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
OOo - Ekel
SuppOOrter
SuppOOrter
Messages : 1313
Inscription : 10 nov. 2006 15:04
Localisation : F-Oise

Re: [Calc] fusionner deux colonnes en une seule

Message par OOo - Ekel »

Bonjour,

Si j'ai bien tout compris :
  • il faut sélectionner tous les éléments de la colonne B et les copier.
  • il faut ensuite les coller dans la colonne A.
Sans pour autant savoir où.

Cordialement.
Ekel

KUbuntu Noble Numbat (24.04) : LibreOffice 24.8.0.3 Officielle
AMD Ryzen 5 5600G
AMD Radeon RX 6650 XT
22" + 22"
16 Go
____________________
Pour les règles du jeu.
Pour marquer Résolu.
Pour joindre un fichier.
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25976
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] fusionner deux colonnes en une seule

Message par Dude »

parlapresente a écrit : 11 déc. 2024 16:47 quelle que soit la taille des colonnes ?
Tu veux sûrement dire le nombre de colonnes. Car la taille n'a rien à voir avec la copie.
Avec zBasic, il suffit de paramétrer les plages à parcourir :

Code : Tout sélectionner

Sub Main
	Globalscope.BasicLibraries.LoadLibrary( "zBasic" )
	
	aPlage = array("A2:A4", "B2:B3") 'définir ici les plages
	zFeuille.Cree("Récap")
	zCellule.Ecrit("Récap","A1","C","Concat")
	for each sPlage in aPlage
		nLigne = zPlage.LigneVide("Récap")
		zPlage.Copie("Entrée", sPlage, "Récap", "A" & nLigne)
	next
End Sub
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1823
Inscription : 15 déc. 2010 08:33

Re: [Calc] fusionner deux colonnes en une seule

Message par yclik »

Bonjour
Pour le fun une proposition avec macro qui copie les colonnes sur la même colonne
exemple2.ods
Sans doute il y a plus simple pour aller chercher la fin de la 1ere colonne pour ensuite coller la 2éme colonne
mais je débute :D
 Ajout : Le code utilisé 

Code : Tout sélectionner

Sub CopieColonneA
Dim oDoc as Object
Dim Sheets as object
Dim SheetSource as Object
Dim SheetCible as Object
Dim oPlage1 as Object
Dim oPlage2 as Object
dim oPlageCible1 as Object
dim oPlageCible2 as Object
dim oCellCible as string

	oDoc = thisComponent
	
    SheetSource = oDoc.Sheets.getByName("Entrée")
     SheetCible = oDoc.Sheets.getByName("Résultat attendu")
	
	oPlage1= SheetSource.getCellRangeByName("A2:A1000")
	oPlageCible1 = SheetCible.getCellRangeByName("A2:A1000")
	
' copie et colle les plages		
	Copie=oPlage1	 
    Colle=oPlageCible1
    Colle.DataArray = Copie.DataArray
     
'copie colonne B
Call CopieColonneB

End Sub


Sub CopieColonneB
Dim oDoc as Object
Dim Sheets as object
Dim SheetSource as Object
Dim SheetCible as Object
Dim oPlage1 as Object
Dim oPlage2 as Object
dim oPlageCible1 as Object
dim oPlageCible2 as Object
dim oCellCible as string

	oDoc = thisComponent
	
    SheetSource = oDoc.Sheets.getByName("Entrée")
     SheetCible = oDoc.Sheets.getByName("Résultat attendu")

' compage des lignes colonne A     
   For i = 1 to 10
   
    oCellCible1=SheetSource.getCellRangeByName("A"&i).String 'lire cellule a2
       count=count+1
       'print count
      ' print  oCellCible1
       if  oCellCible1 = "" then exit for
  
   next i
 
 ' print count ' pour test
	
	oPlage2= SheetSource.getCellRangeByName("B2:B1000") ' plage de 998 lignes
	oPlageCible2Debut="A"& count

	oPlageCible2Fin="A"&count+998 ' plage de 998 lignes
	oPlageCibleDebutFin=oPlageCible2Debut &":"& oPlageCible2Fin
'	print oPlageCibleDebutFin
	oPlageCible2 = SheetCible.getCellRangeByName(oPlageCibleDebutFin)
' copie et colle les plages	
	Copie=oPlage2	 
    Colle=oPlageCible2
    Colle.DataArray = Copie.DataArray
    
      

End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par yclik le 12 déc. 2024 17:02, modifié 1 fois.
OpenOffice 4.1.14 sous Windows 11
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 62
Inscription : 17 janv. 2020 19:39

Re: [Calc] fusionner deux colonnes en une seule

Message par parlapresente »

Merci à tous les deux, je regarde ça.
LIbreoffice 24.2.1
Windows 11
parlapresente
Membre OOrganisé
Membre OOrganisé
Messages : 62
Inscription : 17 janv. 2020 19:39

Re: [Calc] fusionner deux colonnes en une seule

Message par parlapresente »

Concernant la proposition avec zBasic :

Code : Tout sélectionner

Sub Main
	Globalscope.BasicLibraries.LoadLibrary( "zBasic" )
	
	aPlage = array("A2:A4", "B2:B3") 'définir ici les plages
	zFeuille.Cree("Récap")
	zCellule.Ecrit("Récap","A1","C","Concat")
	for each sPlage in aPlage
		nLigne = zPlage.LigneVide("Récap")
		zPlage.Copie("Entrée", sPlage, "Récap", "A" & nLigne)
	next
End Sub
le aPlage permet de choisir les plages à choisir mais comment on fait pour lui indiquer la feuille ?
Car j'ai modifié le "Entrée" du zPlage.Copie, mais ça ne semble pas changer grand chose, les données copiées viennent d'un autre onglet ?
Merci
LIbreoffice 24.2.1
Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25976
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] fusionner deux colonnes en une seule

Message par Dude »

parlapresente a écrit : 12 déc. 2024 17:00 Car j'ai modifié le "Entrée" du zPlage.Copie, mais ça ne semble pas changer grand chose, les données copiées viennent d'un autre onglet ?
Le code est donné en fonction du document que tu fournis au départ. :marto:
Si tu changes les informations, tu fournis un nouveau document sur lequel on puisse comprendre et reproduire ton problème.