Copier données dernière cellule vide

Bonjour,

J’ai une macro qui me permet de mettre à jour les taux de change dans le fichier «DEVISES » en recopiant ces taux à la dernière cellule vide des colonnes des devises.

Mon problème, c’est que çà recopie la formule au lieu des données, je ne vois pas comment faire ?

Sub Mise_à_jour_taux()

' Ouverture du fichier XE - XE Currency Update Service'

    Workbooks.Open Filename:= _
        ...Chemin du fichier....\Macros Tréso\Cours Devises\XE - XE Currency Update Service.xlsx"

' Copie les taux dans le fichier DEVISES'

'Ouverture du fichier DEVISES'

       Workbooks.Open Filename:="C:\Devises\DEVISES.xlsx"
    Sheets("Taux de change").Select

    'Recopie le dernier Cours CHF à la dernière cellule vide de la colonne E'
    Range("V5").Copy Range("E" & Range("E" & Rows.Count).End(xlUp).Row + 1)

    'Recopie le dernier Cours GBP à la dernière cellule vide de la colonne F'
    Range("R5").Copy Range("F" & Range("F" & Rows.Count).End(xlUp).Row + 1)

    'Recopie le dernier Cours USD à la dernière cellule vide de la colonne C'
    Range("N5").Copy Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1)

End Sub
14macro-devises.xlsm (17.77 Ko)
16devises.xlsx (33.17 Ko)

le "copy" copie le contenu (dans ton cas la formule) et pas la valeur.

Tu peux essayer ceci:

Sub Mise_à_jour_taux()

' Ouverture du fichier XE - XE Currency Update Service'

    Workbooks.Open Filename:= _
        ...Chemin du fichier....\Macros Tréso\Cours Devises\XE - XE Currency Update Service.xlsx"

' Copie les taux dans le fichier DEVISES'

'Ouverture du fichier DEVISES'

       Workbooks.Open Filename:="C:\Devises\DEVISES.xlsx"
    Sheets("Taux de change").Select

    'Recopie le dernier Cours CHF à la dernière cellule vide de la colonne E'
    Range("E" & Range("E" & Rows.Count).End(xlUp).Row + 1).Value = Range("V5").Value 

    'Recopie le dernier Cours GBP à la dernière cellule vide de la colonne F'
    Range("F" & Range("F" & Rows.Count).End(xlUp).Row + 1).Value = Range("R5").Value 

    'Recopie le dernier Cours USD à la dernière cellule vide de la colonne C'
    Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1).Value = Range("N5").Value

End Sub

Ainsi, tu ne copie pas, tu modifie la valeur. Pour ton info, cela signifie, entre autre, que le format de la cellule n'est pas transféré. Mais en cas de besoin, tu peux l'ajouter:

Range("E" & Range("E" & Rows.Count).End(xlUp).Row + 1).NumberFormat = Range("V5").NumberFormat 
Range("F" & Range("F" & Rows.Count).End(xlUp).Row + 1).NumberFormat = Range("R5").NumberFormat 
Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1).NumberFormat = Range("N5").NumberFormat

Merci pour ta réponse, mais çà ne copie aucune donnée....


...C'est bon maintenant..

MERCI.

Bizarre,

je viens de le faire dans ton fichier devises.xlsx et cela marche (voir la capture d'écran)

Est-tu sûr que dans ton code, le bon fichier et la bonne feuille sont activés (comme dans ton code, tu te limites à "Range(..." sans spécifier le workbook ni la sheet?

Peux-tu vérifier?

test
Rechercher des sujets similaires à "copier donnees derniere vide"