Copier-coller des valeurs et non des formules en utilisant VBA

fxbelot

XLDnaute Nouveau
Bonjour,
J'utilise un filtre qui copie des lignes entières en fonction de la valeur d'une colonne. Le problème c'est que ma source de donnée est composée de formules. Donc lorsque je lance le filtre c'est la formule qui est copiée et non la valeur. J'ai essayé de modifier .paste avec .pastespecial... comme j'ai pu voir dans d'autres posts mais ça ne fonctionne pas dans mon cas.

Merci pour votre aide.

Le code:

Sub Filtre_inscrits()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("liste_inscrits").Activate ' feuille de destination

Col = "I" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("data_step1") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With

End Sub
 

Gorfael

XLDnaute Barbatruc
Re : Copier-coller des valeurs et non des formules en utilisant VBA

Salut fxbelot et le forum
Utilises les balises de code (icone# en mode avancé)
Code:
Sub Filtre_inscrits()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("liste_inscrits").Activate ' feuille de destination

Col = "I" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("data_step1") ' feuille source
    NbrLig = .Cells(65536, Col).End(xlUp).Row
    For Lig = 1 To NbrLig
        If .Cells(Lig, Col).Value <> "" Then
            .Cells(Lig, Col).EntireRow.Copy
            Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
        End If
    Next
End With
End Sub
Je n'ai pas testé, ça me semble assez simple.
A+
 

Dranreb

XLDnaute Barbatruc
Re : Copier-coller des valeurs et non des formules en utilisant VBA

Bonjour
Essayer
VB:
If .Cells(Lig, Col).Value <> "" Then
    NumLig = NumLig + 1
    Rows(NumLig).Cells.Value = .Rows(Lig).Cells.Value
Remarque: ".Cells" n''est peut être pas nécessaire devant ".Value"
 

Gael

XLDnaute Barbatruc
Re : Copier-coller des valeurs et non des formules en utilisant VBA

Bonjour Fxbelot, bonjour à tous,

Ca doit fonctionner avec pastespecial. essaye de mettre à la place de Activesheet.paste l'instruction suivante:
Code:
Selection.PasteSpecial Paste:=xlPasteValues
@+

Gael
 

fxbelot

XLDnaute Nouveau
Re : Copier-coller des valeurs et non des formules en utilisant VBA

Merci Barbatruc pour ta réponse rapide.

Ton code marche très bien pour ce qui est de la copie des valeurs d'une cellule. Par contre, il change le fonctionnement de la macro: Si je lance plusieurs fois la macro les lignes copiées vont s'accumuler les unes derrières les autres mais j'aimerais qu'à chaque lancement de la macro les données présentes sur la feuille soit effacées et réactualisées tout en gardant la première ligne de titre qui ne bouge pas comme c'est le cas avec le code que j'ai posté plus haut.

Je suis débutant en VBA je modifie des codes que je trouve sur des forums pour les appliquer à mon classeur mais je ne sais pas coder à proprement parler même si je comprends. Mon classeur contient des données personnelles de personnes qui sont inscrites sur un site web donc je ne peux pas le diffuser sur le forum en l'état.

Merci d'avance
 

fxbelot

XLDnaute Nouveau
Re : Copier-coller des valeurs et non des formules en utilisant VBA

Bonjour Fxbelot, bonjour à tous,

Ca doit fonctionner avec pastespecial. essaye de mettre à la place de Activesheet.paste l'instruction suivante:
Code:
Selection.PasteSpecial Paste:=xlPasteValues
@+

Gael
Merci c'est exactement ce qu'il me fallait!
 

fxbelot

XLDnaute Nouveau
Re : Copier-coller des valeurs et non des formules en utilisant VBA

Merci à tous pour votre aide!
 

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