Modification formules feuille source lors d'un copier/coller

hulnh Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
hulnh Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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   Statut Membre Dernière intervention  
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Merci beaucoup pour ton aide ccm81 !
0