Convertir des formules d’une plage donnée en valeurs

Vous souhaiterez peut-être utiliser des formules dans le classeur sélectionné, mais elles ne doivent pas nécessairement fonctionner dans d’autres versions de ce fichier. Dans ce cas, il peut être utile de convertir toutes les formules d’une plage donnée en valeurs.
Comment ca marche?
La macro utilise deux variables Object du type Range. L’un d’entre eux stocke la plage de données avec laquelle nous travaillons, tandis que l’autre stocke les données de cellules individuelles pendant l’opération de boucle. Ensuite, en utilisant l’instruction For … Each, toutes les cellules de la plage donnée sont activées tour à tour. Chaque fois que la cellule est active, nous vérifions qu’elle ne contient pas de formule. S’il contient, la formule est remplacée par la valeur visible dans la cellule.

Sub ConvertirFormulesEnValeurs()
'Étape 1: Déclarez les variables
Dim MaPlage As Range
Dim MesCellules As Range
'Étape 2: enregistrer la feuille de calcul avant d'apporter des modifications aux cellules?
Select Case MsgBox("L'action ne peut pas être annulée. Voulez-vous d'abord enregistrer la feuille de calcul?", vbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
'Étape 3: Spécification de la plage cible
Set MaPlage = Selection
'Étape 4: Démarrage d'une boucle pour la plage
For Each MesCellules In MesPlages
'Étape 5: S'il y a une formule dans la cellule, définissez l'affichage du contenu
If MesCellules.HasFormula Then
MesCellules.Formula = MesCellules.Value
End If
'Étape 6: passez à la cellule suivante de la plage
Next MesCellules
End Sub

 


1. Dans la première étape, deux variables d’objet Range ont été déclarrées, appelé MaPlage, dans lequel l’adresse de toute la plage sera stockée, et le second appelé MesCellules, utilisé pour stocker les données de cellules calculées successivement dans une plage donnée.
2. Lorsque la macro est exécutée, la pile d’annulation sera effacée et vous ne pourrez pas annuler les actions entreprises par la macro. Parce qu’il y a un changement dans les données, vous souhaiterez peut-être enregistrer le classeur avant d’exécuter la macro. C’est ce qui se passe à l’étape deux.
Une boîte de message est invoquée avec des options pour enregistrer le classeur. Il propose trois options: Oui, Non et Annuler. Cliquez sur le bouton Oui pour enregistrer le classeur et poursuivre la macro. Cliquez sur le bouton Annuler pour mettre fin à la macro. D’un autre côté, cliquer sur le bouton Non lancera la macro sans d’abord enregistrer le classeur.
3. À l’étape trois, la plage cible de cellules est transmise à la variable MaPlage. Dans cet exemple, la plage est déjà sélectionnée dans la feuille de calcul. Bien entendu, la variable MaPlage peut facilement être définie sur une plage spécifique, par exemple Range (“A1: Z100”). De même, lorsqu’une plage a un nom, vous pouvez simplement le saisir: Range (“nomdeplage”).
4. Dans cette étape, une boucle est lancée, qui activera tour à tour chaque cellule dans la plage spécifiée.
5. Lorsque la cellule est activée, la macro détermine si la cellule contient la formule basée sur la propriété HasFormula. Si tel est le cas, le contenu de la cellule est modifié à sa valeur. Cela remplacera la formule par la valeur définie.
6. À l’étape six, la boucle passe à la cellule suivante. Après avoir activé toutes les cellules du champ macro, il se ferme.
Comment appliquer une macro?
Pour implémenter cette macro, vous pouvez copier et coller son code dans le module standard.
À cette fin:
1. Utilisez la combinaison de touches Alt + F11 pour activer Visual Basic Editor.
2. Dans la fenêtre Projet, cliquez avec le bouton droit sur le nom du projet ou de la feuille.
3. Sélectionnez Insérer / Module.
4. Saisissez ou collez le code.

S’abonner
Notifier de
0 Commentaires
le plus ancien
le plus récent le plus populaire
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x