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 :

Selection de plusieurs zone d'une feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 100
    Par défaut Selection de plusieurs zone d'une feuille
    Bonjour le forum,

    Je souhaite créer une sélection qui comporte plusieurs zone d'une feuille pour que je puisse la copier puis ensuite coller cette sélection sur une ligne unique.

    Par exemple :

    Je veux copier dans ma sélection la Cellule A1 + les données de la cellule "A4" à "D4".

    Ensuite je veux copier cette selection sur une ligne d'une autre feuille pour que :
    feuille1!A1 soit copié sur la cellule feuille2!A1
    feuille1!A4 soit copié sur la cellule feuille2!B1
    feuille1!B4 soit copié sur la cellule feuille2!C1
    feuille1!C4 soit copié sur la cellule feuille2!D1
    feuille1!D4 soit copié sur la cellule feuille2!E1

    Je sais sélectionner plage et la copier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    range("A4", "D4").Select
    Selection.Copy
    Je sais coller la sélection
    Mais je ne sais pas mettre plusieurs plage dans ma sélection.

    Si quelqu'un peut m'aider et en espérant avoir été assez clair :-)

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,


    un exemple à adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ZT02_Union()
    Dim MyCell As Range
    Dim i As Long, j As Long, k As Long, l As Long
    i = 9
    j = 3
    k = 10
    l = 3
    Set MyCell = Union(Cells(i, j), Cells(k, l))
     
    Worksheets("Fwork").Range(MyCell.Address).Copy
    Worksheets("Fwork").Range("A" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    End Sub

    Edit : je suis sur qu'il y a plus simple mais aujourd'hui...

    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
    Dim F1 As Worksheet, F2 As Worksheet, plage As Range, macell As Range
     
    Set F1 = ThisWorkbook.Worksheets("Feuil1")
    Set F2 = ThisWorkbook.Worksheets("Feuil2")
    With F1
        Set plage = Union(.Range("a1"), .Range("A4"), .Range("B1"), .Range("B4:D4"))
    End With
     
    i = F2.Cells(65536, 1).End(xlUp).Row + 1 ' Dernier ligne vide
     
    For Each macell In plage
        i = i + 1
        F2.Cells(i, 1) = macell 'recopie dans une seule colonne
    ' F2.Cells(1, i) = macell ' Edit => recopie dans une seule ligne doit être <= 256
    Next

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Je me trompe peut etre, mais si la destination de chaque cellule source est précise et ne semble suivre de logique, il est plus simple d'écrire directement comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Sheets("Feuil2").range("A1").value=Sheets("Feuil1").range("A1").value
    Sheets("Feuil2").range("B1").value=Sheets("Feuil1").range("A4").value
    Sheets("Feuil2").range("C1").value=Sheets("Feuil1").range("B4").value
    Sheets("Feuil2").range("D1").value=Sheets("Feuil1").range("C4").value
    Sheets("Feuil2").range("E1").value=Sheets("Feuil1").range("D4").value

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 100
    Par défaut
    Je vais essayer la méthode aalex.

    Pour jfontaine, j'ai fait un exemple pour expliquer mon problème. Mais j'ai besoin de faire des sélection car il ne s'agit jamais des memes cellules à alimenter

    Je vous tiens informé a ++

  5. #5
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,

    Mais j'ai besoin de faire des sélection car il ne s'agit jamais des memes cellules à alimenter
    Je suis d'accord avec ce qu dit JFontaine, pour programmer efficacement il est mieux de savoir ce que l'on veut faire.

    Avec l'exemple que tu nous donnes on ne voit pas bien quelle est la règle de selection et de copie :

    feuille1!A1 soit copié sur la cellule feuille2!A1
    feuille1!A4 soit copié sur la cellule feuille2!B1
    feuille1!B4 soit copié sur la cellule feuille2!C1
    feuille1!C4 soit copié sur la cellule feuille2!D1
    feuille1!D4 soit copié sur la cellule feuille2!E1
    En tout cas si tu parts toujours d'une feuille vers une autre il est bien de les instancier, comme je l'ai fait dans mon dernier Edit.

    En relisant ton post ce matin je me rend compte que je n'avais pas bien lu ce que tu demandais, mon code recopie tout dans une seule colonne alors que dans ton exemple on recopie tout sur une ligne.

    Si c'est possible peux tu nous expliquer le critères de selection dans la feuille 1 (par exemple toutes les cellule renseignées...) et de destination

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 100
    Par défaut
    Bonjour,

    Je n'ai pas instancié les feuilles mais je les déclare dans des constantes... Ensuite je traite mes données onglet par onglet donc l'instanciatin ne m'est pas nécessaire.

    Je vous ai donné un exemple... Pour bien expliquer mon problème.

    En fait je travialle sur un tableau dynamique, donc les cellules à copier varient selon la taille du tableau...

    Je suis passé sur une autre solution... finalement le fichier source comporte les deux valeurs que j'ai beosin sur des cellules fixent donc je fais une insertion des valeurs en dur.

    Merci tout de même pour vos réponses.

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

Discussions similaires

  1. Tri automatique sur plusieurs zones d'une même feuille
    Par PC1.FORUM dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/12/2013, 06h49
  2. Imprimer plusieurs page sur une feuille ?!?
    Par Sheriff dans le forum Word
    Réponses: 0
    Dernier message: 19/12/2007, 16h11
  3. Réponses: 3
    Dernier message: 11/07/2007, 07h44
  4. Selection de plusieurs elements dans une invite
    Par ecayuno dans le forum BIRT
    Réponses: 2
    Dernier message: 29/04/2007, 21h25
  5. Selection de plusieurs colonnes avec une zone de liste
    Par vinzeffect dans le forum Access
    Réponses: 3
    Dernier message: 20/01/2007, 22h51

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