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 N nombre de fois des cellules vers des cellules


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 48
    Points : 23
    Points
    23
    Par défaut Copier/Coller N nombre de fois des cellules vers des cellules
    Bonjour à tous,

    Quelqu'un peut m'aider à résoudre ce problème? J'explique: j'ai ma colonne H remplie de valeur de H2 à H341 soient 340 cellules non vides. Pour la cellule H2: copier la cellule H2 et la coller dans la cellule AM2, copier ensuite la cellule H2 et la coller dans la cellule AM3, copier ensuite la cellule H2 et la coller dans la cellule AM4, copier ensuite la cellule H2 et la coller dans la cellule AM5 et ce 10 fois. Ce qui me permet d'avoir au final la valeur de la cellule H2 coller dans les cellules AM2:AM11. Pour la cellule H3 c'est le MÊME travail sauf qu'il doit commencer à coller dans la cellule AM12 jusqu'à la cellule AM21 et ainsi de suite. Ce qui au grand final dans la colonne AM j'ai 340*10 = 3400 cellules non vides (dix occurrences de chaque cellule de H2:341). Merci d'avance pour ceux réfléchirons à ce fastidieux problème).

  2. #2
    Membre confirmé
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 365
    Points : 631
    Points
    631
    Par défaut
    Le secret pour résoudre

    un fastidieux problème

    c'est d'y prendre du plaisir.

    "Surtout que les solutions sont relativement simples à trouver
    et multiples avec un minimum de recherche ....."

    par exemple dans ton cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub copie()
    For ligne = 2 To 331
    lignebis = (ligne * 10) - 18
    Range(Cells(lignebis, 39).Address & ":" & Cells(lignebis + 9, 39).Address).Value = Cells(ligne, 8).Value
    Next
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 48
    Points : 23
    Points
    23
    Par défaut Oh merci
    Vous avez été percutant. C'est tellement WOW pour moi. Merci pour cette célérité. À present j'aimerais juste comprendre votre code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub copie()
    For ligne = 2 To 331
    lignebis = (ligne * 10) - 18
    Range(Cells(lignebis, 39).Address & ":" & Cells(lignebis + 9, 39).Address).Value = Cells(ligne, 8).Value
    Next
    End Sub
    Pouvez-vous m'expliquer un ce code. Je le comprend partiellement. Je ne saisie pas par exemples ( & ":" & et -18)

    Merci d'avance

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 365
    Points : 631
    Points
    631
    Par défaut
    en mettant un espion en pas à pas

    tu verra au premier passage que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Cells(lignebis, 39).Address & ":" & Cells(lignebis + 9, 39).Address)
    =("AM2:AM11")

    et donc que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(lignebis, 39).Address & ":" & Cells(lignebis + 9, 39).Address).Value
    = range("AM2:AM11").value

    puis

    = range("AM12:AM21")

    le - 18 c'est pour retomber à 2 quand ligne =2

    (2*10)-18 =2

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    voyons voir


    si je comprent bien
    tu copie la valeur de la cellules( ligne ,col 8) dans la plage (ligne,39) sur 10 ligne c'est bien ca
    aurais tu entendu parler de resize des fois

    donc j'analyse
    on boucle de 2 a 331 sur les lignes
    on determine lignebis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lignebis = (ligne * 10) - 18
    alors c'est le sommum
    autrement dit ici pour chaque ligne tu crée un plage de 10 cellule sur 1 colonne (la 39)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(lignebis, 39).Address & ":" & Cells(lignebis + 9, 39).Address).Value = Cells(ligne, 8).Value
    je dis que tu aurais pu ecrire tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(lignebis, 39), Cells(lignebis + 9, 39)).Value = Cells(ligne, 8).Value
    mais moi perso j'aurais ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(lignebis,39).resize(10,1)=cells(ligne,8)
    c'est de suite plus clair la d'un coup

    il y aurait encore a dire sur ces 3 toute petites lignes de code
    notament l'interet d'englober cela dans un with activesheet par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub copie()
    with activesheet' ou with sheets("nom du sheets") au cas ou la macro tournerait et que le sheets concerné ne soit pas le sheets actif
    For ligne = 2 To 331
    lignebis = (ligne * 10) - 18
    .cells(lignebis,39).resize(10,1)=.cells(ligne,8)
    Next
    end with
    End Sub

    on aurait pu envisager aussi une autre forme de calcul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub copie()
        With ActiveSheet    ' ou with sheets("nom du sheets") au cas ou la macro tournerait et que le sheets concerné ne soit pas le sheets actif
            lignebis = 2
            For ligne = 2 To 331
                .Cells(lignebis, 39).Resize(10, 1) = .Cells(ligne, 8)
                 lignebis = 2 + 10 * (ligne - 1)
                 Next
        End With
    End Sub


    ouais c'est un peu plus clair la d'un coup
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 48
    Points : 23
    Points
    23
    Par défaut Merci infiniment
    Pour un problème j'ai 2 à 3 solution; je suis heureux. a_diard et patricktoulon merci à vous infiniment. Le monde des codes est fascinant. Je clos cette discussion puisque mon problème est résolue. J'ai cherché dans le forum la solution à un autre problème qui est la suite logique de celui-ci.

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

Discussions similaires

  1. copier coller une ligne plusieurs fois selon une valeur de cellule
    Par ghaza dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/04/2017, 09h48
  2. copier coller toutes les lignes d'un onglet vers un autre
    Par lili3183 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/11/2012, 18h31
  3. Réponses: 3
    Dernier message: 05/09/2011, 12h53
  4. Copier des informations vers des zones de texte
    Par droledepilote dans le forum VBA Access
    Réponses: 12
    Dernier message: 11/05/2011, 11h09
  5. Réponses: 3
    Dernier message: 09/10/2009, 18h05

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