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 :

Copier coller selection multiple [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 57
    Par défaut Copier coller selection multiple
    Bonjour,

    Mon but est de faire un copier coller sur une sélection multiple.
    Je sais le faire d'une feuille à l'autre mais pas d'une ligne à l'autre.

    Merci pour votre aide

    Voici ma macro qui ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Macro1()
    Application.EnableEvents = False
     Range("B425:E425,J425:K425,N425,P425:W425").Select
     For Each cel In Selection
     cel.Copy
     Range(Cells(cel.Address.Row + 1, cel.Address.Column)).Select
     ActiveSheet.Paste
     Next cel
    Application.EnableEvents = True
    End Sub
    Voici la macro qui fonctionne d'une feuille à l'autre mais sur la même ligne et pas celle d'en dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Macro1()
    Application.EnableEvents = False
     Range("B425:E425,J425:K425,N425,P425:W425").Select
     For Each cel In Selection
     cel.Copy
     Sheets("Feuil1").Select
     Range(cel.Address).Select
     ActiveSheet.Paste
     Next cel
    Application.EnableEvents = True
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce n'est pas très clair pour moi. Que voulez-vous faire exactement ?
    Où voulez-vous copier la plage "B425:E425,J425:K425,N425,P425:W425" ? A la suite l'un de l'autre sur la même ligne soit de B425 à P425 ?

    A la ligne 5 de votre second code publié, que représente l'objet Selection une plage de cellules contiguë ou pas ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, en voyant ce que tu essaies de faire avec ta macro, j'en déduis que tu veux sélectionner des cellules non contigües et les recopier sur la ligne juste en dessous. Voici une macro qui le fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro1()
     
    Dim plage As Range
     
    Set plage = Union(Range("B425:E425"), Range("J425:K425"), Range("N425"), Range("P425:W425"))
    plage.Offset(1).Value = plage.Value
     
    End Sub
    Pour info, je vois que tu as tendance à utiliser .select, la plupart du temps c'est inutile, tu peux affecter des valeurs sans devoir sélectionner.

  4. #4
    Membre confirmé
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 57
    Par défaut
    Bonjour Philippe,

    Je veux que les données de la plage : Range("B425:E425,J425:K425,N425,P425:W425")
    s'écrive dans la plage : Range("B426:E426,J426:K426,N426,P426:W426")
    Au même emplacement de colonne mais dans la ligne en dessous.

    Cordialement

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Et bien Franc avait compris le problème et a répondu.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 57
    Par défaut
    Bonjour Franc,

    Votre solution fonctionne, presque.

    Pour la plage B426:E426 j'ai bien les même données que celle de B425:E425
    Pour la plage J426:K426 Il écrit les données de B425
    Pour la plage N426 Il écrit aussi les données de B425
    Pour la plage de P426:W426 il écrit les données de B425 dans chaque cellules

    Je vais essayé de comprendre pourquoi dans les autres plages il écrit que la première donnée.

    Merci

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Oups, j'ai écrit à la va vite sans tester, voici le code corrigé et testé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macro1()
     
    Dim plage As Range
    Dim cel As Range
     
    Set plage = Union(Range("B425:E425"), Range("J425:K425"), Range("N425"), Range("P425:W425"))
    For Each cel In plage.Areas
        cel.Offset(1).Value = cel.Value
    Next cel
     
    End Sub

  8. #8
    Membre confirmé
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 57
    Par défaut
    Merci Franc cela fonctionne parfaitement

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

Discussions similaires

  1. [XL-2016] Copier coller selection dans nouveaux classeur
    Par Chamboultou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/11/2018, 12h05
  2. copier/coller selection multiple
    Par marcoole dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/01/2011, 19h58
  3. [XL-2007] macro pour copier coller des selections multiples
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2009, 13h31
  4. [Excel] selection et copier-coller de cellule sans activer les sheets
    Par franckB dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/04/2007, 00h26
  5. VB Excel : copier coller selection de plusieurs lignes
    Par skuzo_mars dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/01/2007, 15h48

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