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
Supporter XLD
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
Supporter XLD
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
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas