Collage spécial valeur

Bonjour,

J'ai décider d'automatiser le remplissage d'une feuille excel à partir d'une autre. Les étapes de mon code sont

1) Ouverture du fichier source via l'explorateur widows

2) Copie de colonnes contenues dans un onglet en fonction de leur entête

3)Collage dans un onglet désigné du fichier de destination.

Mon problème se pose dans cette étape 3 je ne parviens pas à coller en valeur sans prendre en compte le formules

Ci dessous le code

Sub ImporterBudget() 
Dim Fichier, WbkCopy As Workbook, WbkColle As Workbook 
Dim Colonnes(), Col As Integer, Resultat As Variant 
 'On attribue à la variable WbkColle le fichier actuel (celui qui contient la macro) 
 Set WbkColle = ThisWorkbook 
 'Nom des entêtes de colonnes à importer 
 Colonnes = Array("Code nana", "Métier", "Produit", "Client") 
 'Sélection du fichier 
 Fichier = Application.GetOpenFilename("Fichiers Excels, *.xls*") 
 'En cas de clic sur "ANNULER" 
 If Fichier <> False Then 
 'On ouvre le fichier en question 
 Set WbkCopy = Workbooks.Open(Fichier) 
 With WbkCopy.Sheets("Import") 
 'Boucle sur toutes les entêtes des colonnes 
 For Col = 1 To .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column 
 'teste si l'entête correspond à un des noms des colonnes à copier 
 Resultat = Application.Match(.Cells(1, Col), Colonnes, 0) 
 'Si l'entête est trouvée (colonne à copier) 
 If Not IsError(Resultat) Then 
 'Copié - Collé ==>NOM de la feuille ou il faut coller 
 .Columns(Col).Copy WbkColle.Sheets("Commande").Cells(1, Cells.Columns.Count).End(xlToLeft).Offset(0, 1) 
 End If 
 Next Col 
 End With 
WbkCopy.Close 
 End If 
Set WbkCopy = Nothing 
Set WbkColle = Nothing 
End Sub

J'ai mis des commentaires pour que ce soit parlant

je veux donc adapter le code de collage suivant: .Columns(Col).Copy WbkColle.Sheets("Commande").Cells(1, Cells.Columns.Count).End(xlToLeft).Offset(0, 1)

pour qu'il rapatrie les valeurs sans les formules

Je vous remercie d'avance de votre aide

Bonjour,

Avec cette ligne tu colles tout !

Il faut dissocier :

.Columns(Col).Copy
WbkColle.Sheets("Commande").Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues

c'est rigolo parce que pendant des heures j'ai insisté en faisant :

.Columns(Col).Copy.WbkColle.Sheets("Commande").Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues

Cela marche parfaitement. Tu me sauve la vie là.

Enorme merci.

La méthode Copy admet un argument Destination, qui permet de coller directement, mais sans option. Pour un collage spécial, il faut ajouter une ligne de commmande...

Cordialement.

Rechercher des sujets similaires à "collage special valeur"