Copier-coller en fonction d'une valeur de cellule

Bonjour à tous,

L'objectif de ma feuille est de générer un copier-coller des cellules "A16:I37" (remplies au préalable).

Les cellules citées devront être copiés sous celles-ci le même nombre de fois que la valeur indiquée en cellule B10.

Ma macro est donc la suivante :

Sub Copier()

'

' Copier Macro

'

Dim i

i = (Range("B10").Value)

Dim a

a = 38 + i

Dim b

b = 38

'

Range("A16:I37").Select

Selection.Copy

Rows(b & ":" & a).Select Cette ligne doit poser problème

ActiveSheet.Paste

End Sub

Lorsque je lance la macro, ma plage de cellules n'est copiée qu'une seule fois, quel que soit le nombre entré en B10.

J'ai longuement cherché les formules de sélection de lignes, celle-ci a été pour moi la plus appropriée.

Merci de votre aide si vous y voyez une autre méthode, je suis très peu connaisseur en VBA

J'ai également remplacé "rows" par "Range" mais cela revient au même résultat.

La sélection doit en fait se faire de la cellule A38 à la cellule "A38+i". Cela ne doit pas être bien compliqué, en revanche mes très faibles connaissances ne me permettent pas d'y arriver...

Merci à vous !

Bonjour,

Un essai

Sub Copier()
Dim i As Integer
  Application.ScreenUpdating = False
For i = 1 To Range("B10")
    Range("A16:J37").Copy
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Next i
    Application.CutCopyMode = False
End Sub

Edit : j'avais fait pour un collage spécial valeur mais à priori c'est un copier coller, essayer macro ci-dessous

Sub Copier()
Dim i As Integer
  Application.ScreenUpdating = False
For i = 1 To Range("B10")
    Range("A16:J37").Copy Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Next i
    Application.CutCopyMode = False
End Sub

Merci Fred pour ta réponse, j'ai insérer ton code mais celui-ci ne fonctionne pas

Je vais encore chercher de mon côté.

Quelle est la formule permettant de sélectionner la plage "A38:A38+i" ?

Regarde la 2nd solution, je viens de tester les 2 chez moi et aucun soucis.

Sinon joins un petit fichier


Flo456 a écrit :

Quelle est la formule permettant de sélectionner la plage "A38:A38+i" ?

Range("A" & Rows.Count).End(xlUp).Offset(1, 0)


J'ajoute un petit fichier d'exemple

332flo456-copie1.zip (9.64 Ko)

Désolé Fred j'avais écris en même temps donc je n'ai pas vu ta deuxième réponse.

Je te remercie, ça fonctionne très bien !

Par contre, j'aurai encore une petite question. En effet, les lignes copiées s'ajoutent toujours après les autres, même lorsque j'efface le contenu des lignes complétées par la macro.

J'aimerai pouvoir repartir à zéro lors de l'ouverture du fichier, y a-t-il une modification à faire ?

Merci beaucoup Fred tu m'as beaucoup aidé !

J'ai ajouté un code qui efface le contenu des cellules sous la ligne 37 avant d'effectuer le copier-coller.

En revanche, le texte copié reste toujours le même après changement des données de la plage de cellules A16:J37.

Y a-t-il un moyen de réinitialiser ces données ? Merci à vous

C'est ok pour moi, ce sont des validations de données dans les cellules qui me posaient problème, j'ai pu résoudre le problème !

Merci encore Fred !

Bonjour,

N'oubliez pas de mettre le sujet en résolu si le résultat vous convient

Rechercher des sujets similaires à "copier coller fonction valeur"