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 plusieurs cellules sous condition et coller uniquement ces cellules [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 14
    Par défaut Copier plusieurs cellules sous condition et coller uniquement ces cellules
    Bonjour à tous,

    Je viens chercher de l'aide de votre côté, étant donné mes nombreuses heures de recherches sans succès.
    Je vous explique l'objectif de ma macro :
    Je pars d'une feuille "base", sur laquelle je souhaite copier les cellules des colonnes A, B, C, et D si les cellules de la colonne J sont remplis par "AB". Je précise que là base finale sera sur 1000 lignes, mais que les résultats de la colonne J ne seront pas toujours les mêmes.
    Ensuite, je dois coller ces cellules sur la feuilles "synthèse", à la suite. Mais c'est ici que se pose mon problème. Je souhaite ne coller que les 4 premières cellules de la ligne, étant donné que dans le fichier final, les cellules suivantes de la feuille synthèse seront remplies.

    Voici donc le code que j'ai déjà développé :
    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
    Sub Macro1()
     
    Dim Cellule As Range
     
    Sheets("Base").Select
    For Each Cellule In Range("J3:J" & Range("J1003").End(3).Row)
        If Cellule.Value = "AB" Then
     
            With Sheets("Synthèse")
            Rows(Cellule.Row).Copy .Rows(.Range("A19").End(3).Row + 1)
            End With
     
        End If
    Next Cellule
     
    End Sub
    Cependant, ce code execute bien la condition, mais colle la ligne entière (ce qui est normal étant donné l'utilisation des rows vous me direz). Cependant je ne parviens pas à réécrire ce code... Je suis débutant en VBA et je pense que j'atteins mes limites.

    Merci d'avance

  2. #2
    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,

    De cette façon peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("A" & Cellule.Row & ":D" & Cellule.Row).Copy .Rows(.Range("A19").End(3).Row + 1)

  3. #3
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 14
    Par défaut
    Bonjour Theze,

    Merci pour cette réponse. Le code est amélioré car contrairement au mien, le votre permet bien de copier les 4 premières cellules.
    Cependant, lors du collage, les 4 cellules se collent à la suite jusqu'au bout de la ligne.

    Aurais-tu une solution pour "baliser" les colonnes de collage?

    Merci beaucoup!

  4. #4
    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 179
    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 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Autre approche avec la méthode AdvancedFilter (Filtre avancé)
    Dans cet exemple, on exporte les cellules des colonnes $A:$D de la feuille nommée [db] vers la feuille nommée [Synthèse] si le contenu de la colonne E est égal à "A"
    Attention : Pour que cela fonctionne, il faut impérativement que les en-têtes de colonne de la feuille db aient la même orthographe que celles de la feuille Synthèse
    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
    Sub T()
     ' Déclaration des variables objets
     Dim areaData As Range, areaExport As Range, areaCriteria As Range
     ' Attribution des références aux zones Data et Export
     With ThisWorkbook
      Set areaData = .Worksheets("db").Range("A1").CurrentRegion
      Set areaExport = .Worksheets("Synthèse").Range("A1:D1")
     End With
     ' Attribution de la référence de la zone des critères
     With areaData
      Set areaCriteria = .Offset(columnoffset:=.Columns.Count + 1).Resize(2, 1)
     End With
     ' Ecriture des critères
     With areaCriteria
      .Cells(1, 1) = "_fn_": .Cells(2, 1) = "=E2=""A"""
     End With
     ' Exportation des données suivant critères
     areaData.AdvancedFilter xlFilterCopy, areaCriteria, areaExport
     areaCriteria.Clear ' Supprime les critères
     Set areaData = Nothing: Set areaExport = Nothing: Set areaCriteria = Nothing
    End Sub
    A lire éventuellement Les filtres avancés ou élaborés dans Excel
    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

  5. #5
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 14
    Par défaut
    Bonjour Philippe,

    Merci pour cette réponse.
    J'ai tenté de l'adapter à mon tableur mais sans succès. Le critère ne semble pas s'appliquer...

  6. #6
    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
    Bonsoir,

    Cependant, lors du collage, les 4 cellules se collent à la suite jusqu'au bout de la ligne.
    C'est normale, puisque tu veux le copier sur toute la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .Rows(.Range("A19").End(3).Row + 1)
    Alors de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("A" & Cellule.Row & ":D" & Cellule.Row).Copy .Range("A19").End(3).Offset(1)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2011, 22h34
  2. Réponses: 4
    Dernier message: 14/12/2009, 12h53
  3. [VBA-E] Copier une cellule XL pour l'insérer dans un document Word
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/03/2009, 13h12
  4. copier une ligne et la coller dans une nouvelle
    Par alexkickstand dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2007, 20h10
  5. Copier une cellule XL pour l'insérer dans un document Word
    Par COCONUT2 dans le forum Contribuez
    Réponses: 1
    Dernier message: 19/07/2007, 09h50

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