Yslgb
Nouveau membre
Bonjour,
Je suis débutant sur VBA.
Je cherche à développer une macro Excel permettant de remplacer toutes les cellules d’un classeur contenant une formule précise (ici, somme()) par leur valeur.
La formule doit être remplacée sur l’ensemble des feuilles du classeur.
J’ai trouvé un modèle sur internet que j’ai commencé à personnaliser.
Merci par avance de votre aide.
Sub Keep_data()
'Détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1
'Désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False
'Pour toutes les lignes en partant de la première
For i = 1 To dernLigne Step -1
nn = ActiveCell.Formula
'Donne à la variable nn le contenu de la formule. Si elle n'en contient pas nn prend la valeur null
If Left(nn, 6) <> "=somme" Then GoTo suivant
'Si la formule ne commence pas par =HsGetValue on passe à la valeur suivante de i
If Left(nn, 6) = "=somme" Then Selection.Copy
Selection.PasteSpecial xlValues, xlNone, False, False
'Dans le cas contraire, on remplace le contenu de la cellule par sa valeur
End If
suivant:
Next i
End Sub
Je suis débutant sur VBA.
Je cherche à développer une macro Excel permettant de remplacer toutes les cellules d’un classeur contenant une formule précise (ici, somme()) par leur valeur.
La formule doit être remplacée sur l’ensemble des feuilles du classeur.
J’ai trouvé un modèle sur internet que j’ai commencé à personnaliser.
Merci par avance de votre aide.
Sub Keep_data()
'Détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1
'Désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False
'Pour toutes les lignes en partant de la première
For i = 1 To dernLigne Step -1
nn = ActiveCell.Formula
'Donne à la variable nn le contenu de la formule. Si elle n'en contient pas nn prend la valeur null
If Left(nn, 6) <> "=somme" Then GoTo suivant
'Si la formule ne commence pas par =HsGetValue on passe à la valeur suivante de i
If Left(nn, 6) = "=somme" Then Selection.Copy
Selection.PasteSpecial xlValues, xlNone, False, False
'Dans le cas contraire, on remplace le contenu de la cellule par sa valeur
End If
suivant:
Next i
End Sub