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

Signaler
Messages postés
46
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
10 juin 2021
-
Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
10 juin 2021
-
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
A voir également:

2 réponses

Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
34
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
Messages postés
46
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
10 juin 2021

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 ?
Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
10 juin 2021
3 189
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

Messages postés
46
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
10 juin 2021

Merci de votre réponse mais à quoi correspondent les xxx ?
>
Messages postés
46
Date d'inscription
mercredi 10 mai 2017
Statut
Membre
Dernière intervention
10 juin 2021

 
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).
 
Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
10 juin 2021
3 189 > Hervé
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
https://silkyroad.developpez.com/VBA/LesVariables/

et aussi (+complet)
https://mhubiche.developpez.com/Access/variables/