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.