Problème passage formules en valeur sur lignes masquées (filtrées)

Bonjour à tous,

Je me retrouve face à un soucis d’apparence assez simple que je n'arrive pas à gérer.

Pour automatiser un reporting, j'utilise une macro me permettant de passer toutes mes formules en valeur, cela marche très bien sauf que cette fois ci cela ne marche pas quand j'ai des lignes filtrées (certaines lignes sont donc masquées).

Lorsque je lance mon code, les formules sont bien passées en valeur mais la macro m'ajoute plein de données de façon "aléatoire" sur mes feuilles où il y a des lignes masquées, où plutôt filtrées, j'avoue ne pas comprendre pourquoi. Il n'y a pas de problème lorsque la plage n'est pas filtrée.

Voici mon code

Dim Sh As Worksheet

For Each Sh In Sheets 'partie remplacement des forumles par leur valeur

Sh.Activate

If Sh.Visible = True Then 'si la feuille est visible alors on applique le remplacement (evite de buguer la macro avec les tcd cachés)

With ActiveSheet.UsedRange
    .Value = .Value
    End With

Else ' si feuille pas active on passe à la suivant sans appliquer le remplacement (evite le bug de la macro avec les tcd)

End If
Next Sh

Je joins aussi un fichier avec le code et deux feuilles (identique sauf qu'une comporte des valeurs filtrées, pour voir la différence à l'éxecution du code).

Je reste disponible pour toutes questions.

Un grand merci pour votre futur aide.

Bien cordialement,

Paul

Bonjour,

Petit UP, je viens d'ajouter un fichier exemple au premier message.

Merci bcp.

Paul

Bonjour,

Rajoute cette ligne juste avant With activesheet.usedrange

If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

Cordialement

Bonjour Dan,

Merci beaucoup pour ton retour.

Le code fonctionne bien mais je souhaiterais (de façon à ne pas de taches manuelles) que les filtres restent en place à l’exécution de la macro.

Cordialement,

Paul

Re

Essayez comme ceci :

Sub Formuleenvaleur()
Dim Sh As Worksheet
Dim derlig As Integer

For Each Sh In Sheets
    With Sh
        If .Visible = True Then
            derlig = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
            For i = 5 To derlig
                If Rows(i).Hidden = False Then .Range("A" & i & ":D" & i).Value = .Range("A" & i & ":D" & i).Value
            Next i
        End If
    End With
Next Sh

End Sub

Cordialement

Merci bcp Dan !! ça fonctionne parfaitement.

Très bonne journée.

Cordialement,

Paul

Rechercher des sujets similaires à "probleme passage formules valeur lignes masquees filtrees"