[Résolu] Comment inverser le contenu de 2 cellules ?

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Avatar de l’utilisateur
rangzen
Fraîchement OOthentifié
Messages : 6
Inscription : 13 avr. 2009 12:23

[Résolu] Comment inverser le contenu de 2 cellules ?

Message par rangzen »

Bonjour,

quel est le moyen le plus OOo d'échanger le contenu de 2 cellules ?
Raccourci clavier ? Macro ? Copier/coller avec une cellule tampon ?

Merci !
Dernière modification par Oukcha le 13 avr. 2009 20:02, modifié 1 fois.
Raison : Balisage / Avisé par MP
jjk
HédOOniste
HédOOniste
Messages : 1696
Inscription : 27 oct. 2008 14:30

Re: Comment inverser le contenu de 2 cellules ?

Message par jjk »

Je ne connais pas de moyen simple.
J'ai écrit cette macro qui peut rendre service. Attention : je ne l'ai testée que dans les cas simples.
Je décline toute responsabilité si elle dégrade votre classeur. Pensez à le sauvegarder avant d'exécuter la macro.
Pour l'utiliser, il faut sélectionner les 2 cellules dont on veut échanger le contenu, à l'aide de la souris et de la touche Ctrl.
Les 2 cellules doivent être sur la même feuille.
En cas de zones sélectionnées, ce sont les premières cellules de chaque zone qui sont échangées.
Attention : les formules sont échangées. Cela peut donc donner des résultats inattendus.

Code : Tout sélectionner

Sub Echange2Cellules
Dim oDoc as Object, oSht as Object, sel as Object
Dim a as Variant, b as Variant
Dim f as Double, r0 as Double, r1 as Double, c0 as Double, c1 as Double
oDoc=ThisComponent
sel=oDoc.currentSelection
if sel.supportsService("com.sun.star.sheet.SheetCellRanges") then
	With sel(0).RangeAddress
		f = .sheet : r0 = .startRow : c0 = .startColumn
	End With
	With sel(1).RangeAddress
		f = .sheet : r1 = .startRow : c1 = .startColumn
	End With
	
	a = oDoc.sheets(f).getCellByPosition(c0, r0).formula
	b = oDoc.sheets(f).getCellByPosition(c1, r1).formula

	oDoc.sheets(f).getCellByPosition(c0, r0).formula = b
	oDoc.sheets(f).getCellByPosition(c1, r1).formula = a
else
	msgbox "Il faut sélectionner 2 cellules discontigues"
endif
end Sub

OpenOffice 3.1.1 sous XP-SP2 et LibreOffice 3.5.0 sous Win 7
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6076
Inscription : 02 janv. 2009 23:56

Re: Comment inverser le contenu de 2 cellules ?

Message par Jean-Louis Cadeillan »

Sinon, si les deux cellules sont contiguës, après avoir sélectionné une des deux cellules, faire un cliqué glissé avec la combinaison Shift+Alt...
Cordialement

Jean-Louis
Windows 10 Pro 64, LibO 25.2.6.2 (JRE 1.8.0_471) et AOO 4.1.15 (Adoptium 19.0.2.7)
Avatar de l’utilisateur
rangzen
Fraîchement OOthentifié
Messages : 6
Inscription : 13 avr. 2009 12:23

Re: Comment inverser le contenu de 2 cellules ?

Message par rangzen »

Merci pour la macro, ça marche nickel.:bravo:
Dommage qu'il n'y ait pas plus simple.
OOo 3.2 sur GNU/Linux Ubuntu 10.4