Copier coller VBA la valeur et non la formule

merlinreturn

XLDnaute Nouveau
Bonjour

Dans mon fichier, quand on clique sur la case O4 de la feuille "Vierge", un vba s'active (module 1) et copie-colle le tout dans la prochaine colonne libre de la feuille "Publi"... Toutefois, vous verrez mes recherches dans le code du module 1, je n'arrive pas à trouver la solution pour que ce soit la valeur des cases qui soit copiées et non la formule... Si quelqu'un a une solution, je suis preneur :)

Merci
 

Pièces jointes

  • Excel-notes-v10 pour aide.xlsm
    95.3 KB · Affichages: 114

Staple1600

XLDnaute Barbatruc
Re : Copier coller VBA la valeur et non la formule

Bonsoir à tous

merlinreturn
Fais un copier/collage spécial (en cochant) Valeurs tout en laissant tourner l’enregistreur de macro
et tu auras le code pour faire ce que tu souhaites ;)

Tu peux aussi utiliser cette syntaxe (qui évite de passer par copier/coller)
(PS: C'est juste un exemple pas une solution adaptée précisément à ta PJ)
Code:
Sub exValSeul()
Dim p As Range, dl&
dl = Cells(Rows.Count, "A").End(xlUp).Row
Set p = Range("A1:A" & dl)
    With p
        .Value = .Value
    End With
End Sub
 
Dernière édition:

merlinreturn

XLDnaute Nouveau
Re : Copier coller VBA la valeur et non la formule

Merci!

J'ai essayé ce truc (c'était le 48e que j'essayais) et il ne fonctionne pas dans mon code :

Voici mon code :

Option Explicit
Sub Notes_exporter()
'00
ActiveCell.Name = "toto"
Range(Range("toto"), Range("toto").End(xlDown)).Copy Destination:=Sheets("Publi").Range("A2").End(xlToRight).Offset(-1, 1)
ActiveCell.Offset(1, 1).Value = "Pub"
End Sub



' derniere tentative qui ne fonctionne toujours pas Range(Range("toto"), Range("toto").End(xlDown)).Copy
'Sheets("Publi").Range("A1").End(xlToRight).Offset(0, 1).Select
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False





'Worksheets("Positions").Range("W2").Value = .Range("A3").End(xlDown).Offset(0, 41).Value
'to copy a formula result as a value instead of the formula, instead of '.Paste', use '.PasteSpecial'

'just replace your line of code:
'ActiveSheet.Paste Destination:=Worksheets("Positions").Range("W2")

'with this line:
'Worksheets("Positions").Range("W2").PasteSpecial xlPasteValues

'see the excel vba help file for the use of the PasteSpecial method. it's pretty straightforward.

' Cette ligne ne fait que copier l'entête Sheets("Publi").Range("A1").End(xlToRight).Offset(0, 1).Value = Range(Range("toto"), Range("toto").End(xlDown)).Value

'autre info : Workbooks("classeur2").Sheets("feuil1").Range("E2: E15") = Workbooks("classeur1").Sheets("feuil1").Range("C2: C15").Value


'copie encore juste l'entete : Sheets("Publi").Range("A1").End(xlToRight).Offset(0, 1) = Sheets("Vierge").Range(Range("toto"), Range("toto").Offset(0, 41)).Value


et le code que tu parles quand on enregistre une macro :
Range("O5:O35").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Publi").Select
Range("J2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("K27").Select

Toutefois, je n'arrive pas à changer la sélection (le range J2 dans le dernier code) pour celui qui "cherchera" la prochaines colonne de libre (le Sheets("Publi").Range("A1").End(xlToRight).Offset(0, 1))...

Bref j'ai passé la journée là dessus...
 

Staple1600

XLDnaute Barbatruc
Re : Copier coller VBA la valeur et non la formule

Re


As-tu vu l'exemple que j'ai ajouté dans l'édition de mon précédent message?

PS: Je vais voir si je peux convertir ton *.xlsm en *.xls (car actuellement je ne dispose que de XL2003)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copier coller VBA la valeur et non la formule

Re


Tu peux essayer ceci? (en espérant que j'ai bien compris le résultat que tu souhaites obtenir ;) )
Code:
Sub Notes_exporter()
'00
Dim dl&
ActiveCell.Name = "toto"
dl = Cells(Rows.Count, Range("toto").Column).End(xlUp).Row
Range("toto").Resize(dl).Copy
Sheets("Publi").Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).PasteSpecial Paste:=xlPasteValues
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Copier coller VBA la valeur et non la formule

Bonjour à tous,

Que fait la fonction Resize(dl) avant le Copy?

ce que dit l'aide vba sur la propriété "resize"... touche de fonction F1 sur le mot en question pour y accéder...
Cette propriété redimensionne la plage spécifiée. Cette propriété renvoie un objet Range qui représente la plage redimensionnée.

bonne journée
@+
 

Staple1600

XLDnaute Barbatruc
Re : Copier coller VBA la valeur et non la formule

Bonjour à tous

Yahhhhhhhooooo! Tu es un génis!
Ouh là, ne nous emballons pas
Je suis juste curieux de nature, utilisateur d'Excel déjà au XX siécle, et sur ce forum depuis un bail.
Cela peut fortement aider pour faire un copier/collage spécial Valeurs en VBA

PS: Merci à Pierrot93 d'avoir joué le rôle de la touche "F1" ;)
 

merlinreturn

XLDnaute Nouveau
Re : Copier coller VBA la valeur et non la formule

Bon, mon autre sujet a été effacé qui traitait du même fichier et Double-Zéro m'avait beaucoup aidé.

Dans le code de la page qui initie le double clic, voici le code :

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal c As Range, Cancel As Boolean)
'00
Cancel = True
If c.Row > 4 Or c.Count > 4 Or c.Value = "" Then
Exit Sub
Else
Call Notes_exporter
End If
End Sub

Ce code fonctionne très bien, toutefois, tout "double clic" dans les rangées 3, 2 et 1 copient le tout mais je voudrais que ce soit seulement un double clic dans la rangée 4 qui démarrerait cette programmation. J'ai essayé c.row = 4 mais quand je fais ça, ça se met à activer le double clic sur n'importe quelle rangée. J'ai essayé c.row < 4 & > 3 mais là, c'est le débogage assuré.

Merci
 

merlinreturn

XLDnaute Nouveau
Re : Copier coller VBA la valeur et non la formule

Tabarouette que tu es rapide sur la réponse! C'est super!

J'ai essayé ton ajout comme ceci :
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal c As Range, Cancel As Boolean)
'00
Cancel = True
If Target.Column = 4 Then
If c.Row > 4 Or c.Count > 4 Or c.Value = "" Then
Exit Sub
Else
Call Notes_exporter
End If
Else
Exit Sub
End Sub


mais là, il me dit qu'il y a une erreur dans la rangée : Private ... ???
 

Staple1600

XLDnaute Barbatruc
Re : Copier coller VBA la valeur et non la formule

Bonjour Pierrot93

merci pour ta vigilance ;)

merlinreturn
Je t'invite à méditer sur ceci ;)

PS: J'ai lu "rangée" comme étant colonne alors qu'il fallait comprendre ligne
Donc ma précédent suggestion aurait du être
If c.Row =4 Then
'ton code VBA
End if
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 452
Messages
2 088 541
Membres
103 880
dernier inscrit
rafaelredsc