Boucle qui copie colle

Bonjour,

J'ai un code qui copie une sélection et qui la colle en valeur a la suite d'une plage. Avec ce code cela ne le fait qu'une fois et j'aimerais le réaliser plusieurs fois en un seul clic

Sub copieval()
'
Dim num As Integer

num = 1

a = Range("s54444").End(xlUp).Row + 1

While num < 10

    Range("P2:Q17").Select
    Selection.Copy
    Cells(a, 19).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("s21").Select

    num = num + 1

    Wend

End Sub

Voici un fichier exemple , dans le fichier d'origine les valeur sont actualiser automatiquement. Merci pour votre aide

7test-t1.xlsx (8.32 Ko)

Bonjour Pagesalex,

Il faut déplacer ta variable "a" dans la boucle "while" afin qu'à chacune tour la macro recalcule la nouvelle dernière ligne non vide.

Sub copieval()
'
Dim num As Integer

num = 1

While num < 10

a = Range("s54444").End(xlUp).Row + 1

    Range("P2:Q17").Select
    Selection.Copy
    Cells(a, 19).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("s21").Select

    num = num + 1

    Wend

End Sub

Bonjour,

Je pense avoir bien compris, mais quelles sont les plages à recopier ? ici seule la plage Range("P2:Q17").Select est sélectionnée, quelles sont les autres ? Toujours les mêmes comme propose Florian ?

Au passage, tu peux écrire :

a = Cells(rows.count,"S").End(xlUp).Row + 1

Bonjour,

Voici un code en retour:

Sub copieval()
'Déclarations de variables
erreur = True
lig_dep = Range("s" & Rows.Count).End(xlUp).Row + 1
tableau = Range("P2:Q17").Value
nbval = UBound(tableau, 1)
valboucle = InputBox("Combien de fois voulez-vous copier les valeurs?")

'Vérification de la valeur renseignée
While erreur = True
    If Not IsNumeric(valboucle) Then
        MsgBox "La valeur renseignée n'est pas un nombre", vbExclamation
    ElseIf valboucle < 1 Then
        MsgBox "La valeur renseignée doit être un nombre supérieur ou égal à 1", vbExclamation
    ElseIf Int(valboucle) <> CDbl(valboucle) Then
        MsgBox "La valeur renseignée doit être un entier", vbExclamation
    Else: erreur = False
    End If

    If erreur = True Then
        valboucle = InputBox("Combien de fois voulez-vous copier les valeurs?")
    End If
Wend

'Boucle
For i = 1 To valboucle
Range("s" & lig_dep).Resize(UBound(tableau, 1), UBound(tableau, 2)) = tableau
lig_dep = lig_dep + nbval
Next i

End Sub

Ainsi que le fichier:

Salut Steelson

Merci à tous et merci florian pour ta solution. Effectivement c'est ce détail qui fait la différence

Rechercher des sujets similaires à "boucle qui copie colle"