IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Intervertir 2 selections


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut [VBA-E]Intervertir 2 selections
    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. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Hello, y'avait longtemps
    Désolé je fais pas le pont

    mais je crois, qu'à force, tu sais lire et écrire dans une cellule
    (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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        a = InputBox("Range1? exemple: A1:B2")
        RangeTemp = Range("" & a & "")
        b = InputBox("Range2? exemple: A1:B2")
        Range("" & a & "") = Range("" & b & "")
        Range("" & b & "") = RangeTemp
    moi c'est ca que je voudrais faire mais là deja ca marche pas super, mon range 1 va dans le 2 et le 2 pas dans le 1

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tiens essai de comprendre ce code ... ( bon il copie que les données... si le format est aussi nécessaire.. faudra l'adapter ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    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

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Citation Envoyé par bbil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    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


    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 Envoyé par ouskel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Tableau(3),i,NoLigne,NoCol
    For i = 1 to 3
         Tableau(i) = Cells(NoLigne,i).value
    Next
     
    For i = 3 to 1 step-1
         NoCol = 4 -i
         Cells(NoLigne,NoCol).value = Tableau(i)
    Next
    (faut bien que jme foute de toi aussi des fois !!)


    En tout cas merci à vous 2 pour vos réponses et votre rapidité (en meme temps ya pas grand monde aujourdhui )

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Oh mais non mon dodo c'etait pas si mal ton code !!

    ( )





    c'est juste que je comprenais pas bien le

    je savais pas qu'on pouvait calculer le nombre de cellule d'une zone et je pensais que ton code ca allait que pour une ligne... ( )


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]deselectionner une selection
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/04/2006, 08h58
  2. [VBA-E]deplacer une selection de cellules
    Par richou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/03/2006, 12h50
  3. [VBA-E]Interdire la selection de cellule dans une feuille
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2006, 23h24
  4. [VBA-E] fenetre de selection de feuilles...pourquoi ?
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2005, 09h45
  5. Réponses: 2
    Dernier message: 27/10/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo