Macro décalage d'une colonne

Bonjour à tous,

Je souhaiterais faire une macro qui réalise les actions suivantes: Ouvrir un fichier et copier-coller les valeurs dans une cellule. Mais j'aimerai que à chaque fois que je clique sur le bouton de mise à jour, les valeurs qui ont été copiées se collent en se décalant d'une colonne.

Jusqu'ici, j'ai réussi à réaliser l'ouverture du fichier et le copier-coller, mais pas le décalage de colonne quand je clique sur le bouton mise à jour.

Voici le code réalisé pour le moment ( je ne l'ai fait que pour une seule valeur):

Windows("Fichier_ouvert.xlsx").Activate

Range("D21").Select

Selection.Copy

Windows("Fichier_reférence.xlsm").Activate

Range("D5").Select

ActiveSheet.Paste

Je suppose que ce n'est pas la bonne méthode, puisque je suis coincée par les sélections de cellules pour coller les valeurs, mais je ne sais pas comment m'y prendre. Pourriez-vous m'aider?

Merci à tous

Bonjour Minipoucebn, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim CS As Workbook 'déclare le classeur source CS
Dim OS As Worksheet 'déclare l'onglet source OS
Dim CD As Workbook 'déclare le classeur destination CD
Dim OD As Worksheet 'déclare l'onglet destination OD
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = Workbooks("Fichier_ouvert.xlsx") 'définit le classeur source CS
Set OS = CS.ActiveSheet 'définit l'onglet source OS
Set CD = Workbooks("Fichier_reférence.xlsm") 'définit le classeur destination CD
Set OD = CD.ActiveSheet 'définit l'onglet destination OD
'définit la cellule de destination DEST (D5 si D5 est vide, sinon la premiere cellule vide de la ligne 5 de l'onglet OD)
Set DEST = IIf(OD.Range("D5") = "", OD.Range("D5"), OD.Cells(5, Application.Columns.Count).End(xlToLeft).Offset(0, 1))
OS.Range("D21").Copy DEST 'copie A21 de l'onglet source et le colle dans DEST
End Sub

La règle d'or et déviter autant que tu le peux les Select inutiles qui ne font que ralentir l'exécution du code et sont source de bug...

Bonjour ThauThème,

Merci pour ce code.

Je l'ai essayé, la macro m'ouvre bien le fichier sur lequel récuprérer les données, par contre, il ne me sélectionne pas la cellule D21 pour pouvoir la copier dans la cellule D5 du fichier référence. Saurais-tu pourquoi?

Re,

Non, pas besoin de sélectionner avec la syntaxe : Cellule_source.Copy Cellule_destination ce qui, appliqué à ton exemple donne :

OS.Range("D21").Copy DEST

Thauthème,

Je me suis peut-être mal exprimée^^

En fait, le code ne fait pas le copier-coller

Re,

Bon, j'estime que ce n'est pas à moi de fournir les fichiers mais comme j'ai commencé, je vais jusqu'au bout...

Voici en pièce jointe deux fichiers correspondants à ton problème. Ouvre les deux et lance la macro Macro1 du Module 1 du fichier .xlsm autant de fois que tu le désires. Alors ?!...

Ton code marche bien avec tes fichiers.

Merci beaucoup en tout cas

Rechercher des sujets similaires à "macro decalage colonne"