Macro copie et colle
katial
Messages postés
1
Statut
Membre
-
pascalouou Messages postés 47 Statut Membre -
pascalouou Messages postés 47 Statut Membre -
Bonjour,
Tout d'abords je remercie toute personne qui prendra la peine de lire ce message.
Je tien à préciser que ej ne suis pas du tout douée en macro
voila je présente mon problème:
J'ai fait un début de macro:
'je sélectionne la case b2 puis je la copie
Range("b2").Select
Application.CutCopyMode = False
Selection.Copy
'je change de feuille ou la je la colle
'un calcul sur cette feuille se fait automatiquement
Windows("Etude mutation.xls").Activate
Range("$P$10").Select
ActiveSheet.Paste
'je copie sur cette même feuille l'ensemble des résultats
Range("$J$20:$J$60").Select
Application.CutCopyMode = False
Selection.Copy
'je retourne dans ma feuille d'origine ou je copie les résultats a partir de la cellule b3
Windows("transfo sous chargés.xls").Activate
Range("b3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
le problème est que je veux que ces calcul se fasse pour c2, d2,e2... jusqu'à la cellule ?2 soit vide
et que les résultats se colle respectivement en c3,d3,e3,... .
Je vous remercie par avance
Tout d'abords je remercie toute personne qui prendra la peine de lire ce message.
Je tien à préciser que ej ne suis pas du tout douée en macro
voila je présente mon problème:
J'ai fait un début de macro:
'je sélectionne la case b2 puis je la copie
Range("b2").Select
Application.CutCopyMode = False
Selection.Copy
'je change de feuille ou la je la colle
'un calcul sur cette feuille se fait automatiquement
Windows("Etude mutation.xls").Activate
Range("$P$10").Select
ActiveSheet.Paste
'je copie sur cette même feuille l'ensemble des résultats
Range("$J$20:$J$60").Select
Application.CutCopyMode = False
Selection.Copy
'je retourne dans ma feuille d'origine ou je copie les résultats a partir de la cellule b3
Windows("transfo sous chargés.xls").Activate
Range("b3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
le problème est que je veux que ces calcul se fasse pour c2, d2,e2... jusqu'à la cellule ?2 soit vide
et que les résultats se colle respectivement en c3,d3,e3,... .
Je vous remercie par avance
A voir également:
- Macro copie et colle
- Copie cachée - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
1 réponse
Bonjour
Vous pouvez utiliser la propriété Cells(x,y) : x est la ligne, y la colonne d'une cellule
D'autre part, une fois votre macro créée, vous pouvez la compacter pour un même résultat.
Ainsi, sans la changer, votre macro peut s'écrire
Range("b2").Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Range("b3").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Pour faire bien propre, on rajoute le nom du fichier là où il n'est pas, votre macro devient
Windows("transfo sous chargés.xls").Range("b2").Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Windows("Etude mutation.xls").Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Range("b3").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Et ensuite on utilise la propriété Cells à la place de Range : votre macro devient
x=2
Windows("transfo sous chargés.xls").Cells(x,2).Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Windows("Etude mutation.xls").Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Cells(x,3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Après, on fait varier x pour balayer toutes les valeurs à copier b2, c2 etc...
il faut également définir x comme un entier et le faire varier de 2 à .... pour aller de la colonne b à ....
pour faire large, on ira de la colonne b à la colonne 100 : exemple:
Dim x As Integer
For x=2 to 100
Windows("transfo sous chargés.xls").Cells(x,2).Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Windows("Etude mutation.xls").Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Cells(x,3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next x
et voili voilou ...
remarque: copier une plage de cellules (J20 à J60) et la coller successivement en b3, c3, etc... est bizarre: vous copiez 40 cellules d'abord de b3 à ...40 colonnes plus loin , puis de C3 à ... 40 colonnes plus loin (ce qui écrase 39 valeurs de votre copie précédente) ... à vérifier !
Cordialement,
Pascal
Vous pouvez utiliser la propriété Cells(x,y) : x est la ligne, y la colonne d'une cellule
D'autre part, une fois votre macro créée, vous pouvez la compacter pour un même résultat.
Ainsi, sans la changer, votre macro peut s'écrire
Range("b2").Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Range("b3").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Pour faire bien propre, on rajoute le nom du fichier là où il n'est pas, votre macro devient
Windows("transfo sous chargés.xls").Range("b2").Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Windows("Etude mutation.xls").Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Range("b3").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Et ensuite on utilise la propriété Cells à la place de Range : votre macro devient
x=2
Windows("transfo sous chargés.xls").Cells(x,2).Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Windows("Etude mutation.xls").Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Cells(x,3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Après, on fait varier x pour balayer toutes les valeurs à copier b2, c2 etc...
il faut également définir x comme un entier et le faire varier de 2 à .... pour aller de la colonne b à ....
pour faire large, on ira de la colonne b à la colonne 100 : exemple:
Dim x As Integer
For x=2 to 100
Windows("transfo sous chargés.xls").Cells(x,2).Copy
Windows("Etude mutation.xls").Range("$P$10").Paste
Windows("Etude mutation.xls").Range("$J$20:$J$60").Copy
Windows("transfo sous chargés.xls").Cells(x,3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next x
et voili voilou ...
remarque: copier une plage de cellules (J20 à J60) et la coller successivement en b3, c3, etc... est bizarre: vous copiez 40 cellules d'abord de b3 à ...40 colonnes plus loin , puis de C3 à ... 40 colonnes plus loin (ce qui écrase 39 valeurs de votre copie précédente) ... à vérifier !
Cordialement,
Pascal