![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre émérite
![]() Date d'inscription: février 2006
Âge: 22
Messages: 883
|
Hello,
on me demande d'intervertir 2 selections de meme taille. par exemple, on selectionne un range de A1->B2 et A3->B4 puis on tape le raccourci clavier de la macro et les valeurs de ces 2 zones sont échangées (A1=A3 et A3=A1 etc...) mais je ne vois pas comment faire ca (est ce faisable?). Pour l'instant mon idée est de le faire en demandant les 2 zones à l'utilisateur avec des inputbox puis apres ca devrait plus etre trop dur mais bon c'est pas top et on gagne pas enormement de temps une ptite idée? |
|
|
|
|
|
#2 (permalink) | ||
|
Membre émérite
![]() Date d'inscription: février 2006
Âge: 22
Messages: 883
|
Citation:
Citation:
(jcrois que tu commence à avoir l'habitude)Je pense (si j'ai bien compris ce que tu me dis) que ta solution permet d'inverser les valeurs d'une selection. enfin jme trompe peut etre Code :
a = InputBox("Range1? exemple: A1:B2") RangeTemp = Range("" & a & "") b = InputBox("Range2? exemple: A1:B2") Range("" & a & "") = Range("" & b & "") Range("" & b & "") = RangeTemp |
||
|
|
|
|
|
#3 (permalink) |
![]() |
tiens essai de comprendre ce code ... ( bon il copie que les données... si le format est aussi nécessaire.. faudra l'adapter ...)
Code :
Sub test() Dim r As Range Dim r1 As Range Dim r2 As Range Dim c As Variant Dim i As Integer Set r = Selection Debug.Print "--- Sélection en cours : " & r.Address If r.Areas.Count <> 2 Then MsgBox "Sélectionner 2 Zones dans feuille ( utiliser touche ctrl)" Exit Sub End If Set r1 = r.Areas(1) Set r2 = r.Areas(2) If r1.Count <> r2.Count Then MsgBox "Les 2 zones doivent être de même taille" Exit Sub End If Debug.Print " Zone 1 : " & r1.Address Debug.Print " Zone 2 : " & r2.Address For i = 1 To r1.Count c = r1(i) r1(i) = r2(i) r2(i) = c Next End Sub
__________________
bbil : Impératif "A LIRE AVANT DE POSTER" |
|
|
|
|
|
#4 (permalink) | ||
|
Membre émérite
![]() Date d'inscription: février 2006
Âge: 22
Messages: 883
|
Citation:
alors là.... un grand merci !! T'a bien compris ce que je cherchais à faire et mon gros souci c'etait surtout de voir les selections faites avant le lancement de la macro. Entre les .address les .areas.count ... j'men serais pas sorti seul ( aller regardons ce code qui parait quand meme ridicule à coté de celui de bbil Citation:
(faut bien que jme foute de toi aussi des fois !!)En tout cas merci à vous 2 pour vos réponses et votre rapidité )
|
||
|
|
|
|
|
#5 (permalink) |
|
Membre émérite
![]() Date d'inscription: février 2006
Âge: 22
Messages: 883
|
Oh mais non mon dodo c'etait pas si mal ton code !!
( ) c'est juste que je comprenais pas bien le Code :
For i = 1 to 3
|
|
|
|
|
![]() |
![]() |
||
[VBA-E]Intervertir 2 selections
|
||
| Outils de la discussion | |
|
|