Toutes versions copier coller uniquement les valeurs en vba

doudou080

XLDnaute Nouveau
Bonjour a tous

malgré avoir lu plein de chose ,Je n'arrive pas modifier une macro existante.
Cette macro tourne très bien mais elle change le format des cellules de destinations:
F8:G8", "F5", "G5", "C36", "G2", "D21:E21", "E8

elle garde le format source police : Times New Roman taille : 10
et moi je voudrais garder le format de destination police : Arial taille 24.

je ne sais pas comment insérer une ligne pour faire ce changement.

Sub Imprimer()

Dim fs, fb
Set fs = ActiveSheet
Set fb = Sheets("gestion des supports")
If Intersect(ActiveCell, Range("E10:E" & Range("E" & 65536).End(xlUp).Row)) Is Nothing Then
MsgBox "selection incorrecte." & Chr(13) & "Vous devez sélectionner un numéro de commande.", 16
End
End If
ln = ActiveCell.Row
For i = 1 To 7
t1 = Choose(i, "A", "C", "D", "E", "F", "G", "H")
t2 = Choose(i, "F8:G8", "F5", "G5", "C36", "G2", "D21:E21", "E8")
fs.Range(t1 & ln).Copy fb.Range(t2)
Next i
fb.Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
fs.Select
For i = 1 To 7
t2 = Choose(i, "F8:G8", "F5", "G5", "C36", "G2", "D21:E21", "E8")
fb.Range(t2).ClearContents

Next i


End Sub


Cordialement votre
 

mapomme

XLDnaute Barbatruc
Bonjour @doudou080,

Sans fichier joint :(, il est difficile de savoir si ce qui suit solutionne votre problème => :
Essayez de remplacer:
fs.Range(t1 & ln).Copy fb.Range(t2)
par:
b.Range(t2).value = fs.Range(t1 & ln).value
qui devrait laisser inchangé le format des cellules de destination .
 

doudou080

XLDnaute Nouveau
Bonjour
merci pour votre réponse.

j'ai une boite de dialogue : erreur d’exécution 424 , objet requis

Sub Imprimer()

Dim fs, fb
Set fs = ActiveSheet
Set fb = Sheets("gestion des supports")
If Intersect(ActiveCell, Range("E10:E" & Range("E" & 65536).End(xlUp).Row)) Is Nothing Then
MsgBox "selection incorrecte." & Chr(13) & "Vous devez sélectionner un numéro de commande.", 16
End
End If
ln = ActiveCell.Row
For i = 1 To 7
t1 = Choose(i, "A", "C", "D", "E", "F", "G", "H")
t2 = Choose(i, "F8:G8", "F5", "G5", "C36", "G2", "D21:E21", "E8")
b.Range(t2).Value = fs.Range(t1 & ln).Value
Next i
fb.Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
fs.Select
For i = 1 To 7
t2 = Choose(i, "F8:G8", "F5", "G5", "C36", "G2", "D21:E21", "E8")
fb.Range(t2).ClearContents

Next i


End Sub
 

doudou080

XLDnaute Nouveau
Ca y est ,ca marche
J'ai copié collé bêtement .
b.Range(t2).Value = fs.Range(t1 & ln).Value
au liue de:
fb.Range(t2).Value = fs.Range(t1 & ln).Value

par contre
pouvez vous m'expliqué cette ligne de commande.
ca marche mais je ne comprend pas.

encore merci pour votre aide.
 

mapomme

XLDnaute Barbatruc
Re,

Ca y est ,ca marche
Mille excuses :oops:. Le "f" a été omis dans ma première réponse.

pouvez vous m'expliqué cette ligne de commande.
ca marche mais je ne comprend pas
  • On considère l'ensemble des valeurs des cellules de la plage fb.Range(t2).Value
  • On les remplace par la valeur de la cellule fs.Range(t1 & ln)
Ceci fonctionne uniquement parce que fs.Range(t1 & ln) est une plage d'une seule cellule.

On pourrait aussi écrire:
VB:
Temp=fs.Range(t1 & ln).Value
b.Range(t2).Value=Temp
 

Discussions similaires


Haut Bas