Permuter le contenu des cellules dans Excel?

42

Existe-t-il un moyen simple d’échanger le contenu de deux cellules dans Microsoft Excel?

Par facile, j'entends un raccourci clavier ou un élément de menu, sans impliquer la copie dans des cellules temporaires ni l'écriture de scripts VBA ou quoi que ce soit du genre. En d'autres termes, je cherche un moyen de sélectionner simplement deux cellules et de cliquer sur un élément de menu ou d'appuyer sur une combinaison de touches qui permette d'échanger leur contenu. Sûrement, il doit y avoir un moyen de faire cela?

Dan Moulding
la source
Cela semble être une implémentation très spécifique d'une sorte, et si elle n'est pas déjà présente dans les options de tri avancées, je serais surprise de la trouver ailleurs, en tant que solution non-VBA
drapkin11

Réponses:

47

De: http://www.extendoffice.com/documents/excel/860-excel-swap-contents-of-two-cells.html

Parfois, il faut échanger deux cellules adjacentes. Nous pouvons le faire manuellement facilement. Regardez la capture d'écran suivante, je veux échanger les cellules A4 et B4, procédez comme suit:

entrez la description de l'image ici

  1. Sélectionnez la cellule que vous souhaitez échanger. Dans cet exemple, sélectionnez la cellule A4.

  2. Appuyez sur la touche Maj et placez le curseur sur le bord droit.

  3. Ensuite, faites glisser le curseur sur le bord droit de la cellule B4.

  4. Quand il affiche «», relâchez la souris.

  5. Et le contenu des deux cellules a été échangé.

entrez la description de l'image ici

Avec cette méthode, nous pouvons également échanger deux lignes ou colonnes adjacentes.

utilisateur190216
la source
8
Cela devrait être la réponse choisie pour moi. Merci!
Nam G VU
2
Ca ne marche pas pour moi Il suffit d'insérer des cellules vides entre ces 2 cellules
phuclv
2
Cela ne fonctionne que pour les cellules adjacentes, ce qui n’est pas ce que la question initiale demandait.
jpierson
Cela ne fonctionne pas du tout pour moi sur Excel 2010 - il clignote rapidement, mais le contenu des cellules reste inchangé.
Hashim
@phuclv J'avais le même problème que vous avant de comprendre que, pour l'étape 2, je plaçais le curseur de la souris sur le bord inférieur droit plutôt que sur le bord droit du milieu.
Richard
17

Pour le cas spécifique de plages rectangulaires adjacentes de même taille , vous pouvez utiliser la méthode décrite dans cette réponse à une question similaire .

  1. Sélectionnez la plage droite ou inférieure
  2. Appuyez sur Ctrl+X
  3. Sélectionnez la plage adjacente (c'est-à-dire directement au-dessus ou à gauche)
  4. Appuyez sur Ctrl+ +(le +est généralement au-dessus de la =touche pour que cela se traduise par Ctrl+ Shift+ =)

Notez que vous pouvez utiliser la même procédure pour échanger des lignes ou des colonnes adjacentes entières.

Jonas Heidelberg
la source
1
Excellent. Ceci est exactement ce que je cherchais. Pouvoir utiliser les raccourcis clavier et pouvoir utiliser plusieurs cellules est beaucoup plus rapide.
Anthony G - justice pour Monica
Cela ne marche pas pour moi. Et les cellules sont adjacentes les unes aux autres. Je ne sais pas pourquoi ça ne marche pas. Y a-t-il une explication particulière pour cette commande?
Smart Humanism
15

Par facile, j'entends un raccourci clavier ou un élément de menu, sans impliquer de copie dans des cellules temporaires ni d' écrire des scripts VBA ou quelque chose du genre. Je cherche un moyen de sélectionner simplement deux cellules et de cliquer sur un élément du menu ou d'appuyer sur une combinaison de touches qui permette d'échanger leur contenu.

Pourquoi imposer cette restriction? Créer une macro rend cela trivial. Autant que je sache, cela ne peut pas être fait autrement. Vous pouvez affecter la macro à un bouton ou à un raccourci clavier.

Sub Swap()     
    If Selection.Count <> 2 Then     
         MsgBox "Select 2 cells (only) to swap."     
         Exit Sub     
    End If     
    Set trange = Selection     
    If trange.Areas.Count = 2 Then     
         temp = trange.Areas(2)     
         trange.Areas(2) = trange.Areas(1)     
         trange.Areas(1) = temp     
    Else     
         temp = trange(1)     
         trange(1) = trange(2)     
         trange(2) = temp     
    End If     
End Sub     
ghoppe
la source
4
Je ne suis pas un expert de la VBA et n'ai ni le temps ni l'envie de le devenir. J'utilise aussi fréquemment plusieurs ordinateurs différents. Il serait bien d’avoir la permutation sur tous les ordinateurs que j’utilise pour Excel, sans avoir à rechercher le code de la macro VBA qui le fait, afin que je puisse l’associer à un raccourci clavier.
Dan Moulding
3
@Dan Ce serait bien si tout le monde pouvait intégrer la fonctionnalité d'animal de compagnie dans Excel, mais cela deviendrait encore plus désordonné qu'il ne l'est déjà. Il existe une raison pour laquelle Excel utilise un langage macro pour automatiser des tâches répétitives comme celle-ci. J'ai posté le code trouvé via une recherche google. Vous n'êtes pas obligé d'être un expert.
Ghoppe
+1 vba est le moyen par lequel Excel vous permet d’ajouter les fonctions de votre animal de compagnie. il existe également des moyens de rendre cette vba disponible sur de nombreux ordinateurs, à vous-même ou à tous (par exemple, un classeur personnel ou des addins)
chris neilsen
9
J'appellerais difficilement échanger le contenu de deux cellules / lignes / colonnes pour qu'il devienne une fonction d'animal de compagnie.
Nicolai
5
@ghoppe Peut-être pas indispensable, mais si vous faites une recherche rapide sur "permuter le contenu de deux cellules dans Excel" (que vous avez déjà), il est évident que Dan et moi ne sommes guère les seuls à nous intéresser à cette fonctionnalité.
Nicolai
5

Non. Il n'est pas possible d'échanger le contenu de deux cellules dans Excel sans écrire votre propre macro pour le faire.

EDIT: Il semble qu’il existe désormais un moyen simple d’échanger le contenu des cellules dans les versions les plus récentes d’Excel. Cette réponse est donc probablement obsolète.

Dan Moulding
la source
cette déclaration est incorrecte. Voir la réponse de l'utilisateur190216.
Karl Rookey
@KarlRookey À l'origine, cette réponse indiquait (et c'est toujours le cas) que les cellules doivent être adjacentes. Il semble que cela ne soit peut-être plus vrai pour les versions plus récentes d'Excel. Si tel est le cas, alors, oui, il existe maintenant une meilleure réponse. Merci!
Dan Moulding
Merci d'avoir dit cela. Tous les exemples ici ont pour effet secondaire d’échanger deux cellules (si elles sont adjacentes) mais ne «échangent pas de cellules», cela «décale» les cellules.
Peter Ritchie
2

