[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.

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

Messagepar rangzen » 13 Avr 2009 14:02

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 édition par Oukcha le 13 Avr 2009 21:02, édité 1 fois.
Raison: Balisage / Avisé par MP
Avatar de l’utilisateur
rangzen
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 13 Avr 2009 13:23

Re: Comment inverser le contenu de 2 cellules ?

Messagepar jjk » 13 Avr 2009 16:10

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   AgrandirRéduire
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
jjk
HédOOniste
HédOOniste
 
Message(s) : 1696
Inscrit le : 27 Oct 2008 15:30

Re: Comment inverser le contenu de 2 cellules ?

Messagepar Jean-Louis Cadeillan » 13 Avr 2009 18:15

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
LibO 7.0.5.2 (x64 avec Java 1.8.0_281) et AOO 4.1.10 (avec Java x32 1.8.0_241), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5122
Inscrit le : 03 Jan 2009 00:56

Re: Comment inverser le contenu de 2 cellules ?

Messagepar rangzen » 13 Avr 2009 18:29

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
Avatar de l’utilisateur
rangzen
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 13 Avr 2009 13:23


Retour vers Tableur

Qui est en ligne ?

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