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 :

Intervertir 2 sélections


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut Intervertir 2 sélections
    Bonjour,

    Je fais face à un petit problème qui ne devrait pourtant pas en être un!

    Je cherche à intervertir 2 plages de sélections. Je fais donc la manipulation classique qui est de stocker la 1ère dans une variable puis de mettre la 2nde à la place de la 1ère, et enfin coller la variable à la place de la 2nde.

    Voici mon code, mais il ne fait que mettre la 1ère à la place de la 2nde:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set C = B.Range(B.Range("C3"), B.Range("C3").End(xlDown))
    B.Range(B.Range("D3"), B.Range("D3").End(xlDown)).Copy B.Range("C3")
    C.Copy B.Range("D3")
    D'où vient mon problème? Merci!

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    bonjour
    set C= est un pointeur tu ne copy pas les donné en l'utilisant. C renvoie vers la plage et ne contient aucune donnée, si tu modifie la plage tu modifie C
    Pour t'en convaincre (enfin moi je trouve ca convainquant)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim c As Range
    Set c = Range("A5")
    Range("a5") = 44
    MsgBox c
    Je passerais par un tableau peut être ou plus simplement par une troisième colonne dans un autre onglet par exemple

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Je te propose de lancer l'enregistreur de macros et de faire ce qui suit (c'est un copié/collé, j'ai eu la flegme de tout réécrire ) :

    Cliquez tout d'abord sur le numéro de la (ou les) ligne (ou la lettre de la colonne). Cette action met en surbrillance toute la ligne (colonne) bordée d'un trait noir épais.

    Positionnez le curseur sur ce trait pour voir apparaître la flèche de déplacement. Vous pouvez ainsi faire glisser la ligne (colonne) et la relâcher à un nouvel endroit.
    Ca revient à ce que tu souhaites si je ne me trompe pas. Il ne te restera plus alors qu'à adapter

    A+

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Salut krovax, la forme depuis hier ?!
    Si si, j'en étais bien convaincu, et j'avais bien pensé à copier ailleurs comme tu me le suggère, mais je cherchais quelque chose de plus "propre"

    DeaD78: Merci, mais ce n'est pas ce que je cherche à faire, avec ta solution, je perd les données qui y a dans ma colonne d'origine

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Hmm, lorsque tu déplaces une colonne, les valeurs viennent avec normalement...

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Oui, mais en gros, voici ce que je peux avoir au départ:

    1 2
    1 2
    1 2
    1 2
    1 2

    Et voici ce qu'il me faudrait à l'arrivée:

    2 1
    2 1
    2 1
    2 1
    2 1

    Une inversion de colonne en quelque sorte

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bon, dans ce cas, je passerais moi aussi par une 3ème colonne. Je pense que le jeu n'en vaut pas la chandelle pour passer par un tableau.

    Disons qu'on passe par la colonne E :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    columns("c:c").cut destination:=columns("e:e")
    columns("d:d").cut destination:=columns("c:c")
    columns("e:e").cut destination:=columns("d:d")
    Je l'ai fait à main levée mais ça devrait être ça. Sinon en ce qui concerne le fait d'être "propre", désactive l'affichage et ça sera tout aussi propre qu'une autre solution

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

Discussions similaires

  1. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  2. Empécher la sélection du texte des pages dans un WebBrowser
    Par DevelOpeR13 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 05/06/2003, 18h36
  3. Sélection texte d'un TMemo
    Par nmathon dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/05/2003, 16h17
  4. Couleur de sélection par défaut
    Par sicard_51 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/04/2003, 23h35
  5. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 00h57

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