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 :

Macro de copie de tableau en fonction d'une cellule [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut Macro de copie de tableau en fonction d'une cellule
    Bonjour à tous,

    Le titre n'est pas forcément très clair, je vais donc exposé plus précisement mon problème.

    J'ai dans une feuille excel un tableau de renseignement d'une pièce (matériau, géométrie, etc.).

    L'utilisateur, avant de renseigner ce champs, doit indiquer dans une cellule le nombre de pièce pour son étude.

    Grâce à cela, j'aurais souhaité avoir une MàJ du nombre de tableau automatique égal et en fonction à la première celulle utilisateur.

    Avec une base d'un tableau, si l'utilisateur demande 5 pièces, apparatront alors 4 tableaux supplémentaires. A l'inverse si l'utilisateur n'en veux plus que 3, affichage de 3 tableaux uniquement.

    N'hésitez pas à me demander si ce n'est pas assez clair...

    Merci d'avance.

    Omnbre

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Bonjour,

    activer le Générateur de macros, effectuer les manipulations : une base de code est livrée sur un plateau ‼



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    J'avais effectivement utilisé cette fonction pour pouvoir avoir un aperçu de la base pour la copie. Cependant, je ne sais pas comment l'adapter à ma cellule d'entrée utilisateur...

    Merci

    Omnbre

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Sans tenants et aboutissants ni voir de code (balisé conformément aux règles de ce forum) ni connaitre l'adresse de cette cellule :


  5. #5
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Un code générique suffirais mais bon, voici les adresses :

    Cellule pilotante : D4

    Plage du tableau : B11 : D29

    Objectif : Afficher un nombre de tableau égal à la celulle pilotante.

    Pour le code je n'en ai pas, je n'ai pas encore l'aisance nécessaire en VB pour sortir au moins 2 lignes valides...

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ce que demande Marc-L, c'est le code fourni par l'enregistreur de macro, quand tu effectues manuellement les actions

    tu indiques avoir essayé, sans réussir à l'adapter/contextualiser

    c'est ici qu'on va intervenir : t'aider à adapter ce code

    montre-le nous, et si tu ne l'as plus, refais le
    et explique les adaptations que tu n'arrives pas à faire dedans

  7. #7
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Autant pour moi!

    Voici le code très bateau que j'ai réussi à sortir de la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Copy()
    '
    ' Copy Macro
    '
     
    '
        Range("B11:D28").Select
        Selection.Copy
        Range("F11").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
     
    End Sub
    J'arrive à interpréter ce qu'il m'indique même si je crois que l'on peut raccourcir cette fonction de copier/coller.

    Cependant à cela j'aimerai ajouter le pilotage du nombre de copie par la cellule de la feuille (qui pour le coup est bien en D4).

    En gros, instauré une boucle (LoopUnitl je pense) jusqu'à la valeur de la cellule.

    Merci

  8. #8
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Re-bonjour,

    Après plusieurs manip j'ai réussi à faire une première étape avec ce 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
    Sub Copy()
    Dim nbre_piece As Integer
    Dim i As Integer
    nbre_piece = 1
    i = 6
     
    Range("B11:D28").Select
    Selection.Copy
     
    Do Until nbre_piece = Cells(4, 4).Value
     
        Cells(11, i).Select
        ActiveSheet.Paste
     
        nbre_piece = nbre_piece + 1
     
        i = i + 4
     
    Loop
     
    End Sub
    Il doit pas du tout être optimisé mais cela fonctionne pour ce que je veux faire. Je vais maintenant tenter de rendre un peu plus dynamique l'ensemble lorsque je baisse "nbre_piece" de sorte à supprimer les copies en trop.
    Si vous avez des suggestions pour optimiser le code ce sera avec plaisir.

    Omnbre

  9. #9
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    voici pour ton optimisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Copy()
    Dim nbre_piece As Integer
    Dim i As Integer
     
    nbre_piece = Cells(4, 4).Value
     
    For i = 1 To nbre_piece
        With Range("B11:D26")
            .Copy Cells(11, 4 * (i - 1) + 6)
        End With
    Next i
     
    End Sub

    concernant la suppression des tableaux surnuméraires, n'est-il pas préférable, à chaque création, de tout supprimer pour repartir à blanc ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Effectivement l'optimisation est excellente.

    Pour ce qui est du changement du nombre de tableau effectivement tout supprimer pour ré-afficher serait une solution.

    Question supplémentaire, ayant plusieurs tableau à modifier, peut on fragmenter la plage?

  11. #11
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    c'est à dire ?

    tu veux découper ton tableau ("B11:D26") en plusieurs morceaux ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Pas exactement.
    J'ai ce tableau à copier mais également d'autres tableaux situés plus bas sur la feuille. Et enfin un tableau sur une autre feuille qui respecte les mêmes décalages.

  13. #13
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    en ligne 8 : tu peux changer la position du tableau que tu dois copier
    en ligne 9 : tu peux changer la position de la première cellule de la plage recevant la copie


    sans un descriptif exact des positions de départ et d'arrivée, je ne peux pas aller plus loin

  14. #14
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    J'ai monté ce petit test Pour bien montrer l'exemple.

    Tu trouvera sur la feuille 1 trois tableaux dont seulement deux à dupliquer. Mais égelement sur la feuille 2 un tableau à dupliquer.
    N'hésite pas si tu as des questions.

    Merci

    Omnbre
    Fichiers attachés Fichiers attachés

  15. #15
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ok pour le "départ", mais où est l'arrivée de chacun de ces tableaux ?

    pourquoi un tableau est noté "invariant" ? il ne dois pas être copié ?

  16. #16
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Oui effectivement je me suis mal exprimé sur cet exemple.

    Les arrivés de chaque tableau sont les même que pour le premier. décalage vers la droite avec une colonne d'écart.
    Pour le tableau invariant effectivement il ne doit pas être copier. C'est pour cela que je t'avais demandé s'il était possible de frangmenter une plage de données ou si l'on était obligé d'effectuer une boucle pour chaque tableau.

    Le tableau en feuille 2 devra également être copié vers la droite avec une colonne d'écart.

  17. #17
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    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
    Sub Copy()
    Dim nbre_piece As Integer
    Dim Col as Long
    Dim i As Integer
     
    nbre_piece = Cells(3, 3).Value
     
    For i = 1 To nbre_piece
        Col = 4 * (i - 1) + 6
        With Feuil1
            .Cells(7, 2).Resize(18, 3).Copy .Cells(7, Col)
            .Cells(44, 2).Resize(13, 3).Copy .Cells(44, Col)
        End With
     
        With Feuil2
            .Cells(4, 2).Resize(21, 3).Copy .Cells(4, Col)
        End With
    Next i
     
    End Sub

  18. #18
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Alors là bravo

    J'avou que le code que j'avais continué de mon côté est légèrement moins optimisé et plus lent...

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    Sub Copy()
    Dim nbre_piece As Integer 'Déclare le nombre de pièce en début d'étude
    Dim i As Integer 'Déclare la variable i
    Dim ColB As Integer 'déclare la colonne B
    Dim ColC As Integer 'déclare la colonne C
    Dim ColD As Integer 'déclare la colonne D
    Dim ColE As Integer 'déclare la colonne E
    Dim lColB As Integer 'déclare la largeur colonne B
    Dim lColCDE As Integer 'déclare les largeurs colonnes C, D et E
    Dim ColDDEB As Integer 'déclare la colonne B feuille details_des_effets
    Dim ColDDEC As Integer 'déclare la colonne C feuille details_des_effets
    Dim ColDDED As Integer 'déclare la colonne D feuille details_des_effets
    Dim lColDDEB As Integer 'déclare la largeur colonne B feuille details_des_effets
    Dim lColDDEC As Integer 'déclare la largeur colonne C feuille details_des_effets
    Dim lColDDED As Integer 'déclare la largeur colonne D feuille details_des_effets
     
     
     
     
    ColB = 6 'Désigne la colonne B
    ColC = 7 'Désigne la colonne C
    ColD = 8 'Désigne la colonne D
    ColE = 9 'Désigne la colonne E
    ColDDEB = 6 'Désigne la colonne B feuille Details_des_effets
    ColDDEC = 7 'Désigne la colonne C feuille Details_des_effets
    ColDDED = 8 'Désigne la colonne D feuille Details_des_effets
    lColB = 21.86 'Donne la largeur colonne B
    lColCDE = 15.43 'Donne la largeur colonnes C,D et E
    lColDDEB = 42.86 'Donne la largeur colonne B feuille Details_des_effets
    lColDDEC = 18.29 'Donne la largeur colonne C feuille Details_des_effets
    lColDDED = 14.71 'Donne la largeur colonne D feuille Details_des_effets
    nbre_piece = 1 'Désigne le nombre de pièce à la base
    i = 6 'Placement de la première copie où i est une colonne
     
     
     
            Sheets("Empilage").Select
            Worksheets("Empilage").Range("B11:D46").Select
            Selection.Copy
     
        Do Until nbre_piece = Cells(4, 4).Value         'Copie des tableaux de déclaration des pièces mâles et femelles
     
     
            Worksheets("Empilage").Cells(11, i).Select
            ActiveSheet.Paste
            Cells(11, ColB).ColumnWidth = lColB
            Cells(11, ColC).ColumnWidth = lColCDE
            Cells(11, ColD).ColumnWidth = lColCDE
            Cells(11, ColE).ColumnWidth = lColCDE
     
     
            nbre_piece = nbre_piece + 1
            ColB = ColB + 4
            ColC = ColC + 4
            ColD = ColD + 4
            ColE = ColE + 4
            i = i + 4
     
     
        Loop
     
     
     
            nbre_piece = 1
            i = 6
     
            Worksheets("Empilage").Range("B69:D157").Select
            Selection.Copy
     
        Do Until nbre_piece = Worksheets("Empilage").Cells(4, 4).Value     'Copie des tableaux de résultats des pièces mâle et femelles
     
     
            Worksheets("Empilage").Cells(69, i).Select
            Worksheets("Empilage").Paste
            nbre_piece = nbre_piece + 1
            i = i + 4
     
        Loop
     
     
     
            nbre_piece = 1
            i = 5
     
            Worksheets("Empilage").Range("A163:D167").Select
            Selection.Copy
     
        Do Until nbre_piece = Worksheets("Empilage").Cells(4, 4).Value
     
            Worksheets("Empilage").Cells(163, i).Select
            Worksheets("Empilage").Paste
            nbre_piece = nbre_piece + 1
            i = i + 4
        Loop
     
     
     
            nbre_piece = 1
            i = 6
     
            Sheets("Details_des_effets").Select
            Worksheets("Details_des_effets").Range("B4:D207").Select
            Selection.Copy
     
        Do Until nbre_piece = Worksheets("Empilage").Cells(4, 4).Value
     
            Worksheets("Details_des_effets").Cells(4, i).Select
            Worksheets("Details_des_effets").Paste
            Cells(4, ColDDEB).ColumnWidth = lColDDEB
            Cells(4, ColDDEC).ColumnWidth = lColDDEC
            Cells(4, ColDDED).ColumnWidth = lColDDED
     
     
     
            nbre_piece = nbre_piece + 1
            ColDDEB = ColDDEB + 4
            ColDDEC = ColDDEC + 4
            ColDDED = ColDDED + 4
            i = i + 4
        Loop
     
    End Sub
    En tout cas les 2 codes sont excellents. Le code de Marc est légèrement plus poussé avec la conservation des largeur de colonnes.

    J'aurais cependant besoin d'une petite explication des fonctions utilisées surtout pour les déclarations des plages à copier. Je n'arrive pas à comprendre comment elles sont trouvées.

    A savoir est il possible d'abuser un petit peu plus et de vous demander une sorte de fonction dynamique qui permet de supprimer les tableaux en trop si jamais le nombre de pièces est baissé?

    Vous trouverez également ci-joint le fichier original.

    Dans ce excel, même chose que pour le "Test"

    Feuille 1 : tableaux à copier : Plage(B1128), (B30,D46), (B69,D81), (B83,D95),(B100,D112),(B114,D126),(B131,D143),(B145,D157) Une colone intersticielle entre chaque tableau.
    Plage (A163,D167) pas de colonne intersticielle.

    Feuille 2 : Plage (B4,D207) une colonne intersticielle entre les tableaux

    Feuille3 : Pas de modif

    Feuille 4 : Copie de la colonne E vers la droite, toujours suivant nbre_piece en feuille 1 avec 4 colonne de décalage et masquage des colonnes intersticielles.

    Un grand merci à vous deux!
    Fichiers attachés Fichiers attachés

  19. #19
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Comme quoi une présentation digne de ce nom est nécessaire !
    Et joindre un classeur exemple n'étant pas l'exact reflet du réel est être optimiste quant sa capacité d'adaptation !

    Je ne visualise pas pour la feuille 4 …

    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 Dupliquer(Rg As Range, NBR%, Optional FIT As Boolean, Optional DEC% = 1)
              Dim Rd As Range
                                N& = Rg.Columns.Count
                                L& = N + DEC
        For B& = 1 To NBR
                Set Rd = Rg.Offset(, B * L)
            Rg.Copy Rd
            If FIT Then For C& = 1 To N: Rd(1, C).ColumnWidth = Rg(1, C).ColumnWidth: Next
        Next
     
          If Rd Is Nothing Then Set Rd = Rg
     
        With Rd.Offset(, N).Resize(, Columns.Count - Rd.Columns(N).Column)
            .Clear:  .ColumnWidth = .Parent.StandardWidth
        End With
                           Set Rd = Nothing
    End Sub
     
    Sub Demo()
        With Feuil1
            With .[D4]
                If IsNumeric(.Value) Then N% = .Value - 1
            End With
     
            Application.ScreenUpdating = False
                    Dupliquer .[B11:D46], N
                   Dupliquer .[B69:D157], N
                  Dupliquer .[A163:D167], N, True, 0
              Dupliquer Feuil2.[B4:D207], N, True
        End With
    End Sub
    Suite à une erreur de manipulation, mon précédent message a été effacé, mea culpa !

    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  20. #20
    Membre à l'essai
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Ah oui c'est sûr...

    Pour la feuille 4 effectivement c'est compliqué.

    Sur cette feuille j'ai en colonne comme tu peux le voir différent résultats pour un couple pièces mâle/femelle.
    Ce premier couple pièce mâle 1 et pièce femelle 1 va suivre la première colonne de tableau des deux premiers onglets. Sur ces premières feuilles c'est par couple également mâle femelle que les colonne fonctionne.

    Voici donc le problème de la 4ème feuille :

    Lors que je veux copier vers la droite les différent couple, les cellules des formules se décale du même nombre de colonne. Or ici les cellules sont liées à des données issues de la feuille 1 qui ne se décales pas de la même façon pour chaque couple.

    Feuille 1 décalage de 4 cellules à droite alors que sur la feuille 4 seulement un décalage de 1 cellule.
    J'avais donc réussi à mettre en place une astuce à la main, qui consiste à décaler les données feuille 4 de 4 cellules à droite et masquer les cellules vides. Tu constatera d'ailleurs que l'on passe de la colonne E à I directement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Bug dans une macro de copie de tableau Excel dans PPT
    Par sachadupuy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/05/2014, 11h29
  2. Macro excel copie de tableau
    Par toblo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/08/2009, 22h37
  3. Macro : Extraire liste d'individus en fonction d'une caractéristique
    Par FRMIP dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/10/2008, 16h58
  4. Réponses: 2
    Dernier message: 05/03/2008, 22h01
  5. Réponses: 2
    Dernier message: 29/06/2007, 11h20

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