Macro copie et colle

katial Messages postés 1 Statut Membre -  
pascalouou Messages postés 48 Date d'inscription   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
Configuration: Windows 2000
Internet Explorer 6.0

1 réponse

  1. pascalouou Messages postés 48 Date d'inscription   Statut Membre 172
     
    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
    0