Copier coller sans les cellules vides (contenant des formules)-VBA

Bonjour

Avec le code ci-dessous, j essaie de <copie/ coller valeurs> uniquement les cellules qui contiennentt des chiffres

Les cellules en bleus dans mon fichier ci-joint sont des cellules qui contiennent des formules, le code ne doit pas les copier et les mettre en valeurs

quand j execute mon code, il copie l ensemble du tableau et il le mettre en valeurs incluant les cellules bleus contenant des formules et qui sont vides (chose que je ne veux pas)

merci pour votre aide

Private Sub CommandButton1_Click()
Dim WB1 As Workbook
Set WB1 = ActiveWorkbook
'Find the last row with data
With WB1.Sheets("Historical Data")
    LastRow = .Range("b" & .Rows.Count).End(xlUp).Row
End With

WB1.Sheets("Historical Data").Range("b1:E" & LastRow).SpecialCells(xlCellTypeVisible).Copy
WB1.Sheets("Historical Data").Range("b1").PasteSpecial xlPasteValues
End Sub

    End With
End Sub

oups ci-joint mon fichier :) Merci

22test.xlsm (200.04 Ko)

Bonjour,

C'est au collage que tu peux choisir ce que tu souhaite garder. et comme tu précises xlPasteValues bah il supprime les formules.

Mais je ne comprends pas le but de c/c sur la même position, ça m'échappe.

Private Sub CommandButton1_Click()
Dim HD As Worksheet
Set HD = Worksheets("Historical Data")
'Find the last row with data
With HD
LastRow = .Range("b" & .Rows.Count).End(xlUp).Row
    .Range("b1:E" & LastRow).SpecialCells(xlCellTypeVisible).Copy
    .Range("b1").PasteSpecial
    Application.CutCopyMode = False
End With
End Sub

Merci pour la reponse.

En faite le tableau dans mon fichier est lié avec d'autres onglets par des formules recherchev. Ces onglets contiennent seulement une ligne: la date du jour et le taux de change

Donc a chaque fois que mon tableau dans l'onglet "Historical Data" est raffraichi avec le taux de change du jour, je dois mettre la ligne en question en valeur pour qu il ne soit pas #NA lors du prochain rafraichissement

donc mon code doit detecter toutes les cellules non vides et les mettre en valeur tout en gardant les formules dans les cellules vides

pour plus de clareté Ci-joint une 2ieme version de mon fichier

Merci encore

16test2.xlsm (213.67 Ko)

Bonjour vba1, Thrrybo, le forum,

je dois mettre la ligne en question en valeur pour qu il ne soit pas #NA lors du prochain rafraichissement

Si ton souci, c'est de ne pas afficher les #N/A, connais-tu la fonction SIERREUR ?

=SIERREUR(TaFormuleRechercheV;"")

Cordialement,

Bonjour,

Ne sachant pas comment différencier les cellules avec formules qui ont des valeurs et les autres pas, je propose autre chose.

A mettre dans ta feuil8(Historical Data)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Range(Target.Offset(0, -3), Target).Copy
Target.Offset(0, -3).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub

Double-click dans la dernière cellule qui à une valeur, "E41" dans le fichier.

Merci beaucoup pour vos reponses

En faite j ai reussi a faire fonctionner le code en passant par la colonne A qui est un champ <Date>. Toutes les dates inferieures a celle d'aujourd hui, le code doit mettre la ligne au complet en valeur.

Les cellules vides avec des formules reste intactes

Merci encore

Sub Exchange_Rate()

Dim cell As Range
Dim WB1 As Workbook
Set WB1 = ActiveWorkbook
With WB1.Sheets("Historical Data")
today = Date 'Défini la date du jour

For Each cell In Range("a1:a234") 'ballaie la plge mentionnée

    If cell.Value <= today Then
    cell.EntireRow.Copy
    cell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    End If
Next
End With

End Sub
Rechercher des sujets similaires à "copier coller vides contenant formules vba"