Modification formules feuille source lors d'un copier/coller

Fermé
hulnh Messages postés 4 Date d'inscription vendredi 18 mars 2016 Statut Membre Dernière intervention 21 mars 2016 - 18 mars 2016 à 19:33
hulnh Messages postés 4 Date d'inscription vendredi 18 mars 2016 Statut Membre Dernière intervention 21 mars 2016 - 21 mars 2016 à 18:55
Bonjour à tous,

J'ai un léger soucis avec ce code :

Sub Copie_liste()

Dim Ligne As Long
Dim Ligne2 As Long

Application.ScreenUpdating = False

Ligne = 19
Ligne2 = Sheets("Liste").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1
lg = Sheets("Liste").Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1

For n = 1 To Ligne2
If Sheets("Liste").Range("A" & n) = Sheets("Calcul").Range("A" & Ligne) Then

lg = n

End If
Next n

Sheets("Calcul").Select
Range("A" & Ligne & ":" & "AG" & Ligne).Select
Selection.Copy
Selection.PasteSpecial xlValues, xlNone, False, False

Sheets("Liste").Select
Range("A" & lg).Select

ActiveSheet.Paste

Application.ScreenUpdating = True
End Sub


La macro effectue bien la copie de la feuille "Calcul" dans la feuille "Liste", et le tri a l'air de fonctionner en cas de références identiques. Le problème est que la ligne que je souhaite copier comporte des formules, et celles-ci disparaissent de la feuille "Calcul" lors de l'exécution de la macro. Je pense que c'est lié au "Selection.PasteSpecial" que j'ai ajouté pour pouvoir uniquement des valeurs dans la feuille "Liste" mais je ne suis pas suffisamment calé pour fixer ce problème...

Merci d'avance de votre aide !

A voir également:

5 réponses

ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
18 mars 2016 à 20:17
Bonjour


Essaies de remplacer
Sheets("Calcul").Select    
Range("A" & Ligne & ":" & "AG" & Ligne).Select
Selection.CopySelection.PasteSpecial xlValues, xlNone, False, False Sheets("Liste").Select
Range("A" & lg).SelectActiveSheet.Paste

par
Sheets("Calcul").Range("A" & Ligne & ":" & "AG" & Ligne).Copy Sheets("Liste").Range("A" & lg)


Cdlmnt
1
hulnh Messages postés 4 Date d'inscription vendredi 18 mars 2016 Statut Membre Dernière intervention 21 mars 2016
18 mars 2016 à 21:24
Merci de ta réponse !

J'ai une erreur sur la deuxième ligne :
Sheets("Liste").Range ("A" & lg)

Un espace s'ajoute après le "Range" et un message apparaît en débogage : Erreur d'exécution '438' : Propriété ou méthode non gérée par cet objet.

De plus, c'est peut être une question de débutant mais : comment se fait le Paste avec cette commande ?
0
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
18 mars 2016 à 21:39
Il n'y a pas deux lignes une seule (tout est sur la même ligne)
Sheets("Liste").Range("A" & lg)
est la cible de la copie

Cdlmnt
1
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
19 mars 2016 à 16:36
Sur deux lignes cette fois

Sheets("Calcul").Range("A" & Ligne & ":" & "AG" & Ligne).Copy
Sheets("Liste").Range("A" & lg).PasteSpecial Paste:=xlPasteValues

Cdlmnt
1
hulnh Messages postés 4 Date d'inscription vendredi 18 mars 2016 Statut Membre Dernière intervention 21 mars 2016
Modifié par hulnh le 18/03/2016 à 22:00
La commande fonctionne bien, je pensais pas pouvoir la réduire autant. Cependant je souhaiterai que les cellules copiées en "Calcul", qui contiennent des formules, soient converties en valeurs dans "Liste". Par exemple :

Copie à faire dans "Calcul" : 1 1 0 0 ( Ce sont des formules NB.SI() )
Collage réalisé dans "Liste" : #REF! #REF! #REF! #REF!

Et j'aimerai récupérer dans "Liste" les valeurs copiées, sans formules : 1 1 0 0

J'espère être compréhensible, c'est beaucoup plus clair dans ma tête que par écrit...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hulnh Messages postés 4 Date d'inscription vendredi 18 mars 2016 Statut Membre Dernière intervention 21 mars 2016
21 mars 2016 à 18:55
Merci beaucoup pour ton aide ccm81 !
0