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 colonne avec conditions


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
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 29
    Par défaut copier coller colonne avec conditions
    bonjour tout le monde
    j'ai 12 feuilles: Feuil1 Feuil2 ...... Feuil12, je veux les combiner dans une autre: Combined, le problème c'est que les colonnes n'ont pas le même classement dans toutes les feuilles
    je voudrai copier et coller les colonnes si les entêtes sont identiques à celles de la feuille Combined, mais ça marche pas
    voici mon code
    merci

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub copierColler()
    Dim recherche As String
    Dim Line As Range
    Dim Num As Integer
    Dim deligne As Integer
    Dim derniereLigne As Integer
     
     
        For j = 1 To 12
            For i = 1 To 10
                    'entête de tableau à rechercher
                  recherche = Worksheets("Feuil" & j).Cells(1, i)
     
                     'copier la colonne
                  derniereLigne = Worksheets("Feuil" & j).Range("A" & Rows.Count).End(xlUp).Row
                  Worksheets("Feuil" & j).Range(Cells(2, i), Cells(derniereLigne, i)).Copy
     
                     'recherche la colonne du même entête
                  Set Line = ThisWorkbook.Worksheets("Combined").Rows("1").Find(What:=recherche, LookIn:=xlValues, lookat:=xlWhole)
                        If Not Line Is Nothing Then
                            Num = Line.Column
     
                    'coller la colonne
                  deligne = Worksheets("Combined").Range("A" & Rows.Count).End(xlUp).Row + 1
                  Worksheets("Combined").Range(Cells(deligne, Num), Cells(deligne + derniereLigne, Num)).Paste
     
                    End If
     
            Next i
        Next j
    End Sub

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Aide
    Bonjour
    voici un fichier qui répond à la demande (je n'ai fait que 3 feuilles et 1 COMBINED)

    Le code est le suivant :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub COMBINER()
     
    If MsgBox("Purger COMBINED avant exécution ?", vbYesNo, "Réponse attendue") = vbYes Then
    Sheets("COMBINED").Range("A2:ZZ65000").ClearContents
    End If
    Application.ScreenUpdating = False
     
            Dim i_feuille As Integer
            For i_feuille = 1 To Application.Max(Range("PLAGE_FEUILLES"))
                    Dim Ma_Ligne As String
                    Ma_Ligne = Sheets("COMBINED").UsedRange.Rows.Count + 1
     
                Dim i_intitulé As Integer
                For i_intitulé = 1 To Application.CountA(Range("plage_intitules"))
     
                Dim intitulé As String
                intitulé = Sheets("Relation feuilles").Range("A" & i_intitulé + 2).Value
     
                If Val(Application.WorksheetFunction.VLookup(intitulé, Range("Plage_correspondance"), i_feuille + 1, False)) > 0 Then
                Dim Ma_colonne As Integer
                Ma_colonne = Application.WorksheetFunction.VLookup(intitulé, Range("Plage_correspondance"), i_feuille + 1, False)
                Sheets(i_feuille).Select
                Range(Cells(2, Ma_colonne), Cells(65000, Ma_colonne)).Select
                Range(Cells(2, Ma_colonne), Cells(Selection.CurrentRegion.Rows.Count, Ma_colonne)).Select
                Selection.Copy
                Sheets("COMBINED").Select
                    Cells(Ma_Ligne, i_intitulé).Select
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                Application.CutCopyMode = False
                End If
                Next i_intitulé
     
            Next i_feuille
     
    Application.ScreenUpdating = True
    MsgBox "terminé"
     
    End Sub
    Après, je ne suis ps très fier de cette partie là en particulier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Range(Cells(2, Ma_colonne), Cells(65000, Ma_colonne)).Select
                Range(Cells(2, Ma_colonne), Cells(Selection.CurrentRegion.Rows.Count, Ma_colonne)).Select
    J'aimerai qu'un "pro" regarde ca de plus près et réponde pour que je progresse également
    Je n'ai pas réussi autrement à lui dire de sélectionner en une étape de la ligne 2 à la dernière dans la colonne de mon choix ...

    Pour palier à des besoins d'identification de colonne en VBA, j'ai créé une feuille "Relation feuilles" qui reprend les intitulés de colonnes de ta feuille COMBINED et qui cherche le numéro de colonne afférent dans chacune des feuilles.
    Là encore, un "PRO" du VBA pourra sans doute faire plus propre.

    Fabien
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 29
    Par défaut merci bcp
    le code marche bien merci beaucoup, mais il y a un petit problème : en deuxième essaye il laisse des lignes vides (voir image)

    Nom : Capture.PNG
Affichages : 160
Taille : 56,9 Ko

  4. #4
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Réponse
    Salut
    je n'arrive pas à générer cette erreur.
    Chez moi, tout marche impec.

Discussions similaires

  1. Copier coller colonnes sous conditions avec mise à jour auto
    Par macgivre67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/01/2020, 09h49
  2. [XL-2016] Copier coller des colonnes avec conditions
    Par msamirsa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/04/2018, 16h22
  3. [XL-2010] Copier coller lignes avec condition
    Par kafountines dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/10/2015, 20h38
  4. Excel 2010 Copier coller celulle avec condition ligne par ligne
    Par gilles171 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2014, 10h42
  5. copier/coller lignes sous condition colonne vers autre feuille
    Par juniorglobal08 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/05/2009, 17h29

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