échanger des cellules sous excel - Logiciels - Windows & Software
Marsh Posté le 19-09-2005 à 00:07:55
Tu peux écrire cette procédure dans VBA de ton classeur.
Tu place un bouton de formulaire sur ta feuille Excel et lorsque tu as sélectionné deux cellules dans la feuille, si tu cliques sur ton bouton, tes deux cellules sont permutées.
Attention que je n'ai pas introduit de vérification sur la sélection de deux cellules !!
Sub Permute()
'Permuter le contenu de deux cellules sélectionnées
'dans une feuille Excel.
Dim Buf, Cell1, Cell2
Buf = ActiveWindow.RangeSelection.Address
Cell1 = Left(Buf, 4)
Cell2 = Right(Buf, 4)
Buf = ActiveSheet.Range(Cell1).Value
ActiveSheet.Range(Cell1) = ActiveSheet.Range(Cell2).Value
ActiveSheet.Range(Cell2) = Buf
End Sub
A+
Marsh Posté le 01-10-2005 à 23:18:43
VBA est un langage de programation (Visual Basic for Applications)
diponible dans toutes les applications OFFICE
Word, excel et powerpoint (et d'autres encore)
cela te permet de programmer en Visual Basic des commandes et des fonctions comme celle que t'a presenté Papy Octet
par exemple,
pour tester le code de Papy Octec,
dans excel, sur les onglets en bas portant le nom des feuilles (feuil1 feuil2 etc)
tu clique droit sur la premiere feuille et tu vas trouver un menu
dans ce menu tu cliques sur visualiser le code
et te voila dans VBA
a gauche tu va trouver une arborescnce
presantant des elemnets resemblant a ceci :
VBAProject (CLasseur1)
----Feuil1
----Feiuil2
----...
tu clique droit sur VBAPRojetc(Classeur1)
insertion-> module
et la tu colle le code de Papy
t'as plus qu'a associer la procedure permute (sub permute() ) à un bouton que tu cree dans excel
et le tour est joué
le code faisant partie integrante de ton classeur excel
tu peux quitter visual basic en cliquant sur fichier->fermer et retourner à excel
et quand tu enregistre ton classeur, le code suit (il est dedans)
Marsh Posté le 01-10-2005 à 23:22:33
MERCI et concrètement comment on fait pour appliquer les conseiles de Papy Octet ?
Marsh Posté le 01-10-2005 à 23:24:11
j'etait en train d'editer pendant ton post relis ma reponse...
Marsh Posté le 02-10-2005 à 00:06:28
la procedure que je te donne est pour excel XP (office XP) mais dans 2000 c'est sensiblement pareil
ajoute la barre d'outils "boite à outils controles" en cliquant droit a coté d'une des barres de boutons d'excel (sous les menus) et active le barre nommée plus haut
la tu clique sur l'icone qui resemble a une equerre et un crayon
apres ca tu clique sur l'icone en forme de rectangle (son nom est bouton de commande (laisse la souis un moment sur les icones pourvoir les noms)
puis tu clique dans ta feuille escel
un bouton va apparaitre
apres ca clioque droit sur le bouton et visualiser le code
tu vas te retrouver dans VBA
et la
si tu avait deja collé le code de papy octet
tu va te trouver dans une fenetre ou il y aura ecrit
private sub commandbutton'n'_click()
end sub
entre les deux lignes tu tapes simplement
call permute()
tu referme
et de retour a escel tu reclique sur l'equerre puis tu ferme la barre de boutons
t'as plus qu'a tester ton code en cliquant sur le bouton créé...
je sais la c'est pas tres clair pour bien faire, il faudrait des copies d'ecran, mais la franchement il est trop tard pour que je m'y colles...
Marsh Posté le 02-10-2005 à 00:28:38
J'ai réussi à créer le bouton, mais cela ne fonctionne pas, je recommencerai demain. Merci et bonsoir.
Marsh Posté le 11-03-2009 à 10:44:08
Sub Swap()
Dim cval(), cadd()
a = 1
ReDim cval(2), cadd(2)
For Each usrcell In Selection
cval(a) = usrcell.Value
cadd(a) = usrcell.Address
a = a + 1
Next usrcell
Range(cadd(1)).Select
ActiveCell = cval(2)
Range(cadd(2)).Select
ActiveCell = cval(1)
End Sub
Marsh Posté le 11-03-2009 à 12:28:50
boueb a écrit : Sub Swap() |
Et bien, le pauvre curry, j'espère qu'il n'a pas attendu 4 ans!
Marsh Posté le 08-11-2009 à 17:51:55
boueb a écrit : Sub Swap() |
Bonjour
je suis nouvel arrivant sur ce forum, et je viens de tester ces quelques lignes de programme qui fonctiones plutôt bien.
Mais n'ayant auqu'une compétence en programmation de macro je voudrais fair appail à tes capacitées.
Je voudrai permuter plusieurs cellule d'un colonne avec plusieurs cellule de la colonne d'à coté, en même temps bien sur!!!!
Si tu sais faire je suis preneur Merci
Marsh Posté le 16-03-2017 à 23:18:40
Papy Octet a écrit : Tu peux écrire cette procédure dans VBA de ton classeur. |
Bonsoir,
Suite à mes recherches, je viens de découvrir ce qui répond parfaitement à ma demande et qui fonctionne.
Mais comme toujours, il en faudrait plus.!
Je m'explique, il s'agit d'équipes de deux partenaires (Nord/Sud) et adversaires (Est/Ouest) soit 2 X 2 cellules contiguës à intervertir.
soit par exemple: A1 et B1 à inverser par rapport D8 et E8; D8 et E8 étant déplacé vers A1-B1 vice versa.
En quelques sortes votre macro initiale qui au lieu de fonctionner par 1 cel vers une autre cel. Ma demande est de pouvoir fonctionner avec 2 cel. contiguës vers 2 autres cel.contiguës.
Merci pour votre aide.
Bien cordialement
Marsh Posté le 18-03-2017 à 11:19:50
Bonjour,
Dois-je ouvrir un nouveau sujet pour avoir une réponse ?
Merci de bien vouloir m'aider
Marsh Posté le 18-09-2005 à 17:16:09
Bonjour,
Quelqu'un sait-il s'il est possible sous excel d'échanger deux cellules de place entre elles : par exemple, on clique sur qq chose dans une barre d'outil, puis on clique sur les deux cellules à intervertir et le tour est joué ! (plutôt que de devoir en copier une, la mettre de côté, copier l'autre à sa place et enfin aller rechercher la première.
Merci