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 :

recopier n fois fois une plage sur la même feuille [XL-2010]


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
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut recopier n fois fois une plage sur la même feuille
    Bonjour je cherche à recopier n fois la même plage de cellule sur sur la même feuille .
    exemple n=100
    j'ecris un code pour juste la recopier sur à partir de ligne 23 mais l'idée est de la recopier chaque juste à après l'autre

    , j'ai ecris un code qui recopie mais j'ai juste evaluer le nombre de cellule qui seront concernées
    en partant de la cellule 23 +1900 cellule ça fait environ 2000

    mais comment recopier exactement le nombre de fois qu'on veut ?

    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
    Sub recopie_plage()
     
    Dim i As Integer
    Dim y As Integer
    y = 19
     
     
    For i = 23 To 2000 Step 19
     
     
            Range("A3:O22").Copy Range("A" & i & ":o" & i + y)
     
        Next i
     
     
     
    End Sub

  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,

    Une piste (sans copie mais avec affectation des valeurs) :
    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
     
    Sub recopie_plage()
     
        Dim Plage As Range
        Dim NBFois As Long
        Dim I As Integer
     
        NBFois = 123
     
        With Worksheets("Feuil1")
     
            Set Plage = .Range("A3:O22")
     
            For I = 23 To NBFois Step 20
     
                .Range(.Cells(I, 1), .Cells(Plage.Rows.Count - 1 + I, Plage.Columns.Count)).Value = Plage.Value
     
            Next I
     
        End With
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    Bonjour,

    Merci teze pour ta reponse, mais en fait la recopie avec le code que tu as donné se fait jusqu'à la ligne nbfois c à d dans ton exple jusqu'à la ligne 123.
    or il faudrait une recopie 123 fois soit 123*20 soit sur 2460 lignes donc on devrait se retrouver à la ligne 2483. et puis je prèfére une recopie simple pas une recopie sans valeur

    j'ai introduis une variable

    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
    Sub recopie_plage2()
     
        Dim Plage As Range
        Dim NBFois As Long
        Dim I As Integer
        Dim x As Integer
     
        x = 20
     
        NBFois = 123
     
        With Worksheets("Feuil1")
     
            Set Plage = .Range("A3:O22")
     
            For I = 23 To NBFois * x Step 20
     
                .Range(.Cells(I, 1), .Cells(Plage.Rows.Count - 1 + I, Plage.Columns.Count)).Value = Plage.Value
     
            Next I
     
        End With
     
    End Sub

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Daniel, Hervé, bonjour le forum,

    Une autre proposition :
    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 O As Worksheet 'déclare la variable O (Onglet)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim F As Variant 'déclare la variable F (Fois)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
    Dim I As Byte 'déclare la variable I (Incrément)
     
    Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
    Set PL = O.Range("A1").CurrentRegion 'définit la plage PL (à adapter)
    F = Application.InputBox("Entrez le nombre de F que sera copiée la plage.", "COPIE", Type:=1) 'définit le noibre de fois F
    If F = False Then Exit Sub 'si bouton "Annuler", sort de la procédure
    For I = 1 To F 'boucle de 1 au nombre de fois F
        Set DEST = O.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellue de destination DEST
        PL.Copy DEST 'copie la plge PL et la colle dans DEST
    Next I 'prochaine fois de la boucle
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    Bonjour,

    Merci thauteme et

    ton code marche mais j'ai juste remplacé la ligne 9 par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set PL = Range("A3:O22")
    Merci beaucoup.
    merci également à teze pour ta proposition.

  6. #6
    Expert éminent
    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
    Par défaut
    Bonjour,

    juste en passant une boucle n'est pas nécessaire ‼
    Indiquer juste la plage complète en destination ou encore
    en respectant la règle TBTO via un Resize :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Demo()
        With [A3:O22].Rows
            .Copy .Offset(.Count).Resize(.Count * 100)
        End With
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé …

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    Bonjour Marc,


    c'est géniale ton code et simple en plus franchement merci.

    cdt

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

Discussions similaires

  1. Macro copier coller d'une plage sur nouveau fichier excel sous condition
    Par lapagaille dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/02/2014, 14h11
  2. [XL-2010] Recopier la couleur d'une cellule sur toute une ligne
    Par canary dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/08/2012, 15h15
  3. Recopier des données d'une plage vers l'autre, problèmes rencontrés?
    Par nath-0-0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/06/2010, 16h59
  4. trouver une plage sur une autre feuille
    Par needlesurfer dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/11/2009, 11h25
  5. [XL-2007] Recopier les données d'une cellule sur plusieurs feuilles
    Par anubis62 dans le forum Excel
    Réponses: 1
    Dernier message: 25/06/2009, 09h41

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