Menu

Coller la valeur d'une cellule VBA [Résolu]

HEMIYELY 7 Messages postés mercredi 10 mai 2017Date d'inscription 31 août 2017 Dernière intervention - 12 juin 2017 à 10:19 - Dernière réponse : michel_m 15296 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 24 mai 2018 Dernière intervention
- 13 juin 2017 à 08:00
Bonjour,
Je souhaite copier la valeur d'une cellule et non la formule. Voici mon code :

ThisWorkbook.Activate

'1. Find last used row in destination sheet
lRow = Worksheets("BASE DE DONNEES").Cells(Worksheets("BASE DE DONNEES").Rows.Count, 1).End(xlUp).Row

'Offset 1 row below last used row
lRow = lRow + 1

'2. Copy data
Worksheets("INFORMATION").Range("C8").Copy

'3. Paste data
Worksheets("BASE DE DONNEES").Range("H" & lRow).PasteSpecial

'Clear copy mode (marching ants around copied range)
Application.CutCopyMode = False



La cellule "C8" de la feuille "INFORMATION" se copie bien dans la colonne H de la feuille "BASE DE DONNEES" mais c'est la formule qui est copiée et non la valeur.

Pouvez-vous m'aider ?
Cordialement
Afficher la suite 

Votre réponse

6 réponses

titeufdu89 70 Messages postés samedi 28 juillet 2012Date d'inscription 30 avril 2018 Dernière intervention - 12 juin 2017 à 10:25
0
Utile
Bonjour,

Pour ton '3. Paste data, remplace ton code existant par celui ci :


Worksheets("BASE DE DONNEES").Range("H" & lRow).Select
Selection.PasteSpecial Paste:=xlPasteValues


Ca devrait le faire,

Bonne journée

Jc
HEMIYELY 7 Messages postés mercredi 10 mai 2017Date d'inscription 31 août 2017 Dernière intervention - 12 juin 2017 à 17:19
Merci de votre réponse. Cela fonctionne mais une seule fois. Lorsque je clique une seconde fois sur la macro j'ai un message d'erreur : Erreur d'exécution '1004': La méthode Select de la Classe Range a échoué.

Connaissez-vous ce genre d'erreur ?
Commenter la réponse de titeufdu89
michel_m 15296 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 24 mai 2018 Dernière intervention - 12 juin 2017 à 10:55
0
Utile
Bonjour,

en VBA on évite au maximum d'utiliser copy paste, particulièrement chronophage et lourd

essaies
Option Explicit
Sub vvvv()
Dim lrow As Long, xxx

With ThisWorkbook.Worksheets("BASE DE DONNEES")
xxx = Worksheets("INFORMATION").Range("C8").Value
'1. Find last used row in destination sheet
lrow = .Cells(Worksheets("BASE DE DONNEES").Rows.Count, 1).End(xlUp).Row + 1
.Range("H" & lrow) = xxx
End With
End Sub

HEMIYELY 7 Messages postés mercredi 10 mai 2017Date d'inscription 31 août 2017 Dernière intervention - 12 juin 2017 à 17:21
Merci de votre réponse mais à quoi correspondent les xxx ?
Hervé > HEMIYELY 7 Messages postés mercredi 10 mai 2017Date d'inscription 31 août 2017 Dernière intervention - 12 juin 2017 à 17:41
 
xxx est le nom d'une variable ; celle qui doit contenir la valeur de C8 ;
tu peux bien sûr renommer cette variable de façon plus explicite :
lors de sa définition en ligne Dim, et les 2 fois où elle est utilisée.

vvvv n'est pas un nom de sub très explicite, et tu peux aussi
le renommer à ton choix (en laissant les parenthèses).
 
michel_m 15296 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 24 mai 2018 Dernière intervention > Hervé - 13 juin 2017 à 08:00
Bonjour,

j'ai mis xxx, pourquoi pas ? il faudrait dire dans les déclarations quel est son type: texte, nombre entier, date.... ce qui permettrait d'avoir un nom plus explicite...
j'ai mis vvv car j'ai fait çà rapidement en prenant sur mon temps libre

un topo sur les variables
http://silkyroad.developpez.com/VBA/LesVariables/

et aussi (+complet)
http://mhubiche.developpez.com/Access/variables/
Commenter la réponse de michel_m