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 multiple à copier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut Selection multiple à copier
    Bonjour,

    Je sais qu'il y a déjà de nombreuses discussions sur mon sujet, mais je n'arrive pas a trouver la solution que je recherche.

    Voila j'ai un classeur qui contient 52 onglet chacun correspondant à une semaine (onglet1 = Semaine 1, ...).
    Mon soucis est que je souhaite sélectionner sur une plage de données ("C4:M36"), qui correspond au Lundi, les cellules non vides puis les copier et les coller sur toutes les feuilles suivantes au même emplacement.

    J'ai réussi à trouver comment sélectionner les cellules non vides, j'ai réussi à trouver comment copier au même emplacement mais quand j'associe les 2 ça ne marche pas car il me dit qu'il ne peut pas copier une sélection multiple.

    Voila mon code :

    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
    'sélectionner toutes les cellules non vides sur plage C4 à M36
    Dim Cell As Range, Plage As Range, Adresse As Range
        ActiveSheet.Select
        Set Plage = Range("C4:M36")
        Set Adresse = Application.Union(Range("C4"), Range("M36"))
        For Each Cell In Plage
            If Cell <> "" Then
                Set Adresse = Application.Union(Adresse, Cell)
            End If
        Next
        Adresse.Select
     
    'copier la sélection et la coller sur les autres feuilles
        Selection.Copy
        For i = ActiveSheet.Index To Sheets.Count
            Sheets("Semaine " & i).Select
            Range("C4, P4, AC4").Select
            ActiveSheet.Paste
        Next
     
    End Sub
    Quelqu'un saurait-il me dire ce qu'il faut rajouter dans mon code pour que ça marche SVP ?

    Merci

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    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
    'sélectionner toutes les cellules non vides sur plage C4 à M36
    Dim Cell As Range, Plage As Range, Adresse As Range
    ActiveSheet.Select
    Set Plage = Range("C4:M36")
    Set Adresse = Application.Union(Range("C4"), Range("M36"))
    For Each Cell In Plage
    If Cell <> "" Then
    Set Adresse = Application.Union(Adresse, Cell)
    End If
    Next
    Adresse.Select
     
    'copier la sélection et la coller sur les autres feuilles
    Selection.Copy
    For i = ActiveSheet.Index To Sheets.Count
    Sheets("Semaine " & i).Select
    Range("C4, P4, AC4").Select
    ActiveSheet.Paste
    Next
     
    End Sub
    Pour ne pas t'embeter , pourquoi ne pasle copier entier? tu ne veux pas effacer les données des differentes pages ?
    Ma solution serait un dictionnaire, avec comme clef la position range (seulement les ranges avec une valeur) et comme valeur valeur du range.
    Je sais pas si ca t'aide, je peux te le coder c'est pas tres compliqué, mais a moins que quelqu'un ai une solution plus adaptée, car utiliser un dico juste pour ca ca semble un peu démesuré, mais je trouve pas trop une autre solution.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je ne comprends pas trop ce que tu veux faire, tu veux copier les cellules non vides dans une autre feuille mais exactement au même endroit donc, il y aura forcément des "trous" dans ta plage dus aux cellules vides de la plage source !

    Hervé.

  4. #4
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut Reponse Hervé
    Non pas obligatoirement Hervé.

    En fait, je fais un planning pour une clinique. Les patients viennent 3 fois par semaine (lundi/mercredi/vendredi ou mardi/jeudi/samedi). Et ce pendant toute l'année. Mais il se peut que le patient parte en vacance par exemple pour 2 semaines. Donc mon objectif est de le supprimer pour les 2 semaines où il part mais pas le reste des semaines.

    En fait j'ai 2 macros. Une pour recopier lundi/ mercredi/vendredi et l'autre pour les 3 autres jours. des qu'on fait une modif le lundi on appuie sur ctrl + l pour que ça modifie sur toutes les semaines suivantes. Mais si je supprime mon patient pour les deux semaines où il part avec ma solution, dès que je vais appuyer sur ctrl + l il va être supprimer partout. C'est pourquoi je pensais ne copier que les cellules non vides.

    Je ne sais pas si j'ai été claire dans mon explication.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Poste un classeur exemple avec la feuille source où ont doit récupérer les valeurs et une ou deux feuilles ayant le résultat voulu. Remplace les données confidentielles par des données bidons.

    Hervé.

  6. #6
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    Voila je souhaite copier tout ce qui est fluoté en faune dans la page 1 dans ce qui est fluoté en jaune dans la page 2.
    EXEMPLE.xlsx

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

Discussions similaires

  1. Select multiple
    Par lfournial dans le forum Struts 1
    Réponses: 20
    Dernier message: 24/02/2011, 12h14
  2. copier/coller selection multiple
    Par marcoole dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/01/2011, 18h58
  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, 12h31
  4. <select multiple ...>
    Par ayobo dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 08h49
  5. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16

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