Sélectionnez le premier ensemble de cellules à échanger et appuyez sur ctrl+ x:

Sélectionnez les cellules à côté de celles avec lesquelles vous souhaitez échanger et appuyez sur ctrl+ +.

utilisateur287020
la source
1
Cela ne fonctionne que si les cellules sont adjacentes. Sinon, tout est déplacé près des cellules cibles.
tumchaaditya
0

Vous pouvez coller jusqu'à 25 éléments dans le Presse-papiers, ils sont donc faciles à échanger avec ctr + tab ou cmd + tab mac

Aaron
la source
2
Est-ce une fonctionnalité Mac standard? L'auteur de la question n'a pas précisé sur quelle plate-forme ils se trouvaient. Je ne sais pas si le Presse-papiers standard de toutes les versions de Windows contient plusieurs éléments, mais des utilitaires gratuits sont facilement disponibles pour fournir cette fonctionnalité (et les raccourcis clavier peuvent varier). Pourriez-vous développer votre réponse pour la rendre plus complète pour cette approche?
Fix1234
J'ai essayé ceci sur Windows mais je ne pouvais pas le comprendre. J'ai même essayé l'option Ctrl + Maj + P qui fonctionne normalement dans Visual Studio pour coller en dehors de l'anneau du Presse-papiers.
jpierson
0
  • Sélectionnez la cellule du bas que vous souhaitez échanger.
  • Appuyez sur Ctrl+ Xet accédez à la cellule avec laquelle vous souhaitez échanger
  • Appuyez sur Ctrl+ Shift+=

Le swap sera exécuté

mehndiratta co
la source
C'est exactement la même chose que la réponse de Jonas Heidelberg , d'il ( exactement! ) Il y a six ans, et effectivement la même chose que la réponse de user287020 .
Scott
0

J'ai lu ce post, mais j'avais en fait besoin d'une macro pour échanger des gammes complètes. De plus, j'avais besoin d'échanger les couleurs. Modded légèrement la macro publiée à l'origine, cela pourrait être utile pour quelqu'un.

Sub Swap()

    If Selection.Areas.Count <> 2 Then
         MsgBox "Select 2 cell ranges (only) to swap."
         Exit Sub
    End If


    If Selection.Areas(1).Count <> Selection.Areas(2).Count Then
         MsgBox "The two areas must be of equal size"
         Exit Sub
    End If

    'With this for loop we run through each cell 1 by 1
    For i = 1 To Selection.Areas(1).Count
        'Swapping values
        temp = Selection.Areas(1)(i)
        Selection.Areas(1)(i) = Selection.Areas(2)(i)
        Selection.Areas(2)(i) = temp

        'Swapping color
        tempColor = Selection.Areas(1)(i).DisplayFormat.Interior.Color
        Selection.Areas(1)(i).Interior.Color = Selection.Areas(2)(i).DisplayFormat.Interior.Color
        Selection.Areas(2)(i).Interior.Color = tempColor
    Next i

End Sub
Ivo van der Marel
la source