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
Penses à lire les règles comme qui dirait Zeb. .. et surtout concernant la balise code.
Il me semble que le début est correct, mais il y a qq erreurs de codage.
En VBA (en anglais) il y a peu de chance que tu trouves =somme en général c plutot =SUM, mais il vaut mieux le vérifier.
Par exemple avec la fenetre de déboguage, tu rajoutes dans ton code qqch du genre
Code :
debug.print nn
Tu fais une erreur dans ton parcours. T'as cellule active n'est pas modifiée par ton for ni après donc tu vas pointer toujours sur la meme cellule.
Pour cela Il faut plutot passé par Range. Tu veux travailler sur l'ensemble des colonnes ou sur une seule ?
Code :
For i = 1 To dernLigne Step -1
nn = ActiveCell.Formula
next
Ensuite pour remplacer la formule par la valeur il a plus simple et plus rapide.
Code :
.range("A" & i) = .range("A" & i ).value
---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Merci pour ces indications et désolé pour les règles de post.
Pour l'instant, la macro ne fonctionne pas.
Comment puis-je la généraliser pour l'ensemble du classeur (toutes les cellules de toutes les feuilles) ?
Merci par avance